X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.procore%2Fsrc%2Ffi%2Fvtt%2Fsimantics%2Fprocore%2Finternal%2FState.java;h=4c6e77b1a94729c0274078ef5318ffcf30a51f36;hb=b402468a5f6a74cce769eedf1d9f9b531b123842;hp=91faa719841a534ba5636a815ff1f137dc069368;hpb=1dd02a0d0e604a82e67f04559e213db76c9ebac5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.procore/src/fi/vtt/simantics/procore/internal/State.java b/bundles/org.simantics.db.procore/src/fi/vtt/simantics/procore/internal/State.java index 91faa7198..4c6e77b1a 100644 --- a/bundles/org.simantics.db.procore/src/fi/vtt/simantics/procore/internal/State.java +++ b/bundles/org.simantics.db.procore/src/fi/vtt/simantics/procore/internal/State.java @@ -194,7 +194,7 @@ class State { void stopReadTransaction() throws DatabaseException { lock.lock(); try { - assert (!queryProvider.hasScheduledUpdates()); + assert (!queryProvider.listening.hasScheduledUpdates()); assert (readCount == 1); session.writeSupport.gc(); transactionToken.stopReadTransaction(); @@ -287,16 +287,19 @@ class State { try { final boolean undo = false; if (!context.isOk(undo)) // this is a blocking operation - throw new InternalException("Cancel failed. This should never happen. Contact application support."); + throw new InternalException("Cancel failed. This should never happen."); // System.out.println("session cs: " + session.clientChanges); // System.out.println("reverse cs: " + cs); - queryProvider.performDirtyUpdates(graph); - queryProvider.performScheduledUpdates(graph); + queryProvider.propagateChangesInQueryCache(graph); + queryProvider.listening.fireListeners(graph); } catch (DatabaseException e) { Logger.defaultLogError(e); } // This will send and accept the reverse change set. transactionToken.cancelEnd(session.writeSupport, null, session.clusterStream); + } else { + queryProvider.propagateChangesInQueryCache(graph); + queryProvider.listening.fireListeners(graph); } } session.writeSupport.clearMetadata(); @@ -336,15 +339,16 @@ class State { // start = System.nanoTime(); - queryProvider.performScheduledUpdates(graph); + queryProvider.propagateChangesInQueryCache(graph); + queryProvider.listening.fireListeners(graph); // duration = System.nanoTime() - start; // System.out.println("performScheduledUpdates " + 1e-9*duration + "s. "); // Process updates as long as pending primitives exist while (session.dirtyPrimitives) { session.dirtyPrimitives = false; - queryProvider.performDirtyUpdates(graph); - queryProvider.performScheduledUpdates(graph); + queryProvider.propagateChangesInQueryCache(graph); + queryProvider.listening.fireListeners(graph); } if (!writeOnly) // TODO: fix me! FIX ME! Please fix me! Please!