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)); + } + }