import org.simantics.db.Database.Session.ClusterChanges;
import org.simantics.db.DevelopmentKeys;
import org.simantics.db.SessionVariables;
-import org.simantics.db.common.utils.Logger;
import org.simantics.db.exception.ClusterDoesNotExistException;
import org.simantics.db.exception.DatabaseException;
import org.simantics.db.exception.ResourceNotFoundException;
import org.simantics.db.service.ClusterCollectorPolicy.CollectorCluster;
import org.simantics.db.service.ClusterUID;
import org.simantics.utils.Development;
+import org.slf4j.LoggerFactory;
import fi.vtt.simantics.procore.DebugPolicy;
import fi.vtt.simantics.procore.internal.ClusterControlImpl.ClusterStateImpl;
public final class ClusterTable implements IClusterTable {
+ private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(ClusterTable.class);
+
private static final boolean VALIDATE_SIZE = false;
int maximumBytes = 128 * 1024 * 1024;
ClusterImpl cluster = ClusterImpl.make(clusterUID, clusterKey, sessionImpl.clusterTranslator);
clusters.create(cluster);
if (!cluster.isLoaded())
- Logger.defaultLogError(new Exception("Bug in ClusterTable.makeCluster(long, boolean), cluster not loaded"));
+ LOGGER.error("", new Exception("Bug in ClusterTable.makeCluster(long, boolean), cluster not loaded"));
importanceMap.put(cluster.getImportance(), new ImportanceEntry(cluster));
if (VALIDATE_SIZE)
validateSize("makeCluster");
clusters.replace((ClusterImpl)cluster);
if (!cluster.isLoaded())
- Logger.defaultLogError(new Exception("Bug in ClusterTable.replaceCluster(ClusterI), cluster not loaded"));
+ LOGGER.error("", new Exception("Bug in ClusterTable.replaceCluster(ClusterI), cluster not loaded"));
importanceMap.put(cluster.getImportance(), new ImportanceEntry((ClusterImpl)cluster));
if(collectorPolicy != null) collectorPolicy.added((ClusterImpl)cluster);
result += cluster.getCachedSize();
}
} catch (Throwable t) {
- Logger.defaultLogError(t);
+ LOGGER.error("Could not calculate size", t);
}
}
return true;
ArrayList<CollectorCluster> toRelease = new ArrayList<CollectorCluster>();
for (CollectorCluster cluster : support.getResidentClusters()) {
- target -= support.getClusterSize(cluster);
- if (target > 0) {
- toRelease.add(cluster);
- } else {
+ toRelease.add(cluster);
+ long clusterSize = support.getClusterSize(cluster);
+ //System.err.println("release cluster with " + (clusterSize/1024) + " kiB - " + cluster);
+ target -= clusterSize;
+ if (target <= 0) {
break;
}
}
final long getClusterIdByResourceKeyNoThrow(final int resourceKey) {
int clusterKey = ClusterTraitsBase.getClusterKeyFromResourceKeyNoThrow(resourceKey);
if (ClusterTraitsBase.isVirtualClusterKey(clusterKey)) {
- Logger.defaultLogError("Tried to get a persistent cluster for a virtual resource. key=" + resourceKey);
+ LOGGER.error("Tried to get a persistent cluster for a virtual resource. key=" + resourceKey);
return 0;
}
ClusterI c = clusterArray[clusterKey];
if (c == null) {
- Logger.defaultLogError("No cluster for key " + resourceKey);
+ LOGGER.error("No cluster for key " + resourceKey);
return 0;
}
return c.getClusterId();
collectorPolicy.removed(oldCluster);
clusters.replace(newCluster);
if (!newCluster.isLoaded())
- Logger.defaultLogError(new Exception("Bug in ClusterTable.refresh, cluster not loaded"));
+ LOGGER.error("", new Exception("Bug in ClusterTable.refresh, cluster not loaded"));
importanceMap.put(newCluster.getImportance(), new ImportanceEntry(newCluster));
if (collectorPolicy != null)
collectorPolicy.added(newCluster);
// Now we have fetched the new cluster but to emulate effects of the changes in it we fetch the cluster changes from server.
refreshCluster(csid, session, oldCluster, clusterUID[i], newCluster.clusterId, clusterKey);
} catch (Throwable t) {
- Logger.defaultLogError("Failed to load cluster in refresh.", t);
+ LOGGER.error("Failed to load cluster in refresh.", t);
}
}
if (VALIDATE_SIZE)
th = new TaskHelper("Refresh");
session.writeState = new WriteState<Object>(writer, th.writeTraits, th.sema, th.proc);
try {
- session.getQueryProvider2().performDirtyUpdates(writer);
+ session.getQueryProvider2().propagateChangesInQueryCache(writer);
session.fireMetadataListeners(writer, cs);
- session.getQueryProvider2().performScheduledUpdates(writer);
+ session.getQueryProvider2().listening.fireListeners(writer);
session.fireReactionsToSynchronize(cs);
session.fireSessionVariableChange(SessionVariables.QUEUED_WRITES);
session.printDiagnostics();
try {
cc = session.graphSession.getClusterChanges(clusterUID, csid);
} catch (Exception e) {
- Logger.defaultLogError("Could not get cluster changes. cluster=" + clusterUID, e);
+ LOGGER.error("Could not get cluster changes. cluster=" + clusterUID, e);
release(clusterId);
return;
}
// System.err.println("refreshImportance " + c.getClusterId() + " => " + newImportance);
c.setImportance(newImportance);
if (!c.isLoaded())
- Logger.defaultLogError(new Exception("Bug in ClusterTable.refreshImportance(ClusterImpl), cluster not loaded"));
+ LOGGER.error("", new Exception("Bug in ClusterTable.refreshImportance(ClusterImpl), cluster not loaded"));
importanceMap.put(c.getImportance(), new ImportanceEntry(c));
if(collectorPolicy != null) collectorPolicy.added(c);
cluster = load2(cs.getClusterId(), cs.getClusterKey());
}
} catch (DatabaseException e) {
- Logger.defaultLogError(e);
+ LOGGER.error("Could not load cluster", e);
if (DebugPolicy.REPORT_CLUSTER_EVENTS)
e.printStackTrace();
String msg = "Failed to load cluster " + cs.getClusterUID();// + " resourceId=" + (((cs.getClusterId() << 16 + (resourceKey & 65535))));
return (T) c;
}
if (!(c instanceof ClusterSmall)) {
- Logger.defaultLogError("Proxy must be instance of ClusterSmall");
+ LOGGER.error("Proxy must be instance of ClusterSmall");
return null;
}
return ensureLoaded((T)c);
return (T) c;
}
if (!(c instanceof ClusterSmall)) {
- Logger.defaultLogError("Proxy must be instance of ClusterSmall");
+ LOGGER.error("Proxy must be instance of ClusterSmall");
return null;
}
ClusterI cluster;
int resourceIndex = resourceKey & ClusterTraitsBase.getResourceIndexFromResourceKeyNoThrow(resourceKey);
long resourceId = ClusterTraitsBase.createResourceIdNoThrow(cs.getClusterId(), resourceIndex);
String msg = "Failed to load cluster " + cs.getClusterUID() + " for resource key " + resourceKey + " resourceIndex=" + resourceIndex + " resourceId=" + resourceId;
- Logger.defaultLogError(msg, e);
+ LOGGER.error(msg, e);
c.setDeleted(true, null);
return (T)c;
}
try {
s.acquire();
} catch (InterruptedException e) {
- Logger.defaultLogError(e);
+ LOGGER.error("unable to acquire", e);
}
if (null != ex[0])
throw ex[0];
} catch (Throwable t) {
// It's totally legal to call for non-existing cluster.
// Sometimes this indicates an error, though.
- Logger.getDefault().logInfo("Load cluster failed.", t);
+ LOGGER.error("Load cluster failed", t);
if (t instanceof DatabaseException)
e = (DatabaseException) t;
else