瀏覽代碼

修复:MASTER_HEARTBEAT_PERIOD 的计量单位是秒(可以包含3位小数表示毫秒),但不是纳秒。

Wu-Jianqiang 7 年之前
父節點
當前提交
06e7f44114
共有 1 個文件被更改,包括 8 次插入2 次删除
  1. 8 2
      parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/MysqlConnection.java

+ 8 - 2
parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/MysqlConnection.java

@@ -297,9 +297,15 @@ public class MysqlConnection implements ErosaConnection {
             logger.warn("update mariadb_slave_capability failed", e);
         }
 
-        long periodNano = TimeUnit.SECONDS.toNanos(MASTER_HEARTBEAT_PERIOD_SECONDS);
+        /**
+         * MASTER_HEARTBEAT_PERIOD sets the interval in seconds between replication heartbeats. 
+         * Whenever the master's binary log is updated with an event, the waiting period for the next heartbeat is reset.
+         * interval is a decimal value having the range 0 to 4294967 seconds and a resolution in milliseconds; 
+         * the smallest nonzero value is 0.001. Heartbeats are sent by the master only if there are no unsent events 
+         * in the binary log file for a period longer than interval.
+         */
         try {
-            update("SET @master_heartbeat_period=" + periodNano);
+            update("SET @master_heartbeat_period=" + MASTER_HEARTBEAT_PERIOD_SECONDS);
         } catch (Exception e) {
             logger.warn("update master_heartbeat_period failed", e);
         }