[ 
https://issues.apache.org/jira/browse/GEODE-7696?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17214924#comment-17214924
 ] 

Kamilla Aslami commented on GEODE-7696:
---------------------------------------

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)

Reply via email to