This is an automated email from the ASF dual-hosted git repository. jbarrett pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/geode.git
commit d13651925904ec145f4dda4c042621bfdf34f4bd Author: Jacob Barrett <jbarr...@pivotal.io> AuthorDate: Wed Jul 14 16:11:20 2021 -0700 GEODE-6588: Cleanup DLockService --- .../DistributedLockServiceDUnitTest.java | 4 +- .../LockServiceMBeanAuthorizationJUnitTest.java | 2 +- .../geode/distributed/DistributedLockService.java | 3 +- .../distributed/internal/locks/DLockService.java | 651 ++++++++++----------- .../apache/geode/internal/cache/BucketAdvisor.java | 3 +- .../geode/internal/cache/DistributedRegion.java | 2 +- .../geode/internal/cache/GemFireCacheImpl.java | 4 +- .../internal/cache/locks/TXLockServiceImpl.java | 3 +- .../internal/cache/wan/GatewaySenderAdvisor.java | 2 +- .../geode/pdx/internal/PeerTypeRegistration.java | 3 +- .../org/apache/geode/cache/util/AutoBalancer.java | 2 +- 11 files changed, 307 insertions(+), 372 deletions(-) diff --git a/geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java index a4245a8..aca4dae 100755 --- a/geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java +++ b/geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java @@ -2502,7 +2502,7 @@ public final class DistributedLockServiceDUnitTest extends JUnit4DistributedTest public void run() { logger.info("[testGrantTokenCleanup] vmGrantor creates grantor"); connectDistributedSystem(); - DistributedLockService dls = DLockService.create(dlsName, getSystem(), true, true, true); + DistributedLockService dls = DLockService.create(dlsName, getSystem(), true, true); assertThat(dls.lock(key1, -1, -1)).isTrue(); assertThat(dls.isLockGrantor()).isTrue(); DLockGrantor grantor = ((DLockService) dls).getGrantor(); @@ -2522,7 +2522,7 @@ public final class DistributedLockServiceDUnitTest extends JUnit4DistributedTest logger.info("[testTokenCleanup] vm1 locks key1"); connectDistributedSystem(); DLockService dls = - (DLockService) DLockService.create(dlsName, getSystem(), true, true, false); + (DLockService) DLockService.create(dlsName, getSystem(), true, false); assertThat(dls.lock(key1, -1, -1)).isTrue(); logger.info("[testTokenCleanup] vm1 frees key1"); diff --git a/geode-core/src/integrationTest/java/org/apache/geode/management/internal/security/LockServiceMBeanAuthorizationJUnitTest.java b/geode-core/src/integrationTest/java/org/apache/geode/management/internal/security/LockServiceMBeanAuthorizationJUnitTest.java index aed5983..983a816 100644 --- a/geode-core/src/integrationTest/java/org/apache/geode/management/internal/security/LockServiceMBeanAuthorizationJUnitTest.java +++ b/geode-core/src/integrationTest/java/org/apache/geode/management/internal/security/LockServiceMBeanAuthorizationJUnitTest.java @@ -51,7 +51,7 @@ public class LockServiceMBeanAuthorizationJUnitTest { public static void beforeClassSetUp() { Cache cache = server.getCache(); DLockService.create("test-lock-service", - (InternalDistributedSystem) cache.getDistributedSystem(), false, true, true); + (InternalDistributedSystem) cache.getDistributedSystem(), false, true); } @Before diff --git a/geode-core/src/main/java/org/apache/geode/distributed/DistributedLockService.java b/geode-core/src/main/java/org/apache/geode/distributed/DistributedLockService.java index 1e7af92..a97b913 100644 --- a/geode-core/src/main/java/org/apache/geode/distributed/DistributedLockService.java +++ b/geode-core/src/main/java/org/apache/geode/distributed/DistributedLockService.java @@ -51,8 +51,7 @@ public abstract class DistributedLockService { public static DistributedLockService create(String serviceName, DistributedSystem ds) throws IllegalArgumentException { DLockService.validateServiceName(serviceName); - return DLockService.create(serviceName, (InternalDistributedSystem) ds, true /* distributed */, - true /* destroyOnDisconnect */, false /* automateFreeResources */); + return DLockService.create(serviceName, (InternalDistributedSystem) ds, true, false); } /** diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockService.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockService.java index 652245c..ba8f519 100644 --- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockService.java +++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockService.java @@ -15,6 +15,9 @@ package org.apache.geode.distributed.internal.locks; +import static java.util.Collections.emptySet; +import static org.apache.geode.util.internal.UncheckedUtils.uncheckedCast; + import java.io.DataInput; import java.io.DataOutput; import java.util.ArrayList; @@ -22,7 +25,6 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.concurrent.Callable; @@ -37,7 +39,6 @@ import org.jetbrains.annotations.NotNull; import org.apache.geode.CancelCriterion; import org.apache.geode.CancelException; import org.apache.geode.InternalGemFireException; -import org.apache.geode.StatisticsFactory; import org.apache.geode.SystemFailure; import org.apache.geode.annotations.Immutable; import org.apache.geode.annotations.internal.MakeNotStatic; @@ -74,15 +75,14 @@ public class DLockService extends DistributedLockService { private static final Logger logger = LogService.getLogger(); private static final long NOT_GRANTOR_SLEEP = Long - .getLong(GeodeGlossary.GEMFIRE_PREFIX + "DLockService.notGrantorSleep", 100).longValue(); + .getLong(GeodeGlossary.GEMFIRE_PREFIX + "DLockService.notGrantorSleep", 100); private static final boolean DEBUG_NONGRANTOR_DESTROY_LOOP = Boolean .getBoolean(GeodeGlossary.GEMFIRE_PREFIX + "DLockService.debug.nonGrantorDestroyLoop"); private static final int DEBUG_NONGRANTOR_DESTROY_LOOP_COUNT = Integer .getInteger( - GeodeGlossary.GEMFIRE_PREFIX + "DLockService.debug.nonGrantorDestroyLoopCount", 20) - .intValue(); + GeodeGlossary.GEMFIRE_PREFIX + "DLockService.debug.nonGrantorDestroyLoopCount", 20); private static final boolean AUTOMATE_FREE_RESOURCES = Boolean.getBoolean(GeodeGlossary.GEMFIRE_PREFIX + "DLockService.automateFreeResources"); @@ -101,7 +101,7 @@ public class DLockService extends DistributedLockService { protected final InternalDistributedSystem ds; /** Known lock tokens for this service. Key:Object(name), Value:DLockToken */ - private final Map<Object, DLockToken> tokens = new HashMap<Object, DLockToken>(); + private final Map<Object, DLockToken> tokens = new HashMap<>(); /** * True if this member has destroyed this named locking service. Field is volatile only because @@ -149,16 +149,13 @@ public class DLockService extends DistributedLockService { */ private int activeLocks = 0; - /** True if this service should be destroyed in system DisconnectListener */ - private final boolean destroyOnDisconnect; - /** True if this service should automatically freeResources */ private final boolean automateFreeResources; /** Identifies the thread that is destroying this lock service. */ - private final ThreadLocal<Boolean> destroyingThread = new ThreadLocal<Boolean>(); + private final ThreadLocal<Boolean> destroyingThread = new ThreadLocal<>(); - /// ** Held during destory and creation of this lock service. */ + /// ** Held during destroy and creation of this lock service. */ // private final Object serviceLock = new Object(); /** Protects access to {@link #destroyed} and {@link #activeLocks}. */ @@ -173,7 +170,7 @@ public class DLockService extends DistributedLockService { * Only outbound threads and operations should ever wait on this. Do NOT allow inbound threads to * use the <code>lockGrantorFutureResult</code>. */ - private FutureResult lockGrantorFutureResult; + private FutureResult<Object> lockGrantorFutureResult; private final DLockStopper stopper; @@ -182,11 +179,9 @@ public class DLockService extends DistributedLockService { // ------------------------------------------------------------------------- public boolean isDestroyed() { - synchronized (this.destroyLock) { - if (this.destroyed) { - if (!isCurrentThreadDoingDestroy()) { - return true; - } + synchronized (destroyLock) { + if (destroyed) { + return !isCurrentThreadDoingDestroy(); } return false; } @@ -224,11 +219,11 @@ public class DLockService extends DistributedLockService { * @param someLockGrantorId the LockGrantorId to check */ private boolean checkLockGrantorId(LockGrantorId someLockGrantorId) { - Assert.assertHoldsLock(this.lockGrantorIdLock, true); - if (this.lockGrantorId == null) { + Assert.assertHoldsLock(lockGrantorIdLock, true); + if (lockGrantorId == null) { return false; } - return this.lockGrantorId.sameAs(someLockGrantorId); + return lockGrantorId.sameAs(someLockGrantorId); } /** @@ -238,27 +233,27 @@ public class DLockService extends DistributedLockService { * @param someLockGrantorId the LockGrantorId to check */ public boolean isLockGrantorId(LockGrantorId someLockGrantorId) { - synchronized (this.lockGrantorIdLock) { + synchronized (lockGrantorIdLock) { return checkLockGrantorId(someLockGrantorId); } } private boolean isCurrentThreadDoingDestroy() { - return Boolean.TRUE.equals(this.destroyingThread.get()); + return Boolean.TRUE.equals(destroyingThread.get()); } private void setDestroyingThread() { - this.destroyingThread.set(Boolean.TRUE); + destroyingThread.set(Boolean.TRUE); } private void clearDestroyingThread() { - this.destroyingThread.remove(); + destroyingThread.remove(); } private InternalDistributedMember getElderId() { - InternalDistributedMember elder = this.dm.getElderId(); + InternalDistributedMember elder = dm.getElderId(); if (elder == null) { - this.dm.getSystem().getCancelCriterion().checkCancelInProgress(null); + dm.getSystem().getCancelCriterion().checkCancelInProgress(null); } Assert.assertTrue(elder != null); return elder; @@ -270,8 +265,8 @@ public class DLockService extends DistributedLockService { */ public LockGrantorId getLockGrantorId() { final boolean isDebugEnabled_DLS = logger.isTraceEnabled(LogMarker.DLS_VERBOSE); - boolean ownLockGrantorFutureResult = false; - FutureResult lockGrantorFutureResultRef = null; + boolean ownLockGrantorFutureResult; + FutureResult<Object> lockGrantorFutureResultRef = null; long statStart = -1; LockGrantorId theLockGrantorId = null; @@ -279,27 +274,28 @@ public class DLockService extends DistributedLockService { ownLockGrantorFutureResult = false; try { - Assert.assertHoldsLock(this.destroyLock, false); - synchronized (this.lockGrantorIdLock) { - if (this.lockGrantorFutureResult != null) { - lockGrantorFutureResultRef = this.lockGrantorFutureResult; - } else if (this.lockGrantorId != null) { - return this.lockGrantorId; + Assert.assertHoldsLock(destroyLock, false); + synchronized (lockGrantorIdLock) { + if (lockGrantorFutureResult != null) { + lockGrantorFutureResultRef = lockGrantorFutureResult; + } else if (lockGrantorId != null) { + return lockGrantorId; } else { ownLockGrantorFutureResult = true; - lockGrantorFutureResultRef = new FutureResult(this.dm.getCancelCriterion()); + lockGrantorFutureResultRef = new FutureResult<>(dm.getCancelCriterion()); if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, "[getLockGrantorId] creating lockGrantorFutureResult"); } - this.lockGrantorFutureResult = lockGrantorFutureResultRef; + lockGrantorFutureResult = lockGrantorFutureResultRef; } } statStart = getStats().startGrantorWait(); if (!ownLockGrantorFutureResult) { LockGrantorId lockGrantorIdRef = - waitForLockGrantorFutureResult(lockGrantorFutureResultRef, 0, TimeUnit.MILLISECONDS); + waitForLockGrantorFutureResult(uncheckedCast(lockGrantorFutureResultRef), 0, + TimeUnit.MILLISECONDS); if (lockGrantorIdRef != null) { return lockGrantorIdRef; } else { @@ -312,7 +308,7 @@ public class DLockService extends DistributedLockService { GrantorInfo gi = getGrantorRequest(); theLockGrantorId = - new LockGrantorId(this.dm, gi.getId(), gi.getVersionId(), gi.getSerialNumber()); + new LockGrantorId(dm, gi.getId(), gi.getVersionId(), gi.getSerialNumber()); if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, "[getLockGrantorId] elder says grantor is {}", @@ -326,37 +322,37 @@ public class DLockService extends DistributedLockService { if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, "[getLockGrantorId] needsRecovery is false"); } - synchronized (this.lockGrantorIdLock) { + synchronized (lockGrantorIdLock) { // either no previous grantor or grantor is newer Assert.assertTrue( - this.lockGrantorId == null || this.lockGrantorId.isNewerThan(theLockGrantorId) - || this.lockGrantorId.sameAs(theLockGrantorId), - this.lockGrantorId + " should be null or newer than or same as " + lockGrantorId == null || lockGrantorId.isNewerThan(theLockGrantorId) + || lockGrantorId.sameAs(theLockGrantorId), + lockGrantorId + " should be null or newer than or same as " + theLockGrantorId); } } if (!createLocalGrantor(elder, needsRecovery, theLockGrantorId)) { - theLockGrantorId = this.lockGrantorId; + theLockGrantorId = lockGrantorId; } } // elder says another member is the grantor else { - synchronized (this.lockGrantorIdLock) { + synchronized (lockGrantorIdLock) { if (!setLockGrantorId(theLockGrantorId)) { - theLockGrantorId = this.lockGrantorId; + theLockGrantorId = lockGrantorId; } } } } finally { - synchronized (this.lockGrantorIdLock) { + synchronized (lockGrantorIdLock) { boolean getLockGrantorIdFailed = theLockGrantorId == null; if (statStart > -1) { getStats().endGrantorWait(statStart, getLockGrantorIdFailed); } if (ownLockGrantorFutureResult) { // this thread is doing the real work and must finish the future - Assert.assertTrue(this.lockGrantorFutureResult == lockGrantorFutureResultRef); + Assert.assertTrue(lockGrantorFutureResult == lockGrantorFutureResultRef); if (getLockGrantorIdFailed) { // failed so cancel lockGrantorFutureResult lockGrantorFutureResultRef.cancel(false); @@ -365,7 +361,7 @@ public class DLockService extends DistributedLockService { lockGrantorFutureResultRef.set(theLockGrantorId); } // null out the reference so it is free for next usage - this.lockGrantorFutureResult = null; + lockGrantorFutureResult = null; } } } // finally block for lockGrantorFutureResult @@ -398,7 +394,7 @@ public class DLockService extends DistributedLockService { final boolean isDebugEnabled_DLS = logger.isTraceEnabled(LogMarker.DLS_VERBOSE); boolean success = false; try { - synchronized (this.lockGrantorIdLock) { + synchronized (lockGrantorIdLock) { if (isDestroyed()) { checkDestroyed(); // exit } @@ -414,29 +410,29 @@ public class DLockService extends DistributedLockService { return false; // exit } - if (this.deposingLockGrantorId != null) { - if (this.deposingLockGrantorId.isNewerThan(myLockGrantorId)) { + if (deposingLockGrantorId != null) { + if (deposingLockGrantorId.isNewerThan(myLockGrantorId)) { if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, "Failed to create {} because I was deposed by {}", - myLockGrantorId, this.deposingLockGrantorId); + myLockGrantorId, deposingLockGrantorId); } - this.deposingLockGrantorId = null; + deposingLockGrantorId = null; return false; // exit } if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, "{} failed to depose {}", - this.deposingLockGrantorId, myLockGrantorId); + deposingLockGrantorId, myLockGrantorId); } // older grantor couldn't depose us, so null it out... - this.deposingLockGrantorId = null; + deposingLockGrantorId = null; } if (!setLockGrantorId(myLockGrantorId, myGrantor)) { if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, "[getLockGrantorId] failed to create {} because current grantor is {}", - myLockGrantorId, this.lockGrantorId); + myLockGrantorId, lockGrantorId); } return false; // exit } @@ -445,9 +441,9 @@ public class DLockService extends DistributedLockService { // do NOT sync while doing recovery (because it waits for replies) if (needsRecovery) { boolean recovered = - DLockRecoverGrantorProcessor.recoverLockGrantor(this.dm.getDistributionManagerIds(), + DLockRecoverGrantorProcessor.recoverLockGrantor(dm.getDistributionManagerIds(), this, // this lock service - myGrantor, this.dm, elder); // the elder that told us to be the grantor + myGrantor, dm, elder); // the elder that told us to be the grantor if (!recovered) { checkDestroyed(); return false; // exit @@ -456,26 +452,26 @@ public class DLockService extends DistributedLockService { // after recovery, resynchronize on lockGrantorIdLock again // check to see if myLockGrantorId has been deposed - synchronized (this.lockGrantorIdLock) { + synchronized (lockGrantorIdLock) { if (isDestroyed()) { checkDestroyed(); // exit } - if (this.deposingLockGrantorId != null) { - if (this.deposingLockGrantorId.isNewerThan(myLockGrantorId)) { + if (deposingLockGrantorId != null) { + if (deposingLockGrantorId.isNewerThan(myLockGrantorId)) { if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, "Failed to create {} because I was deposed by {}", - myLockGrantorId, this.deposingLockGrantorId); + myLockGrantorId, deposingLockGrantorId); } - this.deposingLockGrantorId = null; + deposingLockGrantorId = null; return false; // exit } if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, "{} failed to depose {}", - this.deposingLockGrantorId, myLockGrantorId); + deposingLockGrantorId, myLockGrantorId); } - this.deposingLockGrantorId = null; + deposingLockGrantorId = null; } if (checkLockGrantorId(myLockGrantorId)) { @@ -541,22 +537,22 @@ public class DLockService extends DistributedLockService { * @param newLockGrantorId the new value for lockGrantorId */ private boolean setLockGrantorId(LockGrantorId newLockGrantorId) { - Assert.assertHoldsLock(this.lockGrantorIdLock, true); + Assert.assertHoldsLock(lockGrantorIdLock, true); if (equalsLockGrantorId(newLockGrantorId)) { return true; } else if (!newLockGrantorId.hasLockGrantorVersion()) { // proceed with temporary placeholder used by become grantor - this.lockGrantorId = newLockGrantorId; + lockGrantorId = newLockGrantorId; return true; - } else if (newLockGrantorId.isRemote() && this.lockGrantorId != null - && this.lockGrantorId.hasLockGrantorVersion()) { + } else if (newLockGrantorId.isRemote() && lockGrantorId != null + && lockGrantorId.hasLockGrantorVersion()) { if (logger.isTraceEnabled(LogMarker.DLS_VERBOSE)) { logger.trace(LogMarker.DLS_VERBOSE, "[setLockGrantorId] tried to replace {} with {}", - this.lockGrantorId, newLockGrantorId); + lockGrantorId, newLockGrantorId); } return false; - } else if (newLockGrantorId.isNewerThan(this.lockGrantorId)) { - this.lockGrantorId = newLockGrantorId; + } else if (newLockGrantorId.isNewerThan(lockGrantorId)) { + lockGrantorId = newLockGrantorId; return true; } else { return false; @@ -572,10 +568,10 @@ public class DLockService extends DistributedLockService { * @param localGrantor the new local intance of DLockGrantor */ private boolean setLockGrantorId(LockGrantorId localLockGrantorId, DLockGrantor localGrantor) { - Assert.assertHoldsLock(this.lockGrantorIdLock, true); + Assert.assertHoldsLock(lockGrantorIdLock, true); Assert.assertTrue(localLockGrantorId.isLocal(getSerialNumber())); if (setLockGrantorId(localLockGrantorId)) { - this.grantor = localGrantor; + grantor = localGrantor; return true; } return false; @@ -591,13 +587,13 @@ public class DLockService extends DistributedLockService { void deposeOlderLockGrantorId(LockGrantorId newLockGrantorId) { LockGrantorId deposedLockGrantorId = null; final boolean isDebugEnabled_DLS = logger.isTraceEnabled(LogMarker.DLS_VERBOSE); - synchronized (this.lockGrantorIdLock) { + synchronized (lockGrantorIdLock) { if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, "[deposeOlderLockGrantorId] pre-deposing {} for new {}", deposedLockGrantorId, newLockGrantorId); } - this.deposingLockGrantorId = newLockGrantorId; - deposedLockGrantorId = this.lockGrantorId; + deposingLockGrantorId = newLockGrantorId; + deposedLockGrantorId = lockGrantorId; } if (deposedLockGrantorId != null && deposedLockGrantorId.hasLockGrantorVersion() && newLockGrantorId.isNewerThan(deposedLockGrantorId)) { @@ -618,24 +614,24 @@ public class DLockService extends DistributedLockService { * @return true if lockGrantorId was set to null */ private boolean nullLockGrantorId(LockGrantorId oldLockGrantorId) { - Assert.assertHoldsLock(this.destroyLock, false); - Assert.assertHoldsLock(this.lockGrantorIdLock, false); + Assert.assertHoldsLock(destroyLock, false); + Assert.assertHoldsLock(lockGrantorIdLock, false); if (oldLockGrantorId == null) { return false; } DLockGrantor grantorToDestroy = null; try { - synchronized (this.lockGrantorIdLock) { + synchronized (lockGrantorIdLock) { if (equalsLockGrantorId(oldLockGrantorId) || (oldLockGrantorId.isLocal(getSerialNumber()) && isMakingLockGrantor())) { // this.lockGrantorId != null && this.lockGrantorId.isLocal())) { if (oldLockGrantorId.isLocal(getSerialNumber()) - && isLockGrantorVersion(this.grantor, oldLockGrantorId.getLockGrantorVersion())) { + && isLockGrantorVersion(grantor, oldLockGrantorId.getLockGrantorVersion())) { // need to destroy and remove grantor - grantorToDestroy = this.grantor; - this.grantor = null; + grantorToDestroy = grantor; + grantor = null; } - this.lockGrantorId = null; + lockGrantorId = null; return true; } else { return false; @@ -673,11 +669,11 @@ public class DLockService extends DistributedLockService { * @return true if someLockGrantor equals the current lockGrantorId */ private boolean equalsLockGrantorId(LockGrantorId someLockGrantor) { - Assert.assertHoldsLock(this.lockGrantorIdLock, true); + Assert.assertHoldsLock(lockGrantorIdLock, true); if (someLockGrantor == null) { - return this.lockGrantorId == null; + return lockGrantorId == null; } - return someLockGrantor.equals(this.lockGrantorId); + return someLockGrantor.equals(lockGrantorId); } /** @@ -686,9 +682,9 @@ public class DLockService extends DistributedLockService { * lock grantor. */ public LockGrantorId peekLockGrantorId() { - Assert.assertHoldsLock(this.destroyLock, false); - synchronized (this.lockGrantorIdLock) { - LockGrantorId currentLockGrantorId = this.lockGrantorId; + Assert.assertHoldsLock(destroyLock, false); + synchronized (lockGrantorIdLock) { + LockGrantorId currentLockGrantorId = lockGrantorId; if (currentLockGrantorId != null) { return currentLockGrantorId; } @@ -704,7 +700,7 @@ public class DLockService extends DistributedLockService { return null; } theLockGrantorId = - new LockGrantorId(this.dm, lockGrantorMember, gi.getVersionId(), gi.getSerialNumber()); + new LockGrantorId(dm, lockGrantorMember, gi.getVersionId(), gi.getSerialNumber()); return theLockGrantorId; } finally { boolean getLockGrantorIdFailed = theLockGrantorId == null; @@ -717,9 +713,9 @@ public class DLockService extends DistributedLockService { * {@link #checkDestroyed()}. */ private void incActiveLocks() { - synchronized (this.destroyLock) { + synchronized (destroyLock) { checkDestroyed(); - this.activeLocks++; + activeLocks++; } } @@ -727,8 +723,8 @@ public class DLockService extends DistributedLockService { * Decrements {@link #activeLocks} while synchronized on {@link #destroyLock}. */ private void decActiveLocks() { - synchronized (this.destroyLock) { - this.activeLocks--; + synchronized (destroyLock) { + activeLocks--; } } @@ -740,7 +736,8 @@ public class DLockService extends DistributedLockService { * @param timeUnit the unit of measure for timeToWait * @return the LockGrantorId or null if FutureResult was cancelled */ - private LockGrantorId waitForLockGrantorFutureResult(FutureResult lockGrantorFutureResultRef, + private LockGrantorId waitForLockGrantorFutureResult( + FutureResult<LockGrantorId> lockGrantorFutureResultRef, long timeToWait, final TimeUnit timeUnit) { LockGrantorId lockGrantorIdRef = null; while (lockGrantorIdRef == null) { @@ -748,21 +745,20 @@ public class DLockService extends DistributedLockService { try { checkDestroyed(); if (timeToWait == 0) { - lockGrantorIdRef = (LockGrantorId) lockGrantorFutureResultRef.get(); + lockGrantorIdRef = lockGrantorFutureResultRef.get(); } else { - lockGrantorIdRef = (LockGrantorId) lockGrantorFutureResultRef.get(timeToWait, timeUnit); + lockGrantorIdRef = lockGrantorFutureResultRef.get(timeToWait, timeUnit); } } catch (TimeoutException e) { break; } catch (InterruptedException e) { interrupted = true; - this.dm.getCancelCriterion().checkCancelInProgress(e); + dm.getCancelCriterion().checkCancelInProgress(e); if (lockGrantorFutureResultRef.isCancelled()) { // cancelled Future might throw InterruptedException...? checkDestroyed(); break; // return null } - continue; } catch (CancellationException e) { // Future was cancelled checkDestroyed(); break; // return null @@ -787,39 +783,40 @@ public class DLockService extends DistributedLockService { if (logger.isTraceEnabled(LogMarker.DLS_VERBOSE)) { logger.trace(LogMarker.DLS_VERBOSE, "notLockGrantorId {} returning early because notGrantor {} was equal to the local dm {}", - this.serviceName, notLockGrantorId, this.dm.getId()); + serviceName, notLockGrantorId, dm.getId()); } // Let the local destroy or processing of transfer do the clear return; } boolean ownLockGrantorFutureResult = false; - FutureResult lockGrantorFutureResultRef = null; + FutureResult<Object> lockGrantorFutureResultRef = null; long statStart = -1; - LockGrantorId currentLockGrantorId = null; + final LockGrantorId currentLockGrantorId; try { - Assert.assertHoldsLock(this.destroyLock, false); - synchronized (this.lockGrantorIdLock) { - currentLockGrantorId = this.lockGrantorId; - if (this.lockGrantorFutureResult != null) { + Assert.assertHoldsLock(destroyLock, false); + synchronized (lockGrantorIdLock) { + currentLockGrantorId = lockGrantorId; + if (lockGrantorFutureResult != null) { // some other thread is talking to elder - lockGrantorFutureResultRef = this.lockGrantorFutureResult; + lockGrantorFutureResultRef = lockGrantorFutureResult; } else if (!notLockGrantorId.sameAs(currentLockGrantorId)) { return; } else { // this thread needs to talk to elder ownLockGrantorFutureResult = true; - lockGrantorFutureResultRef = new FutureResult(this.dm.getCancelCriterion()); - this.lockGrantorFutureResult = lockGrantorFutureResultRef; + lockGrantorFutureResultRef = new FutureResult<>(dm.getCancelCriterion()); + lockGrantorFutureResult = lockGrantorFutureResultRef; } } statStart = getStats().startGrantorWait(); if (!ownLockGrantorFutureResult) { if (timeToWait >= 0) { - waitForLockGrantorFutureResult(lockGrantorFutureResultRef, timeToWait, timeUnit); + waitForLockGrantorFutureResult(uncheckedCast(lockGrantorFutureResultRef), timeToWait, + timeUnit); } return; } @@ -831,33 +828,32 @@ public class DLockService extends DistributedLockService { GrantorInfo gi = peekGrantor(); if (gi.getId() != null) { elderLockGrantorId = - new LockGrantorId(this.dm, gi.getId(), gi.getVersionId(), gi.getSerialNumber()); + new LockGrantorId(dm, gi.getId(), gi.getVersionId(), gi.getSerialNumber()); } if (notLockGrantorId.sameAs(elderLockGrantorId)) { // elder says that notLockGrantorId is still the grantor... sleep(NOT_GRANTOR_SLEEP); - return; } else { // elder says another member is the grantor nullLockGrantorId(notLockGrantorId); if (logger.isTraceEnabled(LogMarker.DLS_VERBOSE)) { logger.trace(LogMarker.DLS_VERBOSE, - "notLockGrantorId cleared lockGrantorId for service {}", this.serviceName); + "notLockGrantorId cleared lockGrantorId for service {}", serviceName); } } } finally { - synchronized (this.lockGrantorIdLock) { + synchronized (lockGrantorIdLock) { if (statStart > -1) { getStats().endGrantorWait(statStart, false); } if (ownLockGrantorFutureResult) { // this thread is doing the real work and must finish the future - Assert.assertTrue(this.lockGrantorFutureResult == lockGrantorFutureResultRef); + Assert.assertTrue(lockGrantorFutureResult == lockGrantorFutureResultRef); // cancel lockGrantorFutureResult lockGrantorFutureResultRef.cancel(false); // null out the reference so it is free for next usage - this.lockGrantorFutureResult = null; + lockGrantorFutureResult = null; } } } // finally block for lockGrantorFutureResult @@ -872,7 +868,7 @@ public class DLockService extends DistributedLockService { * synchronization on this.becomeGrantorMonitor. */ void clearGrantor(long grantorVersion, boolean withLocks) { - GrantorRequestProcessor.clearGrantor(grantorVersion, this, getSerialNumber(), this.ds, + GrantorRequestProcessor.clearGrantor(grantorVersion, this, getSerialNumber(), ds, withLocks); } @@ -885,7 +881,7 @@ public class DLockService extends DistributedLockService { * synchronization on this.becomeGrantorMonitor. */ private GrantorInfo getGrantorRequest() { - return GrantorRequestProcessor.getGrantor(this, getSerialNumber(), this.ds); + return GrantorRequestProcessor.getGrantor(this, getSerialNumber(), ds); } /** @@ -897,7 +893,7 @@ public class DLockService extends DistributedLockService { * synchronization on this.becomeGrantorMonitor. */ private GrantorInfo peekGrantor() { - return GrantorRequestProcessor.peekGrantor(this, this.ds); + return GrantorRequestProcessor.peekGrantor(this, ds); } /** @@ -910,7 +906,7 @@ public class DLockService extends DistributedLockService { * synchronization on this.becomeGrantorMonitor. */ private GrantorInfo becomeGrantor(InternalDistributedMember predecessor) { - return GrantorRequestProcessor.becomeGrantor(this, getSerialNumber(), predecessor, this.ds); + return GrantorRequestProcessor.becomeGrantor(this, getSerialNumber(), predecessor, ds); } // ------------------------------------------------------------------------- @@ -923,14 +919,14 @@ public class DLockService extends DistributedLockService { } public DLockGrantor getGrantor() { - Assert.assertHoldsLock(this.destroyLock, false); - synchronized (this.lockGrantorIdLock) { - return this.grantor; + Assert.assertHoldsLock(destroyLock, false); + synchronized (lockGrantorIdLock) { + return grantor; } } public DLockGrantor getGrantorWithNoSync() { - return this.grantor; + return grantor; } /** @@ -939,7 +935,7 @@ public class DLockService extends DistributedLockService { private void becomeLockGrantor(InternalDistributedMember predecessor) { Assert.assertTrue(predecessor == null); boolean ownLockGrantorFutureResult = false; - FutureResult lockGrantorFutureResultRef = null; + FutureResult<Object> lockGrantorFutureResultRef = null; final boolean isDebugEnabled_DLS = logger.isTraceEnabled(LogMarker.DLS_VERBOSE); LockGrantorId myLockGrantorId = null; @@ -949,27 +945,28 @@ public class DLockService extends DistributedLockService { // terminate loop if other thread has already made us lock grantor // terminate loop if this thread gets control of lockGrantorFutureResult while (!ownLockGrantorFutureResult) { - Assert.assertHoldsLock(this.destroyLock, false); - synchronized (this.lockGrantorIdLock) { + Assert.assertHoldsLock(destroyLock, false); + synchronized (lockGrantorIdLock) { if (isCurrentlyOrIsMakingLockGrantor()) { return; - } else if (this.lockGrantorFutureResult != null) { + } else if (lockGrantorFutureResult != null) { // need to wait for other thread controlling lockGrantorFutureResult - lockGrantorFutureResultRef = this.lockGrantorFutureResult; + lockGrantorFutureResultRef = lockGrantorFutureResult; } else { - // this thread is in control and will procede to become grantor + // this thread is in control and will proceed to become grantor // create new lockGrantorFutureResult for other threads to block on ownLockGrantorFutureResult = true; - lockGrantorFutureResultRef = new FutureResult(this.dm.getCancelCriterion()); + lockGrantorFutureResultRef = new FutureResult<>(dm.getCancelCriterion()); if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, "[becomeLockGrantor] creating lockGrantorFutureResult"); } - this.lockGrantorFutureResult = lockGrantorFutureResultRef; + lockGrantorFutureResult = lockGrantorFutureResultRef; } } if (!ownLockGrantorFutureResult) { - waitForLockGrantorFutureResult(lockGrantorFutureResultRef, 0, TimeUnit.MILLISECONDS); + waitForLockGrantorFutureResult(uncheckedCast(lockGrantorFutureResultRef), 0, + TimeUnit.MILLISECONDS); } } @@ -979,19 +976,19 @@ public class DLockService extends DistributedLockService { // create the new grantor instance in non-ready state... long tempGrantorVersion = -1; LockGrantorId tempLockGrantorId = - new LockGrantorId(this.dm, this.dm.getId(), tempGrantorVersion, getSerialNumber()); + new LockGrantorId(dm, dm.getId(), tempGrantorVersion, getSerialNumber()); DLockGrantor myGrantor = DLockGrantor.createGrantor(this, tempGrantorVersion); try { // finally handles myGrantor - synchronized (this.lockGrantorIdLock) { + synchronized (lockGrantorIdLock) { Assert.assertTrue(setLockGrantorId(tempLockGrantorId, myGrantor)); } if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, "become set lockGrantorId to {} for service {}", - this.lockGrantorId, this.serviceName); + lockGrantorId, serviceName); } InternalDistributedMember elder = getElderId(); @@ -1005,7 +1002,7 @@ public class DLockService extends DistributedLockService { myGrantor.setVersionId(myGrantorVersion); myLockGrantorId = - new LockGrantorId(this.dm, this.dm.getId(), myGrantorVersion, getSerialNumber()); + new LockGrantorId(dm, dm.getId(), myGrantorVersion, getSerialNumber()); if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, "[becomeLockGrantor] Calling makeLocalGrantor"); @@ -1016,27 +1013,27 @@ public class DLockService extends DistributedLockService { } finally { Assert.assertTrue( - myGrantor == null || !myGrantor.isInitializing() - || this.dm.getCancelCriterion().isCancelInProgress() || isDestroyed(), + !myGrantor.isInitializing() || dm.getCancelCriterion().isCancelInProgress() + || isDestroyed(), "BecomeLockGrantor failed and left grantor non-ready"); } } finally { - synchronized (this.lockGrantorIdLock) { + synchronized (lockGrantorIdLock) { if (ownLockGrantorFutureResult) { // this thread is doing the real work and must finish the future - Assert.assertTrue(this.lockGrantorFutureResult == lockGrantorFutureResultRef); + Assert.assertTrue(lockGrantorFutureResult == lockGrantorFutureResultRef); boolean getLockGrantorIdFailed = myLockGrantorId == null; if (getLockGrantorIdFailed) { // failed so cancel lockGrantorFutureResult lockGrantorFutureResultRef.cancel(true); // interrupt waiting threads } else { - this.dm.getCancelCriterion().checkCancelInProgress(null); // don't succeed if shutting - // down + dm.getCancelCriterion().checkCancelInProgress(null); // don't succeed if shutting + // down // succeeded so set lockGrantorFutureResult lockGrantorFutureResultRef.set(myLockGrantorId); } // null out the reference so it is free for next usage - this.lockGrantorFutureResult = null; + lockGrantorFutureResult = null; } } } @@ -1052,25 +1049,25 @@ public class DLockService extends DistributedLockService { } boolean isMakingLockGrantor() { - Assert.assertHoldsLock(this.destroyLock, false); - synchronized (this.lockGrantorIdLock) { - return this.lockGrantorId != null && this.lockGrantorId.isLocal(getSerialNumber()) - && this.grantor != null && this.grantor.isInitializing(); + Assert.assertHoldsLock(destroyLock, false); + synchronized (lockGrantorIdLock) { + return lockGrantorId != null && lockGrantorId.isLocal(getSerialNumber()) + && grantor != null && grantor.isInitializing(); } } boolean isCurrentlyOrIsMakingLockGrantor() { - Assert.assertHoldsLock(this.destroyLock, false); - synchronized (this.lockGrantorIdLock) { - return this.lockGrantorId != null && this.lockGrantorId.isLocal(getSerialNumber()); + Assert.assertHoldsLock(destroyLock, false); + synchronized (lockGrantorIdLock) { + return lockGrantorId != null && lockGrantorId.isLocal(getSerialNumber()); } } boolean isCurrentlyLockGrantor() { - Assert.assertHoldsLock(this.destroyLock, false); - synchronized (this.lockGrantorIdLock) { - return this.lockGrantorId != null && this.lockGrantorId.isLocal(getSerialNumber()) - && this.grantor != null && this.grantor.isReady(); + Assert.assertHoldsLock(destroyLock, false); + synchronized (lockGrantorIdLock) { + return lockGrantorId != null && lockGrantorId.isLocal(getSerialNumber()) + && grantor != null && grantor.isReady(); } } @@ -1095,12 +1092,12 @@ public class DLockService extends DistributedLockService { * @return true if token has been destroyed and removed */ private boolean removeTokenIfUnused(Object name) { - synchronized (this.tokens) { - if (this.destroyed) { + synchronized (tokens) { + if (destroyed) { getStats().incFreeResourcesFailed(); return false; } - DLockToken token = this.tokens.get(name); + DLockToken token = tokens.get(name); if (token != null) { synchronized (token) { if (!token.isBeingUsed()) { @@ -1121,7 +1118,7 @@ public class DLockService extends DistributedLockService { } protected Object removeTokenFromMap(Object name) { - return this.tokens.remove(name); + return tokens.remove(name); } /** @@ -1129,13 +1126,13 @@ public class DLockService extends DistributedLockService { * token. */ private void removeAllUnusedTokens() { - synchronized (this.tokens) { - if (this.destroyed) { + synchronized (tokens) { + if (destroyed) { getStats().incFreeResourcesFailed(); return; } - Set<DLockToken> unusedTokens = Collections.emptySet(); - for (DLockToken token : this.tokens.values()) { + Set<DLockToken> unusedTokens = emptySet(); + for (DLockToken token : tokens.values()) { synchronized (token) { if (!token.isBeingUsed()) { if (logger.isTraceEnabled(LogMarker.DLS_VERBOSE)) { @@ -1152,10 +1149,10 @@ public class DLockService extends DistributedLockService { } for (DLockToken token : unusedTokens) { synchronized (token) { - int tokensSizeBefore = this.tokens.size(); + int tokensSizeBefore = tokens.size(); Object obj = removeTokenFromMap(token.getName()); Assert.assertTrue(obj != null); - int tokensSizeAfter = this.tokens.size(); + int tokensSizeAfter = tokens.size(); Assert.assertTrue(tokensSizeBefore - tokensSizeAfter == 1); token.destroy(); getStats().incTokens(-1); @@ -1170,22 +1167,22 @@ public class DLockService extends DistributedLockService { * tokens map and each token. */ private void removeAllTokens() { - synchronized (this.tokens) { - Assert.assertTrue(this.destroyed); - for (DLockToken token : this.tokens.values()) { + synchronized (tokens) { + Assert.assertTrue(destroyed); + for (DLockToken token : tokens.values()) { synchronized (token) { token.destroy(); } } - getStats().incTokens(-this.tokens.size()); - this.tokens.clear(); + getStats().incTokens(-tokens.size()); + tokens.clear(); } } @Override public boolean isHeldByCurrentThread(Object name) { checkDestroyed(); - synchronized (this.tokens) { + synchronized (tokens) { DLockToken token = basicGetToken(name); if (token == null) { return false; @@ -1199,7 +1196,7 @@ public class DLockService extends DistributedLockService { public boolean isHeldByThreadId(Object name, int threadId) { checkDestroyed(); - synchronized (this.tokens) { + synchronized (tokens) { DLockToken token = basicGetToken(name); if (token == null) { return false; @@ -1232,17 +1229,16 @@ public class DLockService extends DistributedLockService { public boolean lock(Object name, long waitTimeMillis, long leaseTimeMillis, boolean tryLock, boolean disallowReentrant) { - return lock(name, waitTimeMillis, leaseTimeMillis, tryLock, false, false); + return lock(name, waitTimeMillis, leaseTimeMillis, tryLock, disallowReentrant, false); } - public boolean lock(Object name, long waitTimeMillis, long leaseTimeMillis, boolean tryLock, - boolean disallowReentrant, boolean diableAlerts) { + boolean disallowReentrant, boolean disableAlerts) { checkDestroyed(); try { boolean interruptible = false; return lockInterruptibly(name, waitTimeMillis, leaseTimeMillis, tryLock, interruptible, - disallowReentrant, diableAlerts); + disallowReentrant, disableAlerts); } catch (InterruptedException ex) { // LOST INTERRUPT Thread.currentThread().interrupt(); // fail assertion @@ -1268,7 +1264,6 @@ public class DLockService extends DistributedLockService { throw new InterruptedException(); } Thread.sleep(millis); - return; } else { sleep(millis); } @@ -1308,12 +1303,12 @@ public class DLockService extends DistributedLockService { int threadId, long startTime, long requestLeaseTime, long requestWaitTime, boolean reentrant, boolean tryLock, boolean disableAlerts) { return new DLockRequestProcessor(grantorId, this, name, threadId, startTime, requestLeaseTime, - requestWaitTime, reentrant, tryLock, disableAlerts, this.dm); + requestWaitTime, reentrant, tryLock, disableAlerts, dm); } protected boolean callReleaseProcessor(InternalDistributedMember grantor, Object name, boolean lockBatch, int lockId) { - return DLockService.callReleaseProcessor(this.dm, this.serviceName, grantor, name, lockBatch, + return DLockService.callReleaseProcessor(dm, serviceName, grantor, name, lockBatch, lockId); } @@ -1400,10 +1395,10 @@ public class DLockService extends DistributedLockService { blockedOn.set(name); try { // try-block for end stats, token cleanup, and interrupt check - ThreadRequestState requestState = (ThreadRequestState) this.threadRequestState.get(); + ThreadRequestState requestState = threadRequestState.get(); if (requestState == null) { requestState = new ThreadRequestState(incThreadSequence(), interruptible); - this.threadRequestState.set(requestState); + threadRequestState.set(requestState); } else { requestState.interruptible = interruptible; } @@ -1411,7 +1406,6 @@ public class DLockService extends DistributedLockService { // if reentry and no change to expiration then grantor is not bothered - long leaseExpireTime = 0; boolean keepTrying = true; int lockId = -1; incActiveLocks(); @@ -1435,10 +1429,10 @@ public class DLockService extends DistributedLockService { name, token); } reentrant = true; - if (reentrant && disallowReentrant) { + if (disallowReentrant) { throw new IllegalStateException( String.format("%s attempted to reenter non-reentrant lock %s", - new Object[] {Thread.currentThread(), token})); + Thread.currentThread(), token)); } recursionBefore = token.getRecursion(); lockId = token.getLeaseId(); // keep lockId @@ -1485,7 +1479,7 @@ public class DLockService extends DistributedLockService { } if (gotLock) { - leaseExpireTime = processor.getLeaseExpireTime(); + final long leaseExpireTime = processor.getLeaseExpireTime(); int recursion = recursionBefore + 1; if (!grantLocalDLockAfterObtainingRemoteLock(name, token, threadId, leaseExpireTime, @@ -1586,14 +1580,14 @@ public class DLockService extends DistributedLockService { DLockRequestProcessor processor, int recursion) { boolean needToReleaseOrphanedGrant = false; - Assert.assertHoldsLock(this.destroyLock, false); - synchronized (this.lockGrantorIdLock) { + Assert.assertHoldsLock(destroyLock, false); + synchronized (lockGrantorIdLock) { if (!checkLockGrantorId(theLockGrantorId)) { // race: grantor changed if (logger.isTraceEnabled(LogMarker.DLS_VERBOSE)) { logger.trace(LogMarker.DLS_VERBOSE, "Cannot honor grant from {} because {} is now a grantor.", theLockGrantorId, - this.lockGrantorId); + lockGrantorId); } } else if (isDestroyed()) { // race: dls was destroyed @@ -1604,7 +1598,7 @@ public class DLockService extends DistributedLockService { } needToReleaseOrphanedGrant = true; } else { - synchronized (this.tokens) { + synchronized (tokens) { checkDestroyed(); Assert.assertTrue(token == basicGetToken(name)); RemoteThread rThread = new RemoteThread(getDistributionManager().getId(), threadId); @@ -1615,7 +1609,7 @@ public class DLockService extends DistributedLockService { } if (needToReleaseOrphanedGrant) { - processor.getResponse().releaseOrphanedGrant(this.dm); + processor.getResponse().releaseOrphanedGrant(dm); } return false; } @@ -1710,8 +1704,6 @@ public class DLockService extends DistributedLockService { // suspendLocking with distribute=false and gets stuck in // waitForGrantorCallsInProgress - SuspendLockingToken suspendToken = SUSPEND_LOCKING_TOKEN; - boolean gotToken = false; boolean keepTrying = true; @@ -1723,7 +1715,8 @@ public class DLockService extends DistributedLockService { while (!gotToken && keepTrying) { gotToken = - lockInterruptibly(suspendToken, waitTimeMillis, -1, tryLock, interruptible, false); + lockInterruptibly(SUSPEND_LOCKING_TOKEN, waitTimeMillis, -1, tryLock, interruptible, + false); keepTrying = !gotToken && waitLimit > System.currentTimeMillis(); } return gotToken; @@ -1751,8 +1744,7 @@ public class DLockService extends DistributedLockService { RemoteThread rThread = null; try { - - synchronized (this.tokens) { + synchronized (tokens) { checkDestroyed(); token = basicGetToken(name); if (token == null) { @@ -1762,7 +1754,7 @@ public class DLockService extends DistributedLockService { throw new LockNotHeldException( String.format( "Attempting to unlock %s : %s , but this thread does not own the lock.", - new Object[] {this, name})); + this, name)); } synchronized (token) { @@ -1777,7 +1769,7 @@ public class DLockService extends DistributedLockService { throw new LockNotHeldException( String.format( "Attempting to unlock %s : %s , but this thread does not own the lock. %s", - new Object[] {this, name, token})); + this, name, token)); } // if recursion > 0 then token will still be locked after calling release hadRecursion = token.getRecursion() > 0; @@ -1799,7 +1791,7 @@ public class DLockService extends DistributedLockService { checkDestroyed(); LockGrantorId theLockGrantorId = getLockGrantorId(); try { - synchronized (this.lockGrantorIdLock) { + synchronized (lockGrantorIdLock) { unlocked = token.releaseLock(lockId, rThread); } released = callReleaseProcessor(theLockGrantorId.getLockGrantorMember(), name, @@ -1824,16 +1816,12 @@ public class DLockService extends DistributedLockService { if (!hadRecursion && lockId > -1 && token != null) { decActiveLocks(); if (!unlocked) { - // // token is still held if grantor was remote, so now we unlock... - // checkDestroyed(); // part of fix for bug 35239 - // // this release is ok even if we have become the lock grantor - // // because the grantor will have no state for this lock token.releaseLock(lockId, rThread); } } } finally { getStats().endLockRelease(statStart); - if (this.automateFreeResources) { + if (automateFreeResources) { freeResources(name); } if (isDebugEnabled_DLS) { @@ -1858,7 +1846,7 @@ public class DLockService extends DistributedLockService { LockGrantorId theLockGrantorId = getLockGrantorId(); try { queryReply = DLockQueryProcessor.query(theLockGrantorId.getLockGrantorMember(), - this.serviceName, name, false /* lockBatch */, this.dm); + serviceName, name, false /* lockBatch */, dm); } catch (LockGrantorDestroyedException e) { // loop back around to get next lock grantor } finally { @@ -1887,7 +1875,8 @@ public class DLockService extends DistributedLockService { * @see org.apache.geode.distributed.DistributedLockService#create(String, DistributedSystem) */ static DLockService basicCreate(String serviceName, InternalDistributedSystem ds, - boolean isDistributed, boolean destroyOnDisconnect, boolean automateFreeResources) + boolean isDistributed, + boolean automateFreeResources) throws IllegalArgumentException { Assert.assertHoldsLock(services, true); @@ -1896,7 +1885,7 @@ public class DLockService extends DistributedLockService { serviceName); } - DLockService svc = new DLockService(serviceName, ds, isDistributed, destroyOnDisconnect, + DLockService svc = new DLockService(serviceName, ds, isDistributed, automateFreeResources); svc.init(); return svc; @@ -1906,17 +1895,17 @@ public class DLockService extends DistributedLockService { protected boolean init() { boolean success = false; try { - services.put(this.serviceName, this); + services.put(serviceName, this); getStats().incServices(1); - this.ds.addDisconnectListener(disconnectListener); + ds.addDisconnectListener(disconnectListener); success = true; if (logger.isTraceEnabled(LogMarker.DLS_VERBOSE)) { logger.trace(LogMarker.DLS_VERBOSE, "Created DistributedLockService <{}>", - this.serviceName); + serviceName); } } finally { if (!success) { - services.remove(this.serviceName); + services.remove(serviceName); getStats().incServices(-1); } } @@ -1935,16 +1924,16 @@ public class DLockService extends DistributedLockService { * DLockService.create(Object, DistributedSystem, DistributionAdvisor) */ protected DLockService(String serviceName, DistributedSystem ds, boolean isDistributed, - boolean destroyOnDisconnect, boolean automateFreeResources) { + boolean automateFreeResources) { super(); - this.dlockStats = getOrCreateStats(ds); - this.serialNumber = createSerialNumber(); + dlockStats = getOrCreateStats(ds); + serialNumber = createSerialNumber(); this.serviceName = serviceName; this.ds = (InternalDistributedSystem) ds; - this.dm = this.ds.getDistributionManager(); - this.stopper = new DLockStopper(this.dm, this); + dm = this.ds.getDistributionManager(); + stopper = new DLockStopper(this); this.isDistributed = isDistributed; - this.destroyOnDisconnect = destroyOnDisconnect; + // True if this service should be destroyed in system DisconnectListener this.automateFreeResources = automateFreeResources || AUTOMATE_FREE_RESOURCES; } @@ -1954,12 +1943,10 @@ public class DLockService extends DistributedLockService { @Override public String toString() { - StringBuffer buffer = new StringBuffer(128); - buffer.append('<').append("DLockService").append("@") - .append(Integer.toHexString(System.identityHashCode(this))).append(" named ") - .append(this.serviceName).append(" destroyed=").append(this.destroyed).append(" grantorId=") - .append(this.lockGrantorId).append(" grantor=").append(this.grantor).append('>'); - return buffer.toString(); + return '<' + "DLockService" + "@" + + Integer.toHexString(System.identityHashCode(this)) + " named " + + serviceName + " destroyed=" + destroyed + " grantorId=" + + lockGrantorId + " grantor=" + grantor + '>'; } // ------------------------------------------------------------------------- @@ -1967,7 +1954,7 @@ public class DLockService extends DistributedLockService { // ------------------------------------------------------------------------- public DistributedLockStats getStats() { - return this.dlockStats; + return dlockStats; } public void releaseTryLocks(DLockBatchId batchId, Callable<Boolean> untilCondition) { @@ -1991,10 +1978,9 @@ public class DLockService extends DistributedLockService { throw new InternalGemFireException("unexpected exception", e); } checkDestroyed(); - LockGrantorId theLockGrantorId = null; - theLockGrantorId = batchId.getLockGrantorId(); - synchronized (this.lockGrantorIdLock) { + final LockGrantorId theLockGrantorId = batchId.getLockGrantorId(); + synchronized (lockGrantorIdLock) { if (!checkLockGrantorId(theLockGrantorId)) { // the grantor is different so break and skip DLockReleaseProcessor break; @@ -2055,10 +2041,10 @@ public class DLockService extends DistributedLockService { boolean gotLocks = false; try { - ThreadRequestState requestState = (ThreadRequestState) this.threadRequestState.get(); + ThreadRequestState requestState = threadRequestState.get(); if (requestState == null) { requestState = new ThreadRequestState(incThreadSequence(), false); - this.threadRequestState.set(requestState); + threadRequestState.set(requestState); } else { requestState.interruptible = false; } @@ -2091,7 +2077,7 @@ public class DLockService extends DistributedLockService { if (keyIfFailed[0] == null) { if (isDebugEnabled_DLS) { logger.trace(LogMarker.DLS_VERBOSE, - "[acquireTryLocks] lock request failed but provided no conflict key; responseCode=", + "[acquireTryLocks] lock request failed but provided no conflict key; responseCode={}", processor.getResponseCodeString()); } } else { @@ -2102,7 +2088,7 @@ public class DLockService extends DistributedLockService { long timeLeft = requestWaitTime; if (requestWaitTime < Long.MAX_VALUE) { // prevent txLock from performing next line... - timeLeft = waitLimit - getLockTimeStamp(this.dm); + timeLeft = waitLimit - getLockTimeStamp(dm); } keepTrying = !gotLocks && timeLeft > 0; if (keepTrying && timeLeft > 10) { @@ -2133,8 +2119,8 @@ public class DLockService extends DistributedLockService { * @return copy of the tokens map */ public Map<Object, DLockToken> snapshotService() { - synchronized (this.tokens) { - return new HashMap(this.tokens); + synchronized (tokens) { + return new HashMap<>(tokens); } } @@ -2147,24 +2133,24 @@ public class DLockService extends DistributedLockService { /** Returns true if the lock service is distributed; false if local only */ public boolean isDistributed() { - return this.isDistributed; + return isDistributed; } public void setDLockLessorDepartureHandler(DLockLessorDepartureHandler handler) { - this.lessorDepartureHandler = handler; + lessorDepartureHandler = handler; } public DLockLessorDepartureHandler getDLockLessorDepartureHandler() { - return this.lessorDepartureHandler; + return lessorDepartureHandler; } /** The name of this service */ public String getName() { - return this.serviceName; + return serviceName; } public DistributionManager getDistributionManager() { - return this.dm; + return dm; } public void setDLockRecoverGrantorMessageProcessor( @@ -2173,31 +2159,14 @@ public class DLockService extends DistributedLockService { } public DLockRecoverGrantorProcessor.MessageProcessor getDLockRecoverGrantorMessageProcessor() { - return this.recoverGrantorProcessor; - } - - /** - * Returns true if any tokens in this service are currently held. Synchronizes on tokens map and - * on each token to check the lease. - * - * @return true if any tokens in this service are currently held - */ - boolean hasHeldLocks() { - synchronized (this.tokens) { - for (DLockToken token : this.tokens.values()) { - if (token.isLeaseHeld()) { - return true; - } - } - } - return false; + return recoverGrantorProcessor; } /** * @see org.apache.geode.distributed.DistributedLockService#destroy(String) */ public static void destroyServiceNamed(String serviceName) throws IllegalArgumentException { - DLockService svc = null; + final DLockService svc; synchronized (services) { svc = services.get(serviceName); } @@ -2248,13 +2217,13 @@ public class DLockService extends DistributedLockService { return; } setDestroyingThread(); - synchronized (this.lockGrantorIdLock) { // force ordering in lock request - synchronized (this.destroyLock) { - this.destroyed = true; - maybeHasActiveLocks = this.activeLocks > 0; + synchronized (lockGrantorIdLock) { // force ordering in lock request + synchronized (destroyLock) { + destroyed = true; + maybeHasActiveLocks = activeLocks > 0; } - isCurrentlyLockGrantor = this.isCurrentlyLockGrantor(); - isMakingLockGrantor = this.isMakingLockGrantor(); + isCurrentlyLockGrantor = isCurrentlyLockGrantor(); + isMakingLockGrantor = isMakingLockGrantor(); } } finally { if (isCurrentThreadDoingDestroy()) { @@ -2267,7 +2236,7 @@ public class DLockService extends DistributedLockService { } finally { if (isCurrentThreadDoingDestroy()) { try { - this.basicDestroy(isCurrentlyLockGrantor, isMakingLockGrantor, maybeHasActiveLocks); + basicDestroy(isCurrentlyLockGrantor, isMakingLockGrantor, maybeHasActiveLocks); } catch (CancelException e) { // don't propagate } finally { @@ -2300,7 +2269,7 @@ public class DLockService extends DistributedLockService { } // if hasActiveLocks, tell grantor we're destroying... - if (!isCurrentlyLockGrantor && maybeHasActiveLocks && !this.ds.isDisconnectThread()) { + if (!isCurrentlyLockGrantor && maybeHasActiveLocks && !ds.isDisconnectThread()) { boolean retry; int nonGrantorDestroyLoopCount = 0; do { @@ -2308,7 +2277,7 @@ public class DLockService extends DistributedLockService { LockGrantorId theLockGrantorId = peekLockGrantorId(); if (theLockGrantorId != null && !theLockGrantorId.isLocal(getSerialNumber())) { - if (!NonGrantorDestroyedProcessor.send(this.serviceName, theLockGrantorId, dm)) { + if (!NonGrantorDestroyedProcessor.send(serviceName, theLockGrantorId, dm)) { // grantor responded NOT_GRANTOR notLockGrantorId(theLockGrantorId, 0, TimeUnit.MILLISECONDS); // nulls out grantor to // force call to elder @@ -2321,11 +2290,11 @@ public class DLockService extends DistributedLockService { if (nonGrantorDestroyLoopCount >= DEBUG_NONGRANTOR_DESTROY_LOOP_COUNT) { logger.fatal(LogMarker.DLS_MARKER, "Failed to notify grantor of destruction within {} attempts.", - Integer.valueOf(DEBUG_NONGRANTOR_DESTROY_LOOP_COUNT)); + DEBUG_NONGRANTOR_DESTROY_LOOP_COUNT); Assert.assertTrue(false, String.format("Failed to notify grantor of destruction within %s attempts.", - new Object[] {Integer.valueOf(DEBUG_NONGRANTOR_DESTROY_LOOP_COUNT)})); + DEBUG_NONGRANTOR_DESTROY_LOOP_COUNT)); } } @@ -2335,7 +2304,7 @@ public class DLockService extends DistributedLockService { if (isCurrentlyLockGrantor || isMakingLockGrantor) { // If forcedDisconnect is in progress, the membership view will not // change and no-one else can contact this member, so don't wait for a grantor - if (this.ds.getCancelCriterion().isCancelInProgress()) { + if (ds.getCancelCriterion().isCancelInProgress()) { try { DLockGrantor.waitForGrantor(this); } catch (InterruptedException e) { @@ -2347,7 +2316,7 @@ public class DLockService extends DistributedLockService { } } } - nullLockGrantorId(this.lockGrantorId); + nullLockGrantorId(lockGrantorId); } // } } @@ -2356,14 +2325,6 @@ public class DLockService extends DistributedLockService { ds.handleResourceEvent(ResourceEvent.LOCKSERVICE_REMOVE, this); } - // ------------------------------------------------------------------------- - // Package instance methods - // ------------------------------------------------------------------------- - - boolean destroyOnDisconnect() { - return this.destroyOnDisconnect; - } - /** * Called by grantor recovery to return set of locks held by this process. Synchronizes on * lockGrantorIdLock, tokens map, and each lock token. @@ -2371,15 +2332,15 @@ public class DLockService extends DistributedLockService { * @param newlockGrantorId the newly recovering grantor */ Set<DLockRemoteToken> getLockTokensForRecovery(LockGrantorId newlockGrantorId) { - Set<DLockRemoteToken> heldLockSet = Collections.EMPTY_SET; + Set<DLockRemoteToken> heldLockSet = emptySet(); - LockGrantorId currentLockGrantorId = null; - synchronized (this.lockGrantorIdLock) { + final LockGrantorId currentLockGrantorId; + synchronized (lockGrantorIdLock) { if (isDestroyed()) { return heldLockSet; } - currentLockGrantorId = this.lockGrantorId; + currentLockGrantorId = lockGrantorId; } // destroy local grantor if currentLockGrantorId is local @@ -2390,10 +2351,10 @@ public class DLockService extends DistributedLockService { } final boolean isDebugEnabled_DLS = logger.isTraceEnabled(LogMarker.DLS_VERBOSE); - synchronized (this.lockGrantorIdLock) { - synchronized (this.tokens) { + synchronized (lockGrantorIdLock) { + synchronized (tokens) { // build up set of currently held locks - for (DLockToken token : this.tokens.values()) { + for (DLockToken token : tokens.values()) { synchronized (token) { if (token.isLeaseHeld()) { @@ -2428,8 +2389,8 @@ public class DLockService extends DistributedLockService { * @return the named lock token or null if it doesn't exist */ public DLockToken getToken(Object name) { - synchronized (this.tokens) { - return this.tokens.get(name); + synchronized (tokens) { + return tokens.get(name); } } @@ -2440,7 +2401,7 @@ public class DLockService extends DistributedLockService { * @return the named lock token or null if it doesn't exist */ private DLockToken basicGetToken(Object name) { - return this.tokens.get(name); + return tokens.get(name); } /** @@ -2449,9 +2410,9 @@ public class DLockService extends DistributedLockService { * * @return an unmodifiable collection of the tokens map values */ - public Collection getTokens() { - synchronized (this.tokens) { - return Collections.unmodifiableCollection(this.tokens.values()); + public Collection<DLockToken> getTokens() { + synchronized (tokens) { + return Collections.unmodifiableCollection(tokens.values()); } } @@ -2462,16 +2423,16 @@ public class DLockService extends DistributedLockService { * @return an existing or new instantiated lock token */ DLockToken getOrCreateToken(Object name) { - synchronized (this.tokens) { + synchronized (tokens) { checkDestroyed(); // check destroy after acquiring tokens map sync - DLockToken token = this.tokens.get(name); + DLockToken token = tokens.get(name); boolean createNewToken = token == null; if (createNewToken) { - token = new DLockToken(this.dm, name); + token = new DLockToken(dm, name); } synchronized (token) { if (createNewToken) { - this.tokens.put(name, token); + tokens.put(name, token); if (logger.isTraceEnabled(LogMarker.DLS_VERBOSE)) { logger.trace(LogMarker.DLS_VERBOSE, "Creating {} in {}", token, this); } @@ -2495,8 +2456,8 @@ public class DLockService extends DistributedLockService { */ private int numLocksHeldInThisVM() { int numLocksHeld = 0; - synchronized (this.tokens) { - for (DLockToken token : this.tokens.values()) { + synchronized (tokens) { + for (DLockToken token : tokens.values()) { synchronized (token) { if (token.isLeaseHeld()) { numLocksHeld++; @@ -2512,11 +2473,11 @@ public class DLockService extends DistributedLockService { * each lock token. */ protected void dumpService() { - synchronized (this.tokens) { + synchronized (tokens) { StringBuffer buffer = new StringBuffer(); - buffer.append(" ").append(this.tokens.size()).append(" tokens, "); + buffer.append(" ").append(tokens.size()).append(" tokens, "); buffer.append(numLocksHeldInThisVM()).append(" locks held\n"); - for (Map.Entry<Object, DLockToken> entry : this.tokens.entrySet()) { + for (Map.Entry<Object, DLockToken> entry : tokens.entrySet()) { buffer.append(" ").append(entry.getKey()).append(": "); DLockToken token = entry.getValue(); buffer.append(token.toString()).append("\n"); @@ -2538,28 +2499,28 @@ public class DLockService extends DistributedLockService { } } - private final ThreadLocal threadRequestState = new ThreadLocal(); + private final ThreadLocal<ThreadRequestState> threadRequestState = new ThreadLocal<>(); - private final UnsafeThreadLocal<Object> blockedOn = new UnsafeThreadLocal<Object>(); + private final UnsafeThreadLocal<Object> blockedOn = new UnsafeThreadLocal<>(); /** * Returns true if the calling thread has an active lock request that is interruptible */ boolean isInterruptibleLockRequest() { // this method is called by grantor for local lock requests in grantor vm - final ThreadRequestState requestState = (ThreadRequestState) threadRequestState.get(); + final ThreadRequestState requestState = threadRequestState.get(); if (requestState == null) { return false; } return requestState.interruptible; } - ThreadLocal getThreadRequestState() { + ThreadLocal<ThreadRequestState> getThreadRequestState() { return threadRequestState; } protected int incThreadSequence() { - return this.threadSequence.incrementAndGet(); + return threadSequence.incrementAndGet(); } // ------------------------------------------------------------------------- @@ -2613,10 +2574,6 @@ public class DLockService extends DistributedLockService { private static final Object creationLock = new Object(); - /** All DLock threads belong to this group */ - @MakeNotStatic - private static ThreadGroup threadGroup; - /** DLock statistics; static because multiple dlock instances can exist */ @MakeNotStatic private static DistributedLockStats stats = DUMMY_STATS; @@ -2637,8 +2594,7 @@ public class DLockService extends DistributedLockService { * Specifies the starting serial number for the serialNumberSequencer */ public static final int START_SERIAL_NUMBER = Integer - .getInteger(GeodeGlossary.GEMFIRE_PREFIX + "DistributedLockService.startSerialNumber", 1) - .intValue(); + .getInteger(GeodeGlossary.GEMFIRE_PREFIX + "DistributedLockService.startSerialNumber", 1); /** * Incrementing serial number used to identify order of DLS creation @@ -2671,7 +2627,7 @@ public class DLockService extends DistributedLockService { * relation to other DLS'es or other instances of this named DLS during the life of this JVM. */ public int getSerialNumber() { - return this.serialNumber; + return serialNumber; } // ------------------------------------------------------------------------- @@ -2682,7 +2638,7 @@ public class DLockService extends DistributedLockService { DistributedLockService cmsLockService = DLockService.getServiceNamed(serviceName); try { if (cmsLockService == null) { - cmsLockService = DLockService.create(serviceName, ds, true, true); + cmsLockService = DLockService.create(serviceName, ds, true); } } catch (IllegalArgumentException ignore) { return DLockService.getServiceNamed(serviceName); @@ -2700,8 +2656,8 @@ public class DLockService extends DistributedLockService { } public static DistributedLockService create(String serviceName, InternalDistributedSystem ds, - boolean distributed, boolean destroyOnDisconnect) { - return create(serviceName, ds, distributed, destroyOnDisconnect, false); + boolean distributed) { + return create(serviceName, ds, distributed, false); } /** @@ -2710,8 +2666,6 @@ public class DLockService extends DistributedLockService { * @param serviceName name of the service * @param ds InternalDistributedSystem * @param distributed true if lock service will be distributed; false will be local only - * @param destroyOnDisconnect true if lock service should destroy itself using system disconnect - * listener * @param automateFreeResources true if freeResources should be automatically called during unlock * * @throws IllegalArgumentException if serviceName is invalid or this process has already created @@ -2723,7 +2677,8 @@ public class DLockService extends DistributedLockService { */ @NotNull public static DistributedLockService create(String serviceName, InternalDistributedSystem ds, - boolean distributed, boolean destroyOnDisconnect, boolean automateFreeResources) + boolean distributed, + boolean automateFreeResources) throws IllegalArgumentException, IllegalStateException { // basicCreate will construct DLockService and it calls getOrCreateStats... synchronized (creationLock) { @@ -2734,7 +2689,7 @@ public class DLockService extends DistributedLockService { String.format("Service named %s already created", serviceName)); } - return DLockService.basicCreate(serviceName, ds, distributed, destroyOnDisconnect, + return DLockService.basicCreate(serviceName, ds, distributed, automateFreeResources); } } @@ -2764,7 +2719,8 @@ public class DLockService extends DistributedLockService { throw new IllegalArgumentException(String.format("Service named '%s' is not valid", serviceName)); } - DLockService svc = null; + + final DLockService svc; synchronized (services) { svc = services.get(serviceName); } @@ -2785,21 +2741,19 @@ public class DLockService extends DistributedLockService { * @param nonGrantors filled with service names of all services we have that we are not the * grantor of. */ - public static void recoverRmtElder(ArrayList grantors, ArrayList grantorVersions, - ArrayList grantorSerialNumbers, ArrayList nonGrantors) { + public static void recoverRmtElder(ArrayList<String> grantors, ArrayList<Long> grantorVersions, + ArrayList<Integer> grantorSerialNumbers, ArrayList<String> nonGrantors) { synchronized (services) { - Iterator entries = services.entrySet().iterator(); - while (entries.hasNext()) { - Map.Entry entry = (Map.Entry) entries.next(); - String serviceName = (String) entry.getKey(); - DLockService service = (DLockService) entry.getValue(); + for (final Map.Entry<String, DLockService> entry : services.entrySet()) { + String serviceName = entry.getKey(); + DLockService service = entry.getValue(); boolean foundGrantor = false; DLockGrantor grantor = service.getGrantor(); if (grantor != null && grantor.getVersionId() != -1 && !grantor.isDestroyed()) { foundGrantor = true; grantors.add(serviceName); - grantorVersions.add(Long.valueOf(grantor.getVersionId())); - grantorSerialNumbers.add(Integer.valueOf(service.getSerialNumber())); + grantorVersions.add(grantor.getVersionId()); + grantorSerialNumbers.add(service.getSerialNumber()); } if (!foundGrantor) { nonGrantors.add(serviceName); @@ -2818,11 +2772,9 @@ public class DLockService extends DistributedLockService { public static void recoverLocalElder(DistributionManager dm, Map<String, GrantorInfo> grantors, Set<String> needsRecovery) { synchronized (services) { - Iterator entries = services.entrySet().iterator(); - while (entries.hasNext()) { - Map.Entry entry = (Map.Entry) entries.next(); - String serviceName = (String) entry.getKey(); - DLockService service = (DLockService) entry.getValue(); + for (final Map.Entry<String, DLockService> entry : services.entrySet()) { + String serviceName = entry.getKey(); + DLockService service = entry.getValue(); boolean foundGrantor = false; DLockGrantor grantor = service.getGrantor(); if (grantor != null && grantor.getVersionId() != -1 && !grantor.isDestroyed()) { @@ -2880,13 +2832,11 @@ public class DLockService extends DistributedLockService { * service tokens maps and each lock token. */ public static void dumpAllServices() { // used by: distributed/DistributedLockServiceTest - StringBuffer buffer = new StringBuffer(); synchronized (services) { logger.info(LogMarker.DLS_MARKER, "DLockService.dumpAllServices() - " + services.size() + " services:\n"); - for (Map.Entry entry : services.entrySet()) { - buffer.append(" " + entry.getKey() + ":\n"); - DLockService svc = (DLockService) entry.getValue(); + for (final Map.Entry<String, DLockService> entry : services.entrySet()) { + DLockService svc = entry.getValue(); svc.dumpService(); if (svc.isCurrentlyLockGrantor()) { svc.grantor.dumpService(); @@ -2896,14 +2846,6 @@ public class DLockService extends DistributedLockService { } } - // ------------------------------------------------------------------------- - // Package static methods - // ------------------------------------------------------------------------- - - static ThreadGroup getThreadGroup() { - return threadGroup; - } - /** * Return a timestamp that represents the current time for locking purposes. * @@ -2917,9 +2859,8 @@ public class DLockService extends DistributedLockService { protected static synchronized DistributedLockStats getOrCreateStats(DistributedSystem ds) { if (stats == DUMMY_STATS) { Assert.assertTrue(ds != null, "Need an instance of InternalDistributedSystem"); - StatisticsFactory statFactory = ds; long statId = OSProcess.getId(); - stats = new DLockStats(statFactory, statId); + stats = new DLockStats(ds, statId); } return stats; } @@ -2943,7 +2884,7 @@ public class DLockService extends DistributedLockService { protected static void removeLockService(DLockService service) { service.removeAllTokens(); - InternalDistributedSystem system = null; + final InternalDistributedSystem system; synchronized (services) { DLockService removedService = services.remove(service.getName()); if (removedService == null) { @@ -3038,11 +2979,9 @@ public class DLockService extends DistributedLockService { /** * Creates a new DLockStopper for the specified DLockService and DM. * - * @param dm the DM to check for shutdown * @param dls the DLockService to check for DLS destroy */ - DLockStopper(DistributionManager dm, DLockService dls) { - Assert.assertTrue(dls != null); + DLockStopper(final @NotNull DLockService dls) { this.dls = dls; Assert.assertTrue(dls.getDistributionManager() != null); } @@ -3050,13 +2989,13 @@ public class DLockService extends DistributedLockService { @Override public String cancelInProgress() { String cancelInProgressString = - this.dls.getDistributionManager().getCancelCriterion().cancelInProgress(); + dls.getDistributionManager().getCancelCriterion().cancelInProgress(); if (cancelInProgressString != null) { // delegate to underlying DM's CancelCriterion... return cancelInProgressString; - } else if (this.dls.isDestroyed()) { + } else if (dls.isDestroyed()) { // this.stoppedByDLS = true; - return this.dls.generateLockServiceDestroyedMessage(); + return dls.generateLockServiceDestroyedMessage(); } else { // return null since neither DM nor DLS are shutting down // cannot call super.cancelInProgress because it's abstract @@ -3070,7 +3009,7 @@ public class DLockService extends DistributedLockService { if (reason == null) { return null; } - return this.dls.generateLockServiceDestroyedException(reason); + return dls.generateLockServiceDestroyedException(reason); } } diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/BucketAdvisor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/BucketAdvisor.java index 741f60a..84cc516 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/BucketAdvisor.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/BucketAdvisor.java @@ -1253,8 +1253,7 @@ public class BucketAdvisor extends CacheDistributionAdvisor { } try { // TODO: call GemFireCache#getPartitionedRegionLockService dls = DLockService.create(PartitionedRegionHelper.PARTITION_LOCK_SERVICE_NAME, - getAdvisee().getSystem(), true /* distributed */, true /* destroyOnDisconnect */, - true /* automateFreeResources */); + getAdvisee().getSystem(), true, true); } catch (IllegalArgumentException e) { // indicates that the DLS is already created dls = DistributedLockService diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedRegion.java index b271f5f..4e3b42d 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedRegion.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedRegion.java @@ -2275,7 +2275,7 @@ public class DistributedRegion extends LocalRegion implements InternalDistribute dlockService = DistributedLockService.getServiceNamed(dlsName); if (dlockService == null) { // region destroy will destroy dls and manual freeResources only - dlockService = DLockService.create(getFullPath(), getSystem(), true, false, false); + dlockService = DLockService.create(getFullPath(), getSystem(), true, false); } // handle is-lock-grantor region attribute... if (isLockGrantor) { diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java index 2ad8336..a100538 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java @@ -2034,7 +2034,7 @@ public class GemFireCacheImpl implements InternalCache, InternalClientCache, Has if (prLockService == null) { try { prLockService = DLockService.create(PARTITION_LOCK_SERVICE_NAME, - getInternalDistributedSystem(), true, true, true); + getInternalDistributedSystem(), true, true); } catch (IllegalArgumentException e) { prLockService = DistributedLockService.getServiceNamed(PARTITION_LOCK_SERVICE_NAME); if (prLockService == null) { @@ -2055,7 +2055,7 @@ public class GemFireCacheImpl implements InternalCache, InternalClientCache, Has if (gatewayLockService == null) { try { gatewayLockService = DLockService.create(AbstractGatewaySender.LOCK_SERVICE_NAME, - getInternalDistributedSystem(), true, true, true); + getInternalDistributedSystem(), true, true); } catch (IllegalArgumentException e) { gatewayLockService = DistributedLockService.getServiceNamed(AbstractGatewaySender.LOCK_SERVICE_NAME); diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/locks/TXLockServiceImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/locks/TXLockServiceImpl.java index bdc406a..b904463 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/locks/TXLockServiceImpl.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/locks/TXLockServiceImpl.java @@ -80,8 +80,7 @@ public class TXLockServiceImpl extends TXLockService { this.recoveryLock = new StoppableReentrantReadWriteLock(sys.getCancelCriterion()); - this.dlock = (DLockService) DLockService.create(name, sys, true /* distributed */, - true /* destroyOnDisconnect */, true /* automateFreeResources */); + this.dlock = (DLockService) DLockService.create(name, sys, true, true); this.dlock.setDLockRecoverGrantorMessageProcessor(new TXRecoverGrantorMessageProcessor()); diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderAdvisor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderAdvisor.java index bf50c63..0804e0f 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderAdvisor.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderAdvisor.java @@ -316,7 +316,7 @@ public class GatewaySenderAdvisor extends DistributionAdvisor { String dlsName = getDLockServiceName(); lockService = DistributedLockService.getServiceNamed(dlsName); if (lockService == null) { - lockService = DLockService.create(dlsName, ds, true, true, true); + lockService = DLockService.create(dlsName, ds, true, true); } if (logger.isDebugEnabled()) { logger.debug("{}: Obtained DistributedLockService: {}", this, lockService); diff --git a/geode-core/src/main/java/org/apache/geode/pdx/internal/PeerTypeRegistration.java b/geode-core/src/main/java/org/apache/geode/pdx/internal/PeerTypeRegistration.java index dc28c4a..034a37a 100644 --- a/geode-core/src/main/java/org/apache/geode/pdx/internal/PeerTypeRegistration.java +++ b/geode-core/src/main/java/org/apache/geode/pdx/internal/PeerTypeRegistration.java @@ -222,8 +222,7 @@ public class PeerTypeRegistration implements TypeRegistration { if (dls == null) { try { dls = DLockService.create(LOCK_SERVICE_NAME, - cache.getInternalDistributedSystem(), true /* distributed */, - true /* destroyOnDisconnect */, true /* automateFreeResources */); + cache.getInternalDistributedSystem(), true, true); } catch (IllegalArgumentException e) { dls = DistributedLockService.getServiceNamed(LOCK_SERVICE_NAME); if (dls == null) { diff --git a/geode-rebalancer/src/main/java/org/apache/geode/cache/util/AutoBalancer.java b/geode-rebalancer/src/main/java/org/apache/geode/cache/util/AutoBalancer.java index 79bbf9b..d57e254 100644 --- a/geode-rebalancer/src/main/java/org/apache/geode/cache/util/AutoBalancer.java +++ b/geode-rebalancer/src/main/java/org/apache/geode/cache/util/AutoBalancer.java @@ -521,7 +521,7 @@ public class AutoBalancer implements Declarable { logger.debug("Creating DistributeLockService"); } dls = DLockService.create(AUTO_BALANCER_LOCK_SERVICE_NAME, - cache.getInternalDistributedSystem(), true, true, true); + cache.getInternalDistributedSystem(), true, true); } return dls;