From 23d3a2ec3de69ecb1490f6ff1a1b77b90b3c00db Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Fri, 9 Sep 2016 11:40:13 -0600 Subject: [PATCH] Guard NPE in HeartbeatMonitor fixes gh-129 --- .../client/discovery/event/HeartbeatMonitor.java | 2 +- .../client/discovery/event/HeartbeatMonitorTests.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/discovery/event/HeartbeatMonitor.java b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/discovery/event/HeartbeatMonitor.java index c5dc1155..15d0709b 100644 --- a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/discovery/event/HeartbeatMonitor.java +++ b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/discovery/event/HeartbeatMonitor.java @@ -34,7 +34,7 @@ public class HeartbeatMonitor { */ public boolean update(Object value) { Object last = this.latestHeartbeat.get(); - if (!value.equals(last)) { + if (value != null && !value.equals(last)) { return this.latestHeartbeat.compareAndSet(last, value); } return false; diff --git a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/discovery/event/HeartbeatMonitorTests.java b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/discovery/event/HeartbeatMonitorTests.java index a140a139..9834ae3f 100644 --- a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/discovery/event/HeartbeatMonitorTests.java +++ b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/discovery/event/HeartbeatMonitorTests.java @@ -40,4 +40,15 @@ public class HeartbeatMonitorTests { assertTrue(this.monitor.update("bar")); } + @Test + public void nullInitialValue() { + assertFalse(this.monitor.update(null)); + } + + @Test + public void nullSecondValue() { + assertTrue(this.monitor.update("foo")); + assertFalse(this.monitor.update(null)); + } + }