From 0605ce71a625b4f7dc6cfcf2c363e46cd8b3d616 Mon Sep 17 00:00:00 2001 From: lowzj Date: Tue, 1 Nov 2016 13:28:30 +0800 Subject: [PATCH] cancle the previous ttl task when putting a new task --- .../springframework/cloud/consul/discovery/TtlScheduler.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/TtlScheduler.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/TtlScheduler.java index 78cab588..b46976b7 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/TtlScheduler.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/TtlScheduler.java @@ -57,7 +57,10 @@ public class TtlScheduler { ScheduledFuture task = scheduler.scheduleAtFixedRate(new ConsulHeartbeatTask( service.getId()), configuration.computeHearbeatInterval() .toStandardDuration().getMillis()); - serviceHeartbeats.put(service.getId(), task); + ScheduledFuture previousTask = serviceHeartbeats.put(service.getId(), task); + if (previousTask != null) { + previousTask.cancel(true); + } } public void remove(String serviceId) {