瀏覽代碼

fix filter transaction entry logic in EntryEventSink

lileibuaa 6 年之前
父節點
當前提交
f1a998b2d5
共有 1 個文件被更改,包括 4 次插入3 次删除
  1. 4 3
      sink/src/main/java/com/alibaba/otter/canal/sink/entry/EntryEventSink.java

+ 4 - 3
sink/src/main/java/com/alibaba/otter/canal/sink/entry/EntryEventSink.java

@@ -100,11 +100,12 @@ public class EntryEventSink extends AbstractCanalEventSink<List<CanalEntry.Entry
                 && (entry.getEntryType() == EntryType.TRANSACTIONBEGIN || entry.getEntryType() == EntryType.TRANSACTIONEND)) {
                 long currentTimestamp = entry.getHeader().getExecuteTime();
                 // 基于一定的策略控制,放过空的事务头和尾,便于及时更新数据库位点,表明工作正常
-                if (Math.abs(currentTimestamp - lastTransactionTimestamp) > emptyTransactionInterval
-                    || lastTransactionCount.incrementAndGet() > emptyTransctionThresold) {
+                if (lastTransactionCount.incrementAndGet() <= emptyTransctionThresold
+                    && Math.abs(currentTimestamp - lastTransactionTimestamp) <= emptyTransactionInterval) {
+                    continue;
+                } else {
                     lastTransactionCount.set(0L);
                     lastTransactionTimestamp = currentTimestamp;
-                    continue;
                 }
             }