Repository: incubator-geode Updated Branches: refs/heads/develop 10b6befa2 -> 0e3a60b7d
GEODE-1127: uncaught exception in GMSHealthMonitor causes CI test failures Added exception handling in a couple of places so the last-chance exception handler doesn't see DistributedSystemDisconnectedException and other CancelExceptions and log them. Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/0e3a60b7 Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/0e3a60b7 Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/0e3a60b7 Branch: refs/heads/develop Commit: 0e3a60b7d660b9e27d8bc2767ef036f500a7a841 Parents: 10b6bef Author: Bruce Schuchardt <[email protected]> Authored: Mon Mar 28 13:27:34 2016 -0700 Committer: Bruce Schuchardt <[email protected]> Committed: Mon Mar 28 13:28:40 2016 -0700 ---------------------------------------------------------------------- .../internal/membership/gms/fd/GMSHealthMonitor.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/0e3a60b7/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java index 82eb0b0..510c5a8 100755 --- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java +++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java @@ -406,7 +406,14 @@ public class GMSHealthMonitor implements HealthMonitor, MessageHandler { @Override public void run() { // TODO GemFire used the tcp/ip connection but this is using heartbeats - boolean pinged = GMSHealthMonitor.this.doCheckMember(mbr, true); + + boolean pinged = false; + try { + pinged = GMSHealthMonitor.this.doCheckMember(mbr, true); + } catch (CancelException e) { + return; + } + if (!pinged) { suspectedMemberInView.put(mbr, currentView); String reason = "Member isn't responding to heartbeat requests"; @@ -1221,6 +1228,8 @@ public class GMSHealthMonitor implements HealthMonitor, MessageHandler { reason); } catch (DistributedSystemDisconnectedException e) { return; + } catch (CancelException e) { + // shutting down } catch (Exception e) { logger.info("Unexpected exception while verifying member", e); } finally {
