mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-25 02:27:43 +01:00
parent
42827d95b9
commit
4f39481549
@ -49,35 +49,40 @@ public class JSONMemoryStorageShim implements JSONStorage {
|
|||||||
@Override
|
@Override
|
||||||
public StoredJSON storeJson(String identifier, String json, long timestamp) {
|
public StoredJSON storeJson(String identifier, String json, long timestamp) {
|
||||||
StoredJSON storedJSON = underlyingStorage.storeJson(identifier, json, timestamp);
|
StoredJSON storedJSON = underlyingStorage.storeJson(identifier, json, timestamp);
|
||||||
cache.put(new TimestampedIdentifier(identifier, timestamp), storedJSON);
|
getCache().put(new TimestampedIdentifier(identifier, timestamp), storedJSON);
|
||||||
return storedJSON;
|
return storedJSON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Cache<TimestampedIdentifier, StoredJSON> getCache() {
|
||||||
|
if (cache == null) enable();
|
||||||
|
return cache;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<StoredJSON> fetchJSON(String identifier) {
|
public Optional<StoredJSON> fetchJSON(String identifier) {
|
||||||
for (Map.Entry<TimestampedIdentifier, StoredJSON> entry : cache.asMap().entrySet()) {
|
for (Map.Entry<TimestampedIdentifier, StoredJSON> entry : getCache().asMap().entrySet()) {
|
||||||
if (entry.getKey().identifier.equalsIgnoreCase(identifier)) {
|
if (entry.getKey().identifier.equalsIgnoreCase(identifier)) {
|
||||||
return Optional.of(entry.getValue());
|
return Optional.of(entry.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Optional<StoredJSON> found = underlyingStorage.fetchJSON(identifier);
|
Optional<StoredJSON> found = underlyingStorage.fetchJSON(identifier);
|
||||||
found.ifPresent(storedJSON -> cache.put(new TimestampedIdentifier(identifier, storedJSON.timestamp), storedJSON));
|
found.ifPresent(storedJSON -> getCache().put(new TimestampedIdentifier(identifier, storedJSON.timestamp), storedJSON));
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<StoredJSON> fetchExactJson(String identifier, long timestamp) {
|
public Optional<StoredJSON> fetchExactJson(String identifier, long timestamp) {
|
||||||
StoredJSON cached = cache.getIfPresent(new TimestampedIdentifier(identifier, timestamp));
|
StoredJSON cached = getCache().getIfPresent(new TimestampedIdentifier(identifier, timestamp));
|
||||||
if (cached != null) return Optional.of(cached);
|
if (cached != null) return Optional.of(cached);
|
||||||
|
|
||||||
Optional<StoredJSON> found = underlyingStorage.fetchExactJson(identifier, timestamp);
|
Optional<StoredJSON> found = underlyingStorage.fetchExactJson(identifier, timestamp);
|
||||||
found.ifPresent(storedJSON -> cache.put(new TimestampedIdentifier(identifier, timestamp), storedJSON));
|
found.ifPresent(storedJSON -> getCache().put(new TimestampedIdentifier(identifier, timestamp), storedJSON));
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<StoredJSON> fetchJsonMadeBefore(String identifier, long timestamp) {
|
public Optional<StoredJSON> fetchJsonMadeBefore(String identifier, long timestamp) {
|
||||||
for (Map.Entry<TimestampedIdentifier, StoredJSON> entry : cache.asMap().entrySet()) {
|
for (Map.Entry<TimestampedIdentifier, StoredJSON> entry : getCache().asMap().entrySet()) {
|
||||||
TimestampedIdentifier key = entry.getKey();
|
TimestampedIdentifier key = entry.getKey();
|
||||||
if (key.timestamp < timestamp && key.identifier.equalsIgnoreCase(identifier)) {
|
if (key.timestamp < timestamp && key.identifier.equalsIgnoreCase(identifier)) {
|
||||||
return Optional.of(entry.getValue());
|
return Optional.of(entry.getValue());
|
||||||
@ -85,32 +90,32 @@ public class JSONMemoryStorageShim implements JSONStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Optional<StoredJSON> found = underlyingStorage.fetchJsonMadeBefore(identifier, timestamp);
|
Optional<StoredJSON> found = underlyingStorage.fetchJsonMadeBefore(identifier, timestamp);
|
||||||
found.ifPresent(storedJSON -> cache.put(new TimestampedIdentifier(identifier, storedJSON.timestamp), storedJSON));
|
found.ifPresent(storedJSON -> getCache().put(new TimestampedIdentifier(identifier, storedJSON.timestamp), storedJSON));
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<StoredJSON> fetchJsonMadeAfter(String identifier, long timestamp) {
|
public Optional<StoredJSON> fetchJsonMadeAfter(String identifier, long timestamp) {
|
||||||
for (Map.Entry<TimestampedIdentifier, StoredJSON> entry : cache.asMap().entrySet()) {
|
for (Map.Entry<TimestampedIdentifier, StoredJSON> entry : getCache().asMap().entrySet()) {
|
||||||
TimestampedIdentifier key = entry.getKey();
|
TimestampedIdentifier key = entry.getKey();
|
||||||
if (key.timestamp > timestamp && key.identifier.equalsIgnoreCase(identifier)) {
|
if (key.timestamp > timestamp && key.identifier.equalsIgnoreCase(identifier)) {
|
||||||
return Optional.of(entry.getValue());
|
return Optional.of(entry.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Optional<StoredJSON> found = underlyingStorage.fetchJsonMadeAfter(identifier, timestamp);
|
Optional<StoredJSON> found = underlyingStorage.fetchJsonMadeAfter(identifier, timestamp);
|
||||||
found.ifPresent(storedJSON -> cache.put(new TimestampedIdentifier(identifier, storedJSON.timestamp), storedJSON));
|
found.ifPresent(storedJSON -> getCache().put(new TimestampedIdentifier(identifier, storedJSON.timestamp), storedJSON));
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void invalidateOlder(String identifier, long timestamp) {
|
public void invalidateOlder(String identifier, long timestamp) {
|
||||||
Set<TimestampedIdentifier> toInvalidate = new HashSet<>();
|
Set<TimestampedIdentifier> toInvalidate = new HashSet<>();
|
||||||
for (TimestampedIdentifier key : cache.asMap().keySet()) {
|
for (TimestampedIdentifier key : getCache().asMap().keySet()) {
|
||||||
if (key.timestamp < timestamp && key.identifier.equalsIgnoreCase(identifier)) {
|
if (key.timestamp < timestamp && key.identifier.equalsIgnoreCase(identifier)) {
|
||||||
toInvalidate.add(key);
|
toInvalidate.add(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
toInvalidate.forEach(cache::invalidate);
|
toInvalidate.forEach(getCache()::invalidate);
|
||||||
|
|
||||||
underlyingStorage.invalidateOlder(identifier, timestamp);
|
underlyingStorage.invalidateOlder(identifier, timestamp);
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ public class WebserverSettings {
|
|||||||
public static final Setting<Long> REDUCED_REFRESH_BARRIER = new TimeSetting("Webserver.Cache.Reduced_refresh_barrier");
|
public static final Setting<Long> REDUCED_REFRESH_BARRIER = new TimeSetting("Webserver.Cache.Reduced_refresh_barrier");
|
||||||
public static final Setting<Long> INVALIDATE_QUERY_RESULTS = new TimeSetting("Webserver.Cache.Invalidate_query_results_on_disk_after");
|
public static final Setting<Long> INVALIDATE_QUERY_RESULTS = new TimeSetting("Webserver.Cache.Invalidate_query_results_on_disk_after");
|
||||||
public static final Setting<Long> INVALIDATE_DISK_CACHE = new TimeSetting("Webserver.Cache.Invalidate_disk_cache_after");
|
public static final Setting<Long> INVALIDATE_DISK_CACHE = new TimeSetting("Webserver.Cache.Invalidate_disk_cache_after");
|
||||||
public static final Setting<Long> INVALIDATE_MEMORY_CACHE = new TimeSetting("Webserver.Cache.Invalidate_memory_cache_after");
|
public static final Setting<Long> INVALIDATE_MEMORY_CACHE = new TimeSetting("Webserver.Cache.Invalidate_memory_cache_after", TimeUnit.MINUTES.toMillis(5L));
|
||||||
public static final Setting<Long> COOKIES_EXPIRE_AFTER = new TimeSetting("Webserver.Security.Cookies_expire_after", TimeUnit.HOURS.toMillis(2L));
|
public static final Setting<Long> COOKIES_EXPIRE_AFTER = new TimeSetting("Webserver.Security.Cookies_expire_after", TimeUnit.HOURS.toMillis(2L));
|
||||||
|
|
||||||
private WebserverSettings() {
|
private WebserverSettings() {
|
||||||
|
Loading…
Reference in New Issue
Block a user