import org.simantics.db.procedure.AsyncContextMultiProcedure;
import org.simantics.db.procedure.AsyncMultiProcedure;
import org.simantics.db.request.ExternalRead;
+import org.simantics.db.request.Read;
import org.simantics.db.service.QueryControl;
import org.simantics.utils.DataContainer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class QueryControlImpl implements QueryControl {
-
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(QueryControlImpl.class);
+
final private SessionImplSocket session;
QueryControlImpl(SessionImplSocket session) {
});
} catch (DatabaseException e) {
- e.printStackTrace();
+ LOGGER.error("query flush failed", e);
}
return result.get();
}
}
});
} catch (DatabaseException e) {
- e.printStackTrace();
+ LOGGER.error("query gc failed", e);
}
}
ReadGraphImpl impl = (ReadGraphImpl)graph;
return impl.withParent(null, null, false);
}
+
+ @Override
+ public <T> T syncRequestIndependent(ReadGraph graph, Read<T> request) throws DatabaseException {
+ ReadGraphImpl independent = ((ReadGraphImpl)graph).withParent(null, null, false);
+ independent.asyncBarrier.inc();
+ try {
+ return independent.syncRequest(request);
+ } finally {
+ independent.asyncBarrier.dec();
+ }
+ }
@Override
public boolean hasParentRequest(ReadGraph graph) {