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) {
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);
}
}