From 4a22d72ef4ec3d7cc7d19546a6403c199873aaef Mon Sep 17 00:00:00 2001 From: "jianghang.loujh" Date: Mon, 16 May 2022 19:46:34 +0800 Subject: [PATCH] fixed issue #4018, fixed CanalInstanceWithManager thread-safe --- .../manager/CanalInstanceWithManager.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/instance/manager/src/main/java/com/alibaba/otter/canal/instance/manager/CanalInstanceWithManager.java b/instance/manager/src/main/java/com/alibaba/otter/canal/instance/manager/CanalInstanceWithManager.java index 24768711..a969f85f 100644 --- a/instance/manager/src/main/java/com/alibaba/otter/canal/instance/manager/CanalInstanceWithManager.java +++ b/instance/manager/src/main/java/com/alibaba/otter/canal/instance/manager/CanalInstanceWithManager.java @@ -347,16 +347,18 @@ public class CanalInstanceWithManager extends AbstractCanalInstance { @Override public TableMetaTSDB build(String destination, String springXml) { - try { - System.setProperty("canal.instance.tsdb.url", parameters.getTsdbJdbcUrl()); - System.setProperty("canal.instance.tsdb.dbUsername", parameters.getTsdbJdbcUserName()); - System.setProperty("canal.instance.tsdb.dbPassword", parameters.getTsdbJdbcPassword()); + synchronized (CanalInstanceWithManager.class) { + try { + System.setProperty("canal.instance.tsdb.url", parameters.getTsdbJdbcUrl()); + System.setProperty("canal.instance.tsdb.dbUsername", parameters.getTsdbJdbcUserName()); + System.setProperty("canal.instance.tsdb.dbPassword", parameters.getTsdbJdbcPassword()); - return TableMetaTSDBBuilder.build(destination, "classpath:spring/tsdb/mysql-tsdb.xml"); - } finally { - System.setProperty("canal.instance.tsdb.url", ""); - System.setProperty("canal.instance.tsdb.dbUsername", ""); - System.setProperty("canal.instance.tsdb.dbPassword", ""); + return TableMetaTSDBBuilder.build(destination, "classpath:spring/tsdb/mysql-tsdb.xml"); + } finally { + System.setProperty("canal.instance.tsdb.url", ""); + System.setProperty("canal.instance.tsdb.dbUsername", ""); + System.setProperty("canal.instance.tsdb.dbPassword", ""); + } } } });