Browse Source

Revert "Synchronize arbitrary data list removals, as it seems that SynchronizedList and SynchronizedMap aren't overriding removeIf() with a thread-safe version."

This reverts commit e5f88fe2f4.
pull/75/head
CalDescent 3 years ago
parent
commit
c65de74d13
  1. 4
      src/main/java/org/qortal/controller/arbitrary/ArbitraryDataBuildManager.java
  2. 2
      src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileListManager.java
  3. 10
      src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java
  4. 2
      src/main/java/org/qortal/controller/arbitrary/ArbitraryDataRenderManager.java
  5. 2
      src/main/java/org/qortal/controller/arbitrary/ArbitraryMetadataManager.java

4
src/main/java/org/qortal/controller/arbitrary/ArbitraryDataBuildManager.java

@ -75,13 +75,9 @@ public class ArbitraryDataBuildManager extends Thread {
if (now == null) { if (now == null) {
return; return;
} }
synchronized (arbitraryDataBuildQueue) {
arbitraryDataBuildQueue.entrySet().removeIf(entry -> entry.getValue().hasReachedBuildTimeout(now)); arbitraryDataBuildQueue.entrySet().removeIf(entry -> entry.getValue().hasReachedBuildTimeout(now));
}
synchronized (arbitraryDataFailedBuilds) {
arbitraryDataFailedBuilds.entrySet().removeIf(entry -> entry.getValue().hasReachedFailureTimeout(now)); arbitraryDataFailedBuilds.entrySet().removeIf(entry -> entry.getValue().hasReachedFailureTimeout(now));
} }
}
// Build queue // Build queue

2
src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileListManager.java

@ -84,10 +84,8 @@ public class ArbitraryDataFileListManager {
return; return;
} }
final long requestMinimumTimestamp = now - ArbitraryDataManager.ARBITRARY_REQUEST_TIMEOUT; final long requestMinimumTimestamp = now - ArbitraryDataManager.ARBITRARY_REQUEST_TIMEOUT;
synchronized (arbitraryDataFileListRequests) {
arbitraryDataFileListRequests.entrySet().removeIf(entry -> entry.getValue().getC() == null || entry.getValue().getC() < requestMinimumTimestamp); arbitraryDataFileListRequests.entrySet().removeIf(entry -> entry.getValue().getC() == null || entry.getValue().getC() < requestMinimumTimestamp);
} }
}
// Track file list lookups by signature // Track file list lookups by signature

10
src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java

@ -101,23 +101,15 @@ public class ArbitraryDataFileManager extends Thread {
return; return;
} }
final long requestMinimumTimestamp = now - ArbitraryDataManager.getInstance().ARBITRARY_REQUEST_TIMEOUT; final long requestMinimumTimestamp = now - ArbitraryDataManager.getInstance().ARBITRARY_REQUEST_TIMEOUT;
synchronized (arbitraryDataFileRequests) {
arbitraryDataFileRequests.entrySet().removeIf(entry -> entry.getValue() == null || entry.getValue() < requestMinimumTimestamp); arbitraryDataFileRequests.entrySet().removeIf(entry -> entry.getValue() == null || entry.getValue() < requestMinimumTimestamp);
}
final long relayMinimumTimestamp = now - ArbitraryDataManager.getInstance().ARBITRARY_RELAY_TIMEOUT; final long relayMinimumTimestamp = now - ArbitraryDataManager.getInstance().ARBITRARY_RELAY_TIMEOUT;
synchronized (arbitraryRelayMap) {
arbitraryRelayMap.removeIf(entry -> entry == null || entry.getTimestamp() == null || entry.getTimestamp() < relayMinimumTimestamp); arbitraryRelayMap.removeIf(entry -> entry == null || entry.getTimestamp() == null || entry.getTimestamp() < relayMinimumTimestamp);
}
synchronized (arbitraryDataFileHashResponses) {
arbitraryDataFileHashResponses.removeIf(entry -> entry.getTimestamp() < relayMinimumTimestamp); arbitraryDataFileHashResponses.removeIf(entry -> entry.getTimestamp() < relayMinimumTimestamp);
}
final long directConnectionInfoMinimumTimestamp = now - ArbitraryDataManager.getInstance().ARBITRARY_DIRECT_CONNECTION_INFO_TIMEOUT; final long directConnectionInfoMinimumTimestamp = now - ArbitraryDataManager.getInstance().ARBITRARY_DIRECT_CONNECTION_INFO_TIMEOUT;
synchronized (directConnectionInfo) {
directConnectionInfo.removeIf(entry -> entry.getTimestamp() < directConnectionInfoMinimumTimestamp); directConnectionInfo.removeIf(entry -> entry.getTimestamp() < directConnectionInfoMinimumTimestamp);
} }
}
@ -492,10 +484,8 @@ public class ArbitraryDataFileManager extends Thread {
} }
private void removeFromRelayMap(ArbitraryRelayInfo entry) { private void removeFromRelayMap(ArbitraryRelayInfo entry) {
synchronized (arbitraryRelayMap) {
arbitraryRelayMap.removeIf(relayInfo -> relayInfo.equals(entry)); arbitraryRelayMap.removeIf(relayInfo -> relayInfo.equals(entry));
} }
}
// Network handlers // Network handlers

2
src/main/java/org/qortal/controller/arbitrary/ArbitraryDataRenderManager.java

@ -56,10 +56,8 @@ public class ArbitraryDataRenderManager extends Thread {
return; return;
} }
final long minimumTimestamp = now - AUTHORIZATION_TIMEOUT; final long minimumTimestamp = now - AUTHORIZATION_TIMEOUT;
synchronized (this.authorizedResources) {
this.authorizedResources.entrySet().removeIf(entry -> entry.getValue() == null || entry.getValue() < minimumTimestamp); this.authorizedResources.entrySet().removeIf(entry -> entry.getValue() == null || entry.getValue() < minimumTimestamp);
} }
}
public boolean isAuthorized(ArbitraryDataResource resource) { public boolean isAuthorized(ArbitraryDataResource resource) {
ArbitraryDataResource broadResource = new ArbitraryDataResource(resource.getResourceId(), null, null, null); ArbitraryDataResource broadResource = new ArbitraryDataResource(resource.getResourceId(), null, null, null);

2
src/main/java/org/qortal/controller/arbitrary/ArbitraryMetadataManager.java

@ -73,10 +73,8 @@ public class ArbitraryMetadataManager {
return; return;
} }
final long requestMinimumTimestamp = now - ArbitraryDataManager.ARBITRARY_REQUEST_TIMEOUT; final long requestMinimumTimestamp = now - ArbitraryDataManager.ARBITRARY_REQUEST_TIMEOUT;
synchronized (arbitraryMetadataRequests) {
arbitraryMetadataRequests.entrySet().removeIf(entry -> entry.getValue().getC() == null || entry.getValue().getC() < requestMinimumTimestamp); arbitraryMetadataRequests.entrySet().removeIf(entry -> entry.getValue().getC() == null || entry.getValue().getC() < requestMinimumTimestamp);
} }
}
public ArbitraryDataTransactionMetadata fetchMetadata(ArbitraryDataResource arbitraryDataResource, boolean useRateLimiter) { public ArbitraryDataTransactionMetadata fetchMetadata(ArbitraryDataResource arbitraryDataResource, boolean useRateLimiter) {

Loading…
Cancel
Save