let tsdbSnapshotInterval config work correctly

This commit is contained in:
wuwo
2018-11-13 20:54:36 +08:00
parent 3f8cdafea3
commit 5ad9cf3f16
5 changed files with 32 additions and 27 deletions

View File

@@ -304,7 +304,6 @@ public class CanalInstanceWithManager extends AbstractCanalInstance {
} }
boolean tsdbEnable = BooleanUtils.toBoolean(parameters.getTsdbEnable()); boolean tsdbEnable = BooleanUtils.toBoolean(parameters.getTsdbEnable());
if (tsdbEnable) { if (tsdbEnable) {
mysqlEventParser.setEnableTsdb(tsdbEnable);
mysqlEventParser.setTableMetaTSDBFactory(new DefaultTableMetaTSDBFactory() { mysqlEventParser.setTableMetaTSDBFactory(new DefaultTableMetaTSDBFactory() {
@Override @Override
@@ -327,6 +326,7 @@ public class CanalInstanceWithManager extends AbstractCanalInstance {
} }
} }
}); });
mysqlEventParser.setEnableTsdb(tsdbEnable);
} }
eventParser = mysqlEventParser; eventParser = mysqlEventParser;
} else if (type.isLocalBinlog()) { } else if (type.isLocalBinlog()) {

View File

@@ -57,6 +57,7 @@ public class LocalBinlogEventParser extends AbstractMysqlEventParser implements
((DatabaseTableMeta) tableMetaTSDB).setBlackFilter(eventBlackFilter); ((DatabaseTableMeta) tableMetaTSDB).setBlackFilter(eventBlackFilter);
((DatabaseTableMeta) tableMetaTSDB).setSnapshotInterval(tsdbSnapshotInterval); ((DatabaseTableMeta) tableMetaTSDB).setSnapshotInterval(tsdbSnapshotInterval);
((DatabaseTableMeta) tableMetaTSDB).setSnapshotExpire(tsdbSnapshotExpire); ((DatabaseTableMeta) tableMetaTSDB).setSnapshotExpire(tsdbSnapshotExpire);
((DatabaseTableMeta) tableMetaTSDB).init(destination);
} }
tableMetaCache = new TableMetaCache(metaConnection, tableMetaTSDB); tableMetaCache = new TableMetaCache(metaConnection, tableMetaTSDB);

View File

@@ -124,6 +124,7 @@ public class MysqlEventParser extends AbstractMysqlEventParser implements CanalE
((DatabaseTableMeta) tableMetaTSDB).setBlackFilter(eventBlackFilter); ((DatabaseTableMeta) tableMetaTSDB).setBlackFilter(eventBlackFilter);
((DatabaseTableMeta) tableMetaTSDB).setSnapshotInterval(tsdbSnapshotInterval); ((DatabaseTableMeta) tableMetaTSDB).setSnapshotInterval(tsdbSnapshotInterval);
((DatabaseTableMeta) tableMetaTSDB).setSnapshotExpire(tsdbSnapshotExpire); ((DatabaseTableMeta) tableMetaTSDB).setSnapshotExpire(tsdbSnapshotExpire);
((DatabaseTableMeta) tableMetaTSDB).init(destination);
} }
tableMetaCache = new TableMetaCache(metaConnection, tableMetaTSDB); tableMetaCache = new TableMetaCache(metaConnection, tableMetaTSDB);

View File

@@ -10,6 +10,7 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@@ -62,9 +63,10 @@ public class DatabaseTableMeta implements TableMetaTSDB {
} }
}); });
private ReadWriteLock lock = new ReentrantReadWriteLock(); private ReadWriteLock lock = new ReentrantReadWriteLock();
private AtomicBoolean initialized = new AtomicBoolean(false);
private String destination; private String destination;
private MemoryTableMeta memoryTableMeta; private MemoryTableMeta memoryTableMeta;
private MysqlConnection connection; // 查询meta信息的链接 private volatile MysqlConnection connection; // 查询meta信息的链接
private CanalEventFilter filter; private CanalEventFilter filter;
private CanalEventFilter blackFilter; private CanalEventFilter blackFilter;
private EntryPosition lastPosition; private EntryPosition lastPosition;
@@ -81,6 +83,7 @@ public class DatabaseTableMeta implements TableMetaTSDB {
@Override @Override
public boolean init(final String destination) { public boolean init(final String destination) {
if (initialized.compareAndSet(false, true)) {
this.destination = destination; this.destination = destination;
this.memoryTableMeta = new MemoryTableMeta(); this.memoryTableMeta = new MemoryTableMeta();
@@ -109,6 +112,7 @@ public class DatabaseTableMeta implements TableMetaTSDB {
} }
}, snapshotInterval, snapshotInterval, TimeUnit.HOURS); }, snapshotInterval, snapshotInterval, TimeUnit.HOURS);
} }
}
return true; return true;
} }

View File

@@ -36,7 +36,6 @@ public class TableMetaTSDBBuilder {
} }
} }
TableMetaTSDB tableMetaTSDB = (TableMetaTSDB) applicationContext.getBean("tableMetaTSDB"); TableMetaTSDB tableMetaTSDB = (TableMetaTSDB) applicationContext.getBean("tableMetaTSDB");
tableMetaTSDB.init(destination);
logger.info("{} init TableMetaTSDB with {}", destination, springXml); logger.info("{} init TableMetaTSDB with {}", destination, springXml);
return tableMetaTSDB; return tableMetaTSDB;
} else { } else {