From f66baeabf10f93980162121825847bc74becc539 Mon Sep 17 00:00:00 2001 From: binbin <542703524@qq.com> Date: Fri, 16 Apr 2021 22:03:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=80=E8=BF=91=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E8=A2=ABremove=E6=8E=89=EF=BC=8C=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E6=B6=88=E6=81=AF=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20(#3276)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/alibaba/otter/canal/meta/FileMixedMetaManager.java | 3 ++- .../com/alibaba/otter/canal/meta/PeriodMixedMetaManager.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/meta/src/main/java/com/alibaba/otter/canal/meta/FileMixedMetaManager.java b/meta/src/main/java/com/alibaba/otter/canal/meta/FileMixedMetaManager.java index bdf084ee..c0fefef3 100644 --- a/meta/src/main/java/com/alibaba/otter/canal/meta/FileMixedMetaManager.java +++ b/meta/src/main/java/com/alibaba/otter/canal/meta/FileMixedMetaManager.java @@ -91,6 +91,8 @@ public class FileMixedMetaManager extends MemoryMetaManager implements CanalMeta for (ClientIdentity clientIdentity : tasks) { MDC.put("destination", String.valueOf(clientIdentity.getDestination())); try { + updateCursorTasks.remove(clientIdentity); + // 定时将内存中的最新值刷到file中,多次变更只刷一次 if (logger.isInfoEnabled()) { LogPosition cursor = (LogPosition) getCursor(clientIdentity); @@ -100,7 +102,6 @@ public class FileMixedMetaManager extends MemoryMetaManager implements CanalMeta cursor.getIdentity().getSourceAddress().toString()); } flushDataToFile(clientIdentity.getDestination()); - updateCursorTasks.remove(clientIdentity); } catch (Throwable e) { // ignore logger.error("period update" + clientIdentity.toString() + " curosr failed!", e); diff --git a/meta/src/main/java/com/alibaba/otter/canal/meta/PeriodMixedMetaManager.java b/meta/src/main/java/com/alibaba/otter/canal/meta/PeriodMixedMetaManager.java index 55180bd4..70a21142 100644 --- a/meta/src/main/java/com/alibaba/otter/canal/meta/PeriodMixedMetaManager.java +++ b/meta/src/main/java/com/alibaba/otter/canal/meta/PeriodMixedMetaManager.java @@ -79,9 +79,10 @@ public class PeriodMixedMetaManager extends MemoryMetaManager implements CanalMe List tasks = new ArrayList<>(updateCursorTasks); for (ClientIdentity clientIdentity : tasks) { try { + updateCursorTasks.remove(clientIdentity); + // 定时将内存中的最新值刷到zookeeper中,多次变更只刷一次 zooKeeperMetaManager.updateCursor(clientIdentity, getCursor(clientIdentity)); - updateCursorTasks.remove(clientIdentity); } catch (Throwable e) { // ignore logger.error("period update" + clientIdentity.toString() + " curosr failed!", e);