@@ -92,11 +92,9 @@ void init(IsolationLevel level) throws SailException {
9292 this .level = level ;
9393 initialized = true ;
9494 snapshotWriteMode = IsolationLevels .SNAPSHOT .equals (level );
95- snapshotReadMode = IsolationLevels .SNAPSHOT_READ .equals (level )
95+ snapshotReadMode = snapshotWriteMode || IsolationLevels .SNAPSHOT_READ .equals (level )
9696 || IsolationLevels .SERIALIZABLE .equals (level );
97- if (snapshotWriteMode ) {
98- ensureWriteTxnInitialized ();
99- } else if (snapshotReadMode ) {
97+ if (snapshotReadMode ) {
10098 ensurePinnedReadSnapshot ();
10199 deferWrites = true ;
102100 overlayChanges = true ;
@@ -118,10 +116,8 @@ boolean hasStatementChanges() {
118116
119117 void markManagedTransaction () {
120118 managedTransaction = true ;
121- if (!snapshotWriteMode ) {
122- deferWrites = true ;
123- overlayChanges = true ;
124- }
119+ deferWrites = true ;
120+ overlayChanges = true ;
125121 }
126122
127123 boolean isManagedTransaction () {
@@ -370,7 +366,7 @@ void beginUpdate() throws SailException {
370366 }
371367 deferWrites = true ;
372368 overlayChanges = true ;
373- if (!( snapshotReadMode || snapshotWriteMode ) && level != null && ! shouldDeferWriteFlush () ) {
369+ if (!managedTransaction && ! snapshotReadMode && level != null ) {
374370 ensureWriteTxn (level );
375371 }
376372 pendingUpdates .push (new PendingChanges ());
@@ -388,7 +384,7 @@ void endUpdate() throws SailException {
388384 }
389385 if (deferWrites ) {
390386 mergeIntoMain (completed );
391- if (shouldDeferWriteFlush () ) {
387+ if (managedTransaction ) {
392388 return ;
393389 }
394390 try {
@@ -413,7 +409,7 @@ void abortUpdate() {
413409 pendingUpdates .pop ();
414410 }
415411 if (pendingUpdates .isEmpty () && deferWrites ) {
416- if (shouldDeferWriteFlush () ) {
412+ if (managedTransaction ) {
417413 return ;
418414 }
419415 clearStatementChanges ();
@@ -422,10 +418,6 @@ void abortUpdate() {
422418 }
423419 }
424420
425- private boolean shouldDeferWriteFlush () {
426- return managedTransaction && !snapshotWriteMode ;
427- }
428-
429421 void recordAdd (Resource subj , IRI pred , Value obj , Resource ctx , boolean explicit ) {
430422 if (!deferWrites ) {
431423 return ;
0 commit comments