X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Futil%2FSessionGarbageCollection.java;h=c48ec36309e601cf885f9b8125f16f7e79c579f8;hp=26e049db67d5d95c87e47e56d81b9ad843ac4572;hb=892b7bb9be2147b5fe10036a75e798d184705339;hpb=44984b07d8a3827c0feee4ef3bc9e953e7b4607c diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/SessionGarbageCollection.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/SessionGarbageCollection.java index 26e049db6..c48ec3630 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/SessionGarbageCollection.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/SessionGarbageCollection.java @@ -25,7 +25,6 @@ import org.simantics.db.service.ClusterControl; import org.simantics.db.service.LifecycleSupport; import org.simantics.db.service.QueryControl; import org.simantics.utils.DataContainer; -import org.simantics.utils.datastructures.Callback; /** * @author Tuukka Lehtonen @@ -77,7 +76,18 @@ public class SessionGarbageCollection { QueryControl qc = graph.getService(QueryControl.class); ClusterControl cc = graph.getService(ClusterControl.class); _monitor.beginTask("Collect clusters", IProgressMonitor.UNKNOWN); - cc.gc(graph, clusterTarget); + //cc.gc(graph, clusterTarget); + if(clusterTarget == -1) { + int used = cc.used(); + //System.err.println("session gc, cluster use = " + used); + int baseline = 32*(1<<20); + if(used > baseline) { + int dynamicTarget = (int)(0.95 * (used-baseline)) + baseline; + cc.gc(graph, dynamicTarget); + } + } else { + cc.gc(graph, clusterTarget); + } _monitor.beginTask("Collect queries", IProgressMonitor.UNKNOWN); qc.gc(graph, allowedTimeInMs); } @@ -132,15 +142,12 @@ public class SessionGarbageCollection { Logger.defaultLogError(e); } } else { - session.asyncRequest(request, new Callback() { - @Override - public void run(DatabaseException e) { - if (e != null) { - if (errorCallback != null) - errorCallback.accept(e); - else - Logger.defaultLogError(e); - } + session.asyncRequest(request, e -> { + if (e != null) { + if (errorCallback != null) + errorCallback.accept(e); + else + Logger.defaultLogError(e); } }); }