From: Antti Villberg Date: Tue, 20 Dec 2016 05:07:06 +0000 (+0200) Subject: Re-enabled Acorn transaction cancellation support for testing X-Git-Tag: v1.26.0~15^2 X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=commitdiff_plain;h=e2d6d6075edf677dbc4565cf053b06fea4aebc17;p=simantics%2Fplatform.git Re-enabled Acorn transaction cancellation support for testing refs #6887 Change-Id: I844171225284cb7a9d28b6ab5f00c4db88e2afa0 --- diff --git a/bundles/org.simantics.acorn/src/org/simantics/acorn/ClusterManager.java b/bundles/org.simantics.acorn/src/org/simantics/acorn/ClusterManager.java index 51db52efc..b2a30953c 100644 --- a/bundles/org.simantics.acorn/src/org/simantics/acorn/ClusterManager.java +++ b/bundles/org.simantics.acorn/src/org/simantics/acorn/ClusterManager.java @@ -70,7 +70,7 @@ public class ClusterManager { info.acquireMutex(); try { info.makeResident(); - return info.getCSSIds(); + return info.getCCSIds(); } finally { info.releaseMutex(); } diff --git a/bundles/org.simantics.acorn/src/org/simantics/acorn/GraphClientImpl2.java b/bundles/org.simantics.acorn/src/org/simantics/acorn/GraphClientImpl2.java index 05f9c8de0..90af336aa 100644 --- a/bundles/org.simantics.acorn/src/org/simantics/acorn/GraphClientImpl2.java +++ b/bundles/org.simantics.acorn/src/org/simantics/acorn/GraphClientImpl2.java @@ -122,10 +122,10 @@ public class GraphClientImpl2 implements Database.Session { mainProgram.mutex.release(); } } catch (IllegalAcornStateException | ProCoreException e) { - Logger.defaultLogError(e); + Logger.defaultLogError("Snapshotting failed", e); unexpectedClose = true; } catch (InterruptedException e) { - Logger.defaultLogError(e); + Logger.defaultLogError("Snapshotting interrupted", e); } finally { try { if(tr != null) @@ -135,11 +135,11 @@ public class GraphClientImpl2 implements Database.Session { try { support.close(); } catch (DatabaseException e1) { - Logger.defaultLogError(e1); + Logger.defaultLogError("Failed to close database as a safety measure due to failed snapshotting", e1); } } } catch (ProCoreException e) { - Logger.defaultLogError(e); + Logger.defaultLogError("Failed to end snapshotting write transaction", e); } } } @@ -239,18 +239,17 @@ public class GraphClientImpl2 implements Database.Session { @Override public long cancelCommit(long transactionId, long changeSetId, byte[] metadata, OnChangeSetUpdate onChangeSetUpdate) throws ProCoreException { - UnsupportedOperationException e = new UnsupportedOperationException("org.simantics.acorn.GraphClientImpl2.cancelCommit() is not supported operation! Closing down to prevent further havoc"); - clusters.notSafeToMakeSnapshot(new IllegalAcornStateException(e)); - throw e; -// System.err.println("GraphClientImpl2.cancelCommit() called!! this is experimental and might cause havoc!"); -// try { -// undo(new long[] {changeSetId}, onChangeSetUpdate); -// } catch (SDBException e) { -// e.printStackTrace(); -// throw new ProCoreException(e); -// } -// clusters.state.headChangeSetId++; -// return clusters.state.headChangeSetId; + // Accept and finalize current transaction and then undo it + acceptCommit(transactionId, changeSetId, metadata); + + try { + undo(new long[] {changeSetId+1}, onChangeSetUpdate); + clusters.state.headChangeSetId++; + return clusters.state.headChangeSetId; + } catch (SDBException e) { + Logger.defaultLogError("Failed to undo cancelled transaction", e); + throw new ProCoreException(e); + } } @Override @@ -622,10 +621,11 @@ public class GraphClientImpl2 implements Database.Session { ArrayList ccss = clusters.getChanges(id); for(int j=0;j { LRU.insert(this, accessTime); } - public ArrayList getCSSIds() throws AcornAccessVerificationException { + public ArrayList getCCSIds() throws AcornAccessVerificationException { if(VERIFY) verifyAccess(); return clusterChangeSetIds; }