From a6c4bc23ef555f1e7a53f17951dc1744ffa7ee89 Mon Sep 17 00:00:00 2001 From: 24kpure <1033237526@qq.com> Date: Wed, 13 Nov 2024 18:28:13 +0800 Subject: [PATCH] feat: ignore event whose modify time is out of date --- .../cloud/zookeeper/config/ConfigWatcher.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/spring-cloud-zookeeper-config/src/main/java/org/springframework/cloud/zookeeper/config/ConfigWatcher.java b/spring-cloud-zookeeper-config/src/main/java/org/springframework/cloud/zookeeper/config/ConfigWatcher.java index f9411ee6..c1539a22 100644 --- a/spring-cloud-zookeeper-config/src/main/java/org/springframework/cloud/zookeeper/config/ConfigWatcher.java +++ b/spring-cloud-zookeeper-config/src/main/java/org/springframework/cloud/zookeeper/config/ConfigWatcher.java @@ -111,11 +111,20 @@ public void close() { public void childEvent(CuratorFramework client, TreeCacheEvent event) throws Exception { TreeCacheEvent.Type eventType = event.getType(); - if (eventType == NODE_ADDED || eventType == NODE_REMOVED - || eventType == NODE_UPDATED) { - this.publisher - .publishEvent(new RefreshEvent(this, event, getEventDesc(event))); + if (eventType != NODE_ADDED && eventType != NODE_REMOVED + && eventType != NODE_UPDATED) { + return; } + + // ignore event whose modify time is out of date + String path = event.getData().getPath(); + long validTime = System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(1); + if (eventType == NODE_ADDED + && event.getData().getStat().getMtime() < validTime) { + return; + } + + this.publisher.publishEvent(new RefreshEvent(this, event, getEventDesc(event))); } public String getEventDesc(TreeCacheEvent event) {