[
https://issues.apache.org/jira/browse/GEODE-8862?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17290183#comment-17290183
]
ASF GitHub Bot commented on GEODE-8862:
---------------------------------------
DonalEvans commented on a change in pull request #6051:
URL: https://github.com/apache/geode/pull/6051#discussion_r582199184
##########
File path:
geode-core/src/test/java/org/apache/geode/internal/cache/DistributedCacheOperationTest.java
##########
@@ -72,11 +114,112 @@ public void endOperationIsInvokedOnDistributionError() {
assertTrue(operation.endOperationInvoked);
}
+ @Test
+ public void processReplacesVersionTagNullIDs() {
+ message.process(dm);
+
+ verify(versionTag).replaceNullIDs(sender);
+ }
+
+ @Test
+ public void processSendsReplyIfAdminDM() {
+
when(dm.getDMType()).thenReturn(ClusterDistributionManager.ADMIN_ONLY_DM_TYPE);
+
+ message.process(dm);
+
+ verify(message, never()).basicProcess(dm, region);
+ verify(message).sendReply(
+ eq(sender),
+ eq(processorId),
+ eq(null),
+ eq(dm));
+ }
+
+ @Test
+ public void processSendsReplyIfLocalRegionIsNull() {
+ doReturn(null).when(message).getLocalRegionForProcessing(dm);
+
+ message.process(dm);
+
+ assertThat(message.closed).isTrue();
+ verify(message, never()).basicProcess(dm, region);
+ verify(message).sendReply(
+ eq(sender),
Review comment:
It's not necessary to wrap the arguments here with `eq()`, so this can
be simplified.
##########
File path:
geode-core/src/test/java/org/apache/geode/internal/cache/DistributedCacheOperationTest.java
##########
@@ -72,11 +114,112 @@ public void endOperationIsInvokedOnDistributionError() {
assertTrue(operation.endOperationInvoked);
}
+ @Test
+ public void processReplacesVersionTagNullIDs() {
+ message.process(dm);
+
+ verify(versionTag).replaceNullIDs(sender);
+ }
+
+ @Test
+ public void processSendsReplyIfAdminDM() {
+
when(dm.getDMType()).thenReturn(ClusterDistributionManager.ADMIN_ONLY_DM_TYPE);
+
+ message.process(dm);
+
+ verify(message, never()).basicProcess(dm, region);
+ verify(message).sendReply(
+ eq(sender),
Review comment:
It's not necessary to wrap the arguments here with `eq()`, so this can
be simplified.
##########
File path:
geode-core/src/test/java/org/apache/geode/internal/cache/DistributedCacheOperationTest.java
##########
@@ -72,11 +114,112 @@ public void endOperationIsInvokedOnDistributionError() {
assertTrue(operation.endOperationInvoked);
}
+ @Test
+ public void processReplacesVersionTagNullIDs() {
+ message.process(dm);
+
+ verify(versionTag).replaceNullIDs(sender);
+ }
+
+ @Test
+ public void processSendsReplyIfAdminDM() {
+
when(dm.getDMType()).thenReturn(ClusterDistributionManager.ADMIN_ONLY_DM_TYPE);
+
+ message.process(dm);
+
+ verify(message, never()).basicProcess(dm, region);
+ verify(message).sendReply(
+ eq(sender),
+ eq(processorId),
+ eq(null),
+ eq(dm));
+ }
+
+ @Test
+ public void processSendsReplyIfLocalRegionIsNull() {
+ doReturn(null).when(message).getLocalRegionForProcessing(dm);
+
+ message.process(dm);
+
+ assertThat(message.closed).isTrue();
+ verify(message, never()).basicProcess(dm, region);
+ verify(message).sendReply(
+ eq(sender),
+ eq(processorId),
+ eq(null),
+ eq(dm));
+ }
+
+ @Test
+ public void processSendsReplyIfGotCacheClosedException() {
+ CacheClosedException cacheClosedException = new CacheClosedException();
+
doThrow(cacheClosedException).when(message).getLocalRegionForProcessing(dm);
+
+ message.process(dm);
+
+ assertThat(message.closed).isTrue();
Review comment:
This would be simpler as `assertTrue()`.
##########
File path:
geode-core/src/test/java/org/apache/geode/internal/cache/DistributedCacheOperationTest.java
##########
@@ -72,11 +114,112 @@ public void endOperationIsInvokedOnDistributionError() {
assertTrue(operation.endOperationInvoked);
}
+ @Test
+ public void processReplacesVersionTagNullIDs() {
+ message.process(dm);
+
+ verify(versionTag).replaceNullIDs(sender);
+ }
+
+ @Test
+ public void processSendsReplyIfAdminDM() {
+
when(dm.getDMType()).thenReturn(ClusterDistributionManager.ADMIN_ONLY_DM_TYPE);
+
+ message.process(dm);
+
+ verify(message, never()).basicProcess(dm, region);
+ verify(message).sendReply(
+ eq(sender),
+ eq(processorId),
+ eq(null),
+ eq(dm));
+ }
+
+ @Test
+ public void processSendsReplyIfLocalRegionIsNull() {
+ doReturn(null).when(message).getLocalRegionForProcessing(dm);
+
+ message.process(dm);
+
+ assertThat(message.closed).isTrue();
+ verify(message, never()).basicProcess(dm, region);
+ verify(message).sendReply(
+ eq(sender),
+ eq(processorId),
+ eq(null),
+ eq(dm));
+ }
+
+ @Test
+ public void processSendsReplyIfGotCacheClosedException() {
+ CacheClosedException cacheClosedException = new CacheClosedException();
+
doThrow(cacheClosedException).when(message).getLocalRegionForProcessing(dm);
+
+ message.process(dm);
+
+ assertThat(message.closed).isTrue();
+ verify(message, never()).basicProcess(dm, region);
+ verify(message).sendReply(
+ eq(sender),
+ eq(processorId),
+ eq(null),
+ eq(dm));
+ }
+
+ @Test
+ public void processSendsReplyExceptionIfGotRuntimeException() {
+ RuntimeException exception = new RuntimeException();
+ doThrow(exception).when(message).getLocalRegionForProcessing(dm);
+
+ message.process(dm);
+
+ verify(message, never()).basicProcess(dm, region);
+ ArgumentCaptor<ReplyException> captor =
ArgumentCaptor.forClass(ReplyException.class);
+ verify(message).sendReply(
+ eq(sender),
+ eq(processorId),
+ captor.capture(),
+ eq(dm));
+ assertThat(captor.getValue().getCause()).isSameAs(exception);
+ }
+
+ @Test
+ public void processPerformsBasicProcessIfNotDistributedNoAck() {
+ when(scope.isDistributedNoAck()).thenReturn(false);
+
+ message.process(dm);
+
+ verify(message).basicProcess(dm, region);
+ verify(executors, never()).getWaitingThreadPool();
+ }
+
+ @Test
+ public void processUsesWaitingThreadPoolIfDistributedNoAck() {
+ when(scope.isDistributedNoAck()).thenReturn(true);
+
+ message.process(dm);
+
+ verify(executors).getWaitingThreadPool();
+ }
+
+ @Test
+ public void processDoesNotSendReplyIfDistributedNoAck() {
+ when(scope.isDistributedNoAck()).thenReturn(true);
+
+ message.process(dm);
+
+ verify(message, never()).sendReply(
+ eq(sender),
Review comment:
It's not necessary to use `eq()` for these arguments.
##########
File path:
geode-core/src/test/java/org/apache/geode/internal/cache/DistributedCacheOperationTest.java
##########
@@ -72,11 +114,112 @@ public void endOperationIsInvokedOnDistributionError() {
assertTrue(operation.endOperationInvoked);
}
+ @Test
+ public void processReplacesVersionTagNullIDs() {
+ message.process(dm);
+
+ verify(versionTag).replaceNullIDs(sender);
+ }
+
+ @Test
+ public void processSendsReplyIfAdminDM() {
+
when(dm.getDMType()).thenReturn(ClusterDistributionManager.ADMIN_ONLY_DM_TYPE);
+
+ message.process(dm);
+
+ verify(message, never()).basicProcess(dm, region);
+ verify(message).sendReply(
+ eq(sender),
+ eq(processorId),
+ eq(null),
+ eq(dm));
+ }
+
+ @Test
+ public void processSendsReplyIfLocalRegionIsNull() {
+ doReturn(null).when(message).getLocalRegionForProcessing(dm);
+
+ message.process(dm);
+
+ assertThat(message.closed).isTrue();
+ verify(message, never()).basicProcess(dm, region);
+ verify(message).sendReply(
+ eq(sender),
+ eq(processorId),
+ eq(null),
+ eq(dm));
+ }
+
+ @Test
+ public void processSendsReplyIfGotCacheClosedException() {
+ CacheClosedException cacheClosedException = new CacheClosedException();
+
doThrow(cacheClosedException).when(message).getLocalRegionForProcessing(dm);
+
+ message.process(dm);
+
+ assertThat(message.closed).isTrue();
+ verify(message, never()).basicProcess(dm, region);
+ verify(message).sendReply(
+ eq(sender),
Review comment:
It's not necessary to use `eq()` here.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> DLockRecoverGrantorProcessor.recoverLockGrantor sometimes hangs
> ---------------------------------------------------------------
>
> Key: GEODE-8862
> URL: https://issues.apache.org/jira/browse/GEODE-8862
> Project: Geode
> Issue Type: Bug
> Components: distributed lock service
> Affects Versions: 1.14.0
> Reporter: Eric Shu
> Priority: Major
> Labels: blocks-1.14.0, pull-request-available
>
> "vm_9_thr_27_persist8_host1_29953" #1448 daemon prio=5 os_prio=0 cpu=45.99ms
> elapsed=698.42s tid=0x00007f8d0c052800 nid=0x2ee8 waiting on condition
> [0x00007f8c354f6000]
> java.lang.Thread.State: TIMED_WAITING (parking)
> at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
> - parking to wait for <0x00000000fb7bb488> (a
> java.util.concurrent.CountDownLatch$Sync)
> at
> java.util.concurrent.locks.LockSupport.parkNanos([email protected]/LockSupport.java:234)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos([email protected]/AbstractQueuedSynchronizer.java:1079)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos([email protected]/AbstractQueuedSynchronizer.java:1369)
> at
> java.util.concurrent.CountDownLatch.await([email protected]/CountDownLatch.java:278)
> at
> org.apache.geode.internal.util.concurrent.StoppableCountDownLatch.await(StoppableCountDownLatch.java:72)
> at
> org.apache.geode.distributed.internal.ReplyProcessor21.basicWait(ReplyProcessor21.java:723)
> at
> org.apache.geode.distributed.internal.ReplyProcessor21.waitForRepliesUninterruptibly(ReplyProcessor21.java:794)
> at
> org.apache.geode.distributed.internal.ReplyProcessor21.waitForRepliesUninterruptibly(ReplyProcessor21.java:771)
> at
> org.apache.geode.distributed.internal.ReplyProcessor21.waitForRepliesUninterruptibly(ReplyProcessor21.java:857)
> at
> org.apache.geode.distributed.internal.locks.DLockRecoverGrantorProcessor.recoverLockGrantor(DLockRecoverGrantorProcessor.java:100)
> at
> org.apache.geode.distributed.internal.locks.DLockService.makeLocalGrantor(DLockService.java:447)
> at
> org.apache.geode.distributed.internal.locks.DLockService.createLocalGrantor(DLockService.java:392)
> at
> org.apache.geode.distributed.internal.locks.DLockService.getLockGrantorId(DLockService.java:337)
> at
> org.apache.geode.distributed.internal.locks.DLockService.lockInterruptibly(DLockService.java:1445)
> at
> org.apache.geode.distributed.internal.locks.DLockService.lock(DLockService.java:1241)
> at
> org.apache.geode.distributed.internal.locks.DLockService.lock(DLockService.java:1232)
> at
> org.apache.geode.distributed.internal.locks.DLockService.lock(DLockService.java:1227)
> at
> org.apache.geode.distributed.internal.locks.DLockService.lock(DLockService.java:1223)
> at
> org.apache.geode.pdx.internal.PeerTypeRegistration.lock(PeerTypeRegistration.java:314)
> at
> org.apache.geode.pdx.internal.PeerTypeRegistration.defineEnum(PeerTypeRegistration.java:646)
> at
> org.apache.geode.pdx.internal.PeerTypeRegistration.getEnumId(PeerTypeRegistration.java:601)
> at
> org.apache.geode.pdx.internal.TypeRegistry.getEnumId(TypeRegistry.java:363)
> at
> org.apache.geode.internal.InternalDataSerializer.writePdxEnum(InternalDataSerializer.java:2071)
> at
> org.apache.geode.internal.InternalDataSerializer.writeUserObject(InternalDataSerializer.java:1610)
> at
> org.apache.geode.internal.InternalDataSerializer.writeWellKnownObject(InternalDataSerializer.java:1517)
> at
> org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2034)
> at
> org.apache.geode.pdx.internal.PdxOutputStream.writeObject(PdxOutputStream.java:72)
> at
> org.apache.geode.pdx.internal.PdxWriterImpl.writeObject(PdxWriterImpl.java:341)
> at
> org.apache.geode.pdx.internal.PdxWriterImpl.writeObject(PdxWriterImpl.java:330)
> at util.VersionedValueHolder.myToData(VersionedValueHolder.java:227)
> at
> util.PdxVersionedValueHolder.toData(PdxVersionedValueHolder.java:84)
> at
> org.apache.geode.internal.InternalDataSerializer.writePdx(InternalDataSerializer.java:2794)
> at
> org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2011)
> at
> org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2839)
> at
> org.apache.geode.internal.util.BlobHelper.serializeToBlob(BlobHelper.java:54)
> at
> org.apache.geode.internal.cache.EntryEventImpl.serialize(EntryEventImpl.java:2092)
> at
> org.apache.geode.internal.cache.EntryEventImpl.serialize(EntryEventImpl.java:2078)
> at
> org.apache.geode.internal.cache.entries.DiskEntry$Helper.createValueWrapper(DiskEntry.java:768)
> at
> org.apache.geode.internal.cache.entries.DiskEntry$Helper.basicUpdate(DiskEntry.java:955)
> at
> org.apache.geode.internal.cache.entries.DiskEntry$Helper.update(DiskEntry.java:867)
> - locked <0x00000000faaeb3d0> (a
> org.apache.geode.internal.cache.DiskId$PersistenceWithIntOffset)
> at
> org.apache.geode.internal.cache.entries.AbstractDiskRegionEntry.setValue(AbstractDiskRegionEntry.java:40)
> at
> org.apache.geode.internal.cache.entries.AbstractRegionEntry.setValueWithTombstoneCheck(AbstractRegionEntry.java:290)
> at
> org.apache.geode.internal.cache.EntryEventImpl.setNewValueInRegion(EntryEventImpl.java:1767)
> at
> org.apache.geode.internal.cache.EntryEventImpl.putExistingEntry(EntryEventImpl.java:1640)
> at
> org.apache.geode.internal.cache.map.RegionMapPut.updateEntry(RegionMapPut.java:485)
> at
> org.apache.geode.internal.cache.map.RegionMapPut.createOrUpdateEntry(RegionMapPut.java:256)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPutAndDeliverEvent(AbstractRegionMapPut.java:300)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut$$Lambda$420/0x0000000100a2b440.run(Unknown
> Source)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.runWithIndexUpdatingInProgress(AbstractRegionMapPut.java:308)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPutIfPreconditionsSatisified(AbstractRegionMapPut.java:296)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPutOnSynchronizedRegionEntry(AbstractRegionMapPut.java:282)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPutOnRegionEntryInMap(AbstractRegionMapPut.java:273)
> - locked <0x00000000faaeb388> (a
> org.apache.geode.internal.cache.entries.VersionedThinDiskRegionEntryHeapStringKey2)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.addRegionEntryToMapAndDoPut(AbstractRegionMapPut.java:251)
> - locked <0x00000000faaeb388> (a
> org.apache.geode.internal.cache.entries.VersionedThinDiskRegionEntryHeapStringKey2)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPutRetryingIfNeeded(AbstractRegionMapPut.java:216)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut$$Lambda$419/0x0000000100a2b040.run(Unknown
> Source)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.doWithIndexInUpdateMode(AbstractRegionMapPut.java:198)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPut(AbstractRegionMapPut.java:180)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut$$Lambda$418/0x0000000100a2ac40.run(Unknown
> Source)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.runWhileLockedForCacheModification(AbstractRegionMapPut.java:119)
> at
> org.apache.geode.internal.cache.map.RegionMapPut.runWhileLockedForCacheModification(RegionMapPut.java:161)
> at
> org.apache.geode.internal.cache.map.AbstractRegionMapPut.put(AbstractRegionMapPut.java:169)
> at
> org.apache.geode.internal.cache.AbstractRegionMap.basicPut(AbstractRegionMap.java:2036)
> at
> org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5600)
> at
> org.apache.geode.internal.cache.DistributedRegion.virtualPut(DistributedRegion.java:393)
> at
> org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5578)
> at
> org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:157)
> at
> org.apache.geode.internal.cache.LocalRegion.basicPut(LocalRegion.java:5036)
> at
> org.apache.geode.internal.cache.LocalRegion.validatedPut(LocalRegion.java:1635)
> at
> org.apache.geode.internal.cache.LocalRegion.put(LocalRegion.java:1622)
> at diskRecovery.RecoveryTest.updateEntry(RecoveryTest.java:3341)
> at diskRecovery.RecoveryTest.updateEntry(RecoveryTest.java:3318)
> at diskRecovery.RecoveryTest.doOperations(RecoveryTest.java:2929)
> at
> diskRecovery.RecoveryTest.concRecoverLatestResponder(RecoveryTest.java:2640)
> at
> diskRecovery.RecoveryTest.HydraTask_concRecoverLatestResponder(RecoveryTest.java:500)
> at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke0([email protected]/Native
> Method)
> at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke([email protected]/NativeMethodAccessorImpl.java:62)
> at
> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke([email protected]/DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke([email protected]/Method.java:566)
> at hydra.MethExecutor.execute(MethExecutor.java:173)
> at hydra.MethExecutor.execute(MethExecutor.java:141)
> at hydra.TestTask.execute(TestTask.java:197)
> at hydra.RemoteTestModule$1.run(RemoteTestModule.java:213)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)