fixed concurrent set properties NPE

This commit is contained in:
jianghang.loujh
2023-10-07 21:54:34 +08:00
parent ed754b5203
commit 0f6b9d156a

View File

@@ -168,7 +168,7 @@ public abstract class AbstractMysqlEventParser extends AbstractEventParser {
super.stop(); super.stop();
} }
protected void buildTableMetaTSDB(String tsdbSpringXml) { protected synchronized void buildTableMetaTSDB(String tsdbSpringXml) {
if (tableMetaTSDB != null) { if (tableMetaTSDB != null) {
return; return;
} }
@@ -178,12 +178,13 @@ public abstract class AbstractMysqlEventParser extends AbstractEventParser {
System.setProperty("canal.instance.tsdb.url", tsdbJdbcUrl); System.setProperty("canal.instance.tsdb.url", tsdbJdbcUrl);
System.setProperty("canal.instance.tsdb.dbUsername", tsdbJdbcUserName); System.setProperty("canal.instance.tsdb.dbUsername", tsdbJdbcUserName);
System.setProperty("canal.instance.tsdb.dbPassword", tsdbJdbcPassword); System.setProperty("canal.instance.tsdb.dbPassword", tsdbJdbcPassword);
System.setProperty("canal.instance.destination", destination);
// 初始化 // 初始化
this.tableMetaTSDB = tableMetaTSDBFactory.build(destination, tsdbSpringXml); this.tableMetaTSDB = tableMetaTSDBFactory.build(destination, tsdbSpringXml);
} catch (Throwable e) {
logger.warn("failed to build TableMetaTSDB ",e);
throw new CanalParseException(e);
} finally { } finally {
// reset // reset
System.setProperty("canal.instance.destination", "");
System.setProperty("canal.instance.tsdb.url", ""); System.setProperty("canal.instance.tsdb.url", "");
System.setProperty("canal.instance.tsdb.dbUsername", ""); System.setProperty("canal.instance.tsdb.dbUsername", "");
System.setProperty("canal.instance.tsdb.dbPassword", ""); System.setProperty("canal.instance.tsdb.dbPassword", "");
@@ -272,16 +273,10 @@ public abstract class AbstractMysqlEventParser extends AbstractEventParser {
public void setEnableTsdb(boolean enableTsdb) { public void setEnableTsdb(boolean enableTsdb) {
this.enableTsdb = enableTsdb; this.enableTsdb = enableTsdb;
if (this.enableTsdb) {
buildTableMetaTSDB(tsdbSpringXml);
}
} }
public void setTsdbSpringXml(String tsdbSpringXml) { public void setTsdbSpringXml(String tsdbSpringXml) {
this.tsdbSpringXml = tsdbSpringXml; this.tsdbSpringXml = tsdbSpringXml;
if (this.enableTsdb) {
buildTableMetaTSDB(tsdbSpringXml);
}
} }
public void setTableMetaTSDBFactory(TableMetaTSDBFactory tableMetaTSDBFactory) { public void setTableMetaTSDBFactory(TableMetaTSDBFactory tableMetaTSDBFactory) {