diff --git a/src/main/java/org/gcube/application/geoportal/service/engine/providers/AbstractScopedMap.java b/src/main/java/org/gcube/application/geoportal/service/engine/providers/AbstractScopedMap.java index 87a2065..01151bb 100644 --- a/src/main/java/org/gcube/application/geoportal/service/engine/providers/AbstractScopedMap.java +++ b/src/main/java/org/gcube/application/geoportal/service/engine/providers/AbstractScopedMap.java @@ -28,16 +28,21 @@ public abstract class AbstractScopedMap implements Engine{ public T getObject() throws ConfigurationException { String currentScope=ContextUtils.getCurrentScope(); log.debug(name+" : obtaining object for context "+currentScope); - scopeMap.putIfAbsent(currentScope, new TTLObject(LocalDateTime.now(),retrieveObject())); + TTLObject found=scopeMap.get(currentScope); - + + if(found== null){ + log.debug(name+" : init object for context "+currentScope); + return scopeMap.put(currentScope, new TTLObject(LocalDateTime.now(),retrieveObject())).getTheObject(); + } + if(TTL!=null) { if(!found.getCreationTime().plus(TTL).isBefore(LocalDateTime.now())) { log.debug(name+" : elapsed TTL, disposing.."); dispose(found.getTheObject()); found=scopeMap.put(currentScope, new TTLObject(LocalDateTime.now(),retrieveObject())); } - } + }else {log.debug(name+" : TTL is null, never disposing..");} return found.getTheObject(); } diff --git a/src/main/java/org/gcube/application/geoportal/service/engine/providers/MongoClientProvider.java b/src/main/java/org/gcube/application/geoportal/service/engine/providers/MongoClientProvider.java index 11f1dc7..a8d15d5 100644 --- a/src/main/java/org/gcube/application/geoportal/service/engine/providers/MongoClientProvider.java +++ b/src/main/java/org/gcube/application/geoportal/service/engine/providers/MongoClientProvider.java @@ -8,13 +8,14 @@ import lombok.extern.slf4j.Slf4j; import org.gcube.application.geoportal.service.engine.ImplementationProvider; import org.gcube.application.geoportal.service.model.internal.db.MongoConnection; import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException; + @Slf4j public class MongoClientProvider extends AbstractScopedMap{ public MongoClientProvider() { super("MongoClient cache"); -// setTTL(Duration.of(10,ChronoUnit.MINUTES)); +// setTTL(Duration.of(10, ChronoUnit.MINUTES)); } @Override