[ 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)