protected void cleanup(final boolean commit, final TransactionObserver observer) { this.state = commit ? State.CLOSED_COMMIT : State.CLOSED_ROLLBACK; final LockingPolicy lockPolicy = getLockingPolicy(); final LockMode writeMode = commit ? LockMode.EX : lockPolicy .getWriteLockMode(); try { if (observer != null) { observer.afterApplyChanges(this.proxy); } clearPendingOps(); if (!commit) { // release all pending read locks, if any pendingReadLocksCleanup(lockPolicy, null, null); } writeRegions.keySet().stream().filter(region -> region instanceof BucketRegion ).forEach(region -> ((BucketRegion)region).releaseSnapshotGIIReadLock() ); } finally { if (this.txLocked.compareAndSet(true, false)) { unlockTXState(); } cleanupTXRS(this.finalizeRegions, lockPolicy, writeMode, commit, true, observer); } }
/** * Remove this TX from the hosted tx list if its empty. */ public final void removeSelfFromHostedIfEmpty(Object callbackArg) { final TXState localState = this.localTXState; // cleanup the pending SH locks, if any, before returning if (localState != null) { localState.pendingReadLocksCleanup(getLockingPolicy(), null, null); } if (!isCoordinator()) { TXManagerImpl.getOrCreateTXContext().setPendingTXId(null); if (isEmpty()) { removeSelfFromHosted(callbackArg, true); } } }
this.localTXState.pendingReadLocksCleanup(this.lockPolicy, this.lockContext, this.lcc);
this.localTXState.pendingReadLocksCleanup(this.lockPolicy, this.lockContext, this.lcc);
this.localTXState.pendingReadLocksCleanup(this.lockPolicy, this.lockContext, this.lcc);
this.localTXState.pendingReadLocksCleanup(this.lockPolicy, this.lockContext, this.lcc);
this.localTXState.pendingReadLocksCleanup(this.lockPolicy, this.lockContext, this.lcc);
this.localTXState.pendingReadLocksCleanup(this.lockPolicy, this.lockContext, this.lcc);
pendingReadLocksCleanup(lockPolicy, null, null);