[
https://issues.apache.org/jira/browse/GEODE-7696?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17214924#comment-17214924
]
Kamilla Aslami edited comment on GEODE-7696 at 10/15/20, 6:56 PM:
------------------------------------------------------------------
It turns out that the catch block is necessary to catch IllegalStateException
that may be thrown if ConnectTimeoutTask is scheduled on a timer that was
already canceled. Once a timer has been terminated, no more tasks may be
scheduled on it.
{code:java}
ERROR util.TestException: Got unexpected exception
java.lang.IllegalStateException: Timer already cancelled.
at java.util.Timer.sched(Timer.java:397)
at java.util.Timer.schedule(Timer.java:193)
at
org.apache.geode.distributed.internal.membership.gms.fd.GMSHealthMonitor$ConnectTimeoutTask.beforeConnect(GMSHealthMonitor.java:1494)
at
org.apache.geode.distributed.internal.tcpserver.AdvancedSocketCreatorImpl.connect(AdvancedSocketCreatorImpl.java:98)
at
org.apache.geode.internal.net.SCAdvancedSocketCreator.connect(SCAdvancedSocketCreator.java:51)
at
org.apache.geode.distributed.internal.tcpserver.AdvancedSocketCreatorImpl.connect(AdvancedSocketCreatorImpl.java:72)
at
org.apache.geode.distributed.internal.membership.gms.fd.GMSHealthMonitor.doTCPCheckMember(GMSHealthMonitor.java:578)
at
org.apache.geode.distributed.internal.membership.gms.fd.GMSHealthMonitor.inlineCheckIfAvailable(GMSHealthMonitor.java:1377)
at
org.apache.geode.distributed.internal.membership.gms.fd.GMSHealthMonitor.checkIfAvailable(GMSHealthMonitor.java:663)
at
org.apache.geode.distributed.internal.membership.gms.GMSMembership.verifyMember(GMSMembership.java:1363)
at
org.apache.geode.distributed.internal.membership.gms.GMSMembership.suspectMembers(GMSMembership.java:1337)
at
org.apache.geode.distributed.internal.DistributionImpl.suspectMembers(DistributionImpl.java:557)
at
org.apache.geode.distributed.internal.ReplyProcessor21.timeout(ReplyProcessor21.java:1113)
at
org.apache.geode.distributed.internal.ReplyProcessor21.basicWait(ReplyProcessor21.java:687)
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.internal.cache.DistributedCacheOperation.waitForAckIfNeeded(DistributedCacheOperation.java:779)
at
org.apache.geode.internal.cache.DistributedCacheOperation._distribute(DistributedCacheOperation.java:676)
at
org.apache.geode.internal.cache.DistributedCacheOperation.startOperation(DistributedCacheOperation.java:277)
at
org.apache.geode.internal.cache.DistributedCacheOperation.distribute(DistributedCacheOperation.java:318)
at
org.apache.geode.internal.cache.DistributedRegion.distributeUpdate(DistributedRegion.java:520)
at
org.apache.geode.internal.cache.DistributedRegion.basicPutPart3(DistributedRegion.java:498)
at
org.apache.geode.internal.cache.map.RegionMapPut.doAfterCompletionActions(RegionMapPut.java:307)
at
org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPut(AbstractRegionMapPut.java:185)
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:2044)
at
org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5599)
at
org.apache.geode.internal.cache.DistributedRegion.virtualPut(DistributedRegion.java:393)
at
org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5577)
at
org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:157)
at org.apache.geode.internal.cache.LocalRegion.basicPut(LocalRegion.java:5035)
at
org.apache.geode.internal.cache.LocalRegion.validatedPut(LocalRegion.java:1635)
at org.apache.geode.internal.cache.LocalRegion.put(LocalRegion.java:1622){code}
The catch block was added as a fix for GEODE-1321.
Instead of removing it, I will add a comment explaining when the exception may
be thrown.
was (Author: kaslami):
It turns out that the catch block is necessary to catch IllegalStateException
that may be thrown if ConnectTimeoutTask is scheduled on a timer that was
already canceled. Once a timer has been terminated, no more tasks may be
scheduled on it.
{code:java}
ERROR util.TestException: Got unexpected exception
java.lang.IllegalStateException: Timer already cancelled.
at java.util.Timer.sched(Timer.java:397)
at java.util.Timer.schedule(Timer.java:193)
at
org.apache.geode.distributed.internal.membership.gms.fd.GMSHealthMonitor$ConnectTimeoutTask.beforeConnect(GMSHealthMonitor.java:1494)
at
org.apache.geode.distributed.internal.tcpserver.AdvancedSocketCreatorImpl.connect(AdvancedSocketCreatorImpl.java:98)
at
org.apache.geode.internal.net.SCAdvancedSocketCreator.connect(SCAdvancedSocketCreator.java:51)
at
org.apache.geode.distributed.internal.tcpserver.AdvancedSocketCreatorImpl.connect(AdvancedSocketCreatorImpl.java:72)
at
org.apache.geode.distributed.internal.membership.gms.fd.GMSHealthMonitor.doTCPCheckMember(GMSHealthMonitor.java:578)
at
org.apache.geode.distributed.internal.membership.gms.fd.GMSHealthMonitor.inlineCheckIfAvailable(GMSHealthMonitor.java:1377)
at
org.apache.geode.distributed.internal.membership.gms.fd.GMSHealthMonitor.checkIfAvailable(GMSHealthMonitor.java:663)
at
org.apache.geode.distributed.internal.membership.gms.GMSMembership.verifyMember(GMSMembership.java:1363)
at
org.apache.geode.distributed.internal.membership.gms.GMSMembership.suspectMembers(GMSMembership.java:1337)
at
org.apache.geode.distributed.internal.DistributionImpl.suspectMembers(DistributionImpl.java:557)
at
org.apache.geode.distributed.internal.ReplyProcessor21.timeout(ReplyProcessor21.java:1113)
at
org.apache.geode.distributed.internal.ReplyProcessor21.basicWait(ReplyProcessor21.java:687)
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.internal.cache.DistributedCacheOperation.waitForAckIfNeeded(DistributedCacheOperation.java:779)
at
org.apache.geode.internal.cache.DistributedCacheOperation._distribute(DistributedCacheOperation.java:676)
at
org.apache.geode.internal.cache.DistributedCacheOperation.startOperation(DistributedCacheOperation.java:277)
at
org.apache.geode.internal.cache.DistributedCacheOperation.distribute(DistributedCacheOperation.java:318)
at
org.apache.geode.internal.cache.DistributedRegion.distributeUpdate(DistributedRegion.java:520)
at
org.apache.geode.internal.cache.DistributedRegion.basicPutPart3(DistributedRegion.java:498)
at
org.apache.geode.internal.cache.map.RegionMapPut.doAfterCompletionActions(RegionMapPut.java:307)
at
org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPut(AbstractRegionMapPut.java:185)
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:2044)
at
org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5599)
at
org.apache.geode.internal.cache.DistributedRegion.virtualPut(DistributedRegion.java:393)
at
org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5577)
at
org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:157)
at org.apache.geode.internal.cache.LocalRegion.basicPut(LocalRegion.java:5035)
at
org.apache.geode.internal.cache.LocalRegion.validatedPut(LocalRegion.java:1635)
at org.apache.geode.internal.cache.LocalRegion.put(LocalRegion.java:1622)
at splitBrain.ForcedDiscTest.addEntry(ForcedDiscTest.java:390){code}
The catch block was added as a fix for GEODE-1321.
Instead of removing it, I will add a comment explaining when the exception may
be thrown.
> Remove unecessary catch block from GMSHealthMonitor.java
> --------------------------------------------------------
>
> Key: GEODE-7696
> URL: https://issues.apache.org/jira/browse/GEODE-7696
> Project: Geode
> Issue Type: Improvement
> Components: membership
> Reporter: Ernest Burghardt
> Assignee: Kamilla Aslami
> Priority: Major
> Labels: pull-request-available
>
> former:
> {code:java}
> } catch (IllegalStateException \| GemFireConfigException e) {
> {code}
> current:
> {code:java}
> } catch (IllegalStateException e) {
> {code}
> we can let both bubble up...
--
This message was sent by Atlassian Jira
(v8.3.4#803005)