[
https://issues.apache.org/jira/browse/GEODE-8862?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17290584#comment-17290584
]
ASF GitHub Bot commented on GEODE-8862:
---------------------------------------
jchen21 commented on a change in pull request #6051:
URL: https://github.com/apache/geode/pull/6051#discussion_r582416387
##########
File path:
geode-core/src/main/java/org/apache/geode/internal/cache/DistributedCacheOperation.java
##########
@@ -1107,6 +1107,10 @@ protected void process(final ClusterDistributionManager
dm) {
final LocalRegion lclRgn = getLocalRegionForProcessing(dm);
sendReply = false;
+ if (lclRgn != null && lclRgn.getScope().isDistributedNoAck()) {
+ dm.getExecutors().getWaitingThreadPool().execute(() ->
basicProcess(dm, lclRgn));
Review comment:
I have the same concern. When a thread runs, if it throws an exception
that is not caught, then that exception will just silently kill the thread.
This can make it very hard to diagnose what is happening. The current thread
has a few `catch` blocks and a `finally` block (line 1115-1147). If the newly
spawned thread does not have the `catch` and `finally` blocks, I would like to
understand why.
Another question is why use `getWaitingThreadPool()` and not the other
pool, e.g. `getThreadPool()`?
----------------------------------------------------------------
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)