This is an automated email from the ASF dual-hosted git repository. eshu11 pushed a commit to branch feature/GEODE-7087 in repository https://gitbox.apache.org/repos/asf/geode.git
commit 6b7920745c7bf15ccf7edcc949f214ede50ddf12 Author: eshu <[email protected]> AuthorDate: Wed Aug 14 13:33:08 2019 -0700 GEODE-7087: Reset flag after unlock bucket primary lock. --- .../java/org/apache/geode/internal/cache/TXState.java | 12 +++++++++--- .../java/org/apache/geode/internal/cache/TXStateTest.java | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/TXState.java b/geode-core/src/main/java/org/apache/geode/internal/cache/TXState.java index 9ec621b..b040afc 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/TXState.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/TXState.java @@ -139,7 +139,7 @@ public class TXState implements TXStateInterface { protected final TXStateProxy proxy; protected boolean firedWriter = false; protected final boolean onBehalfOfRemoteStub; - protected boolean gotBucketLocks = false; + private boolean gotBucketLocks = false; protected TXCommitMessage commitMessage = null; ClientProxyMembershipID bridgeContext = null; /** keeps track of events, so as not to re-apply events */ @@ -906,7 +906,7 @@ public class TXState implements TXStateInterface { /* * Need to unlock the primary lock for rebalancing so that rebalancing can resume. */ - if (gotBucketLocks) { + if (isBucketLocks()) { if (r instanceof BucketRegion && (((BucketRegion) r).getBucketAdvisor().isPrimary())) { try { ((BucketRegion) r).doUnlockForPrimary(); @@ -932,13 +932,19 @@ public class TXState implements TXStateInterface { synchronized (this.completionGuard) { this.completionGuard.notifyAll(); } - + if (isBucketLocks()) { + gotBucketLocks = false; + } if (exception != null && !this.proxy.getCache().isClosed()) { throw exception; } } } + boolean isBucketLocks() { + return gotBucketLocks; + } + /* * (non-Javadoc) * diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/TXStateTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/TXStateTest.java index 362ee5f..0da6aad 100644 --- a/geode-core/src/test/java/org/apache/geode/internal/cache/TXStateTest.java +++ b/geode-core/src/test/java/org/apache/geode/internal/cache/TXStateTest.java @@ -20,6 +20,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.Assertions.catchThrowable; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; @@ -29,6 +30,8 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.util.List; + import javax.transaction.Status; import org.junit.Before; @@ -298,4 +301,16 @@ public class TXStateTest { verify(regionState1).cleanup(region1); } + @Test + public void gotBucketLocksFlagIsResetAfterCommit() { + TXState txState = spy(new TXState(txStateProxy, false, disabledClock())); + List entries = mock(List.class); + doReturn(entries).when(txState).generateEventOffsets(); + doNothing().when(txState).attachFilterProfileInformation(entries); + doNothing().when(txState).applyChanges(entries); + txState.commit(); + + assertThat(txState.isBucketLocks()).isFalse(); + } + }
