Ver código fonte

fixed issue #1107 , more info message

jiangahng.loujh 6 anos atrás
pai
commit
2c1f3e649a

+ 7 - 2
parse/src/main/java/com/alibaba/otter/canal/parse/inbound/AbstractEventParser.java

@@ -181,6 +181,8 @@ public abstract class AbstractEventParser<EVENT> extends AbstractCanalLifeCycle
                             serverId = queryServerId;
                         }
                         // 4. 获取最后的位置信息
+                        long start = System.currentTimeMillis();
+                        logger.warn("---> begin to find start position, it will be long time for reset or first position");
                         EntryPosition position = findStartPosition(erosaConnection);
                         final EntryPosition startPosition = position;
                         if (startPosition == null) {
@@ -191,7 +193,10 @@ public abstract class AbstractEventParser<EVENT> extends AbstractCanalLifeCycle
                             throw new CanalParseException("can't find init table meta for " + destination
                                                           + " with position : " + startPosition);
                         }
-                        logger.warn("find start position : {}", startPosition.toString());
+                        long end = System.currentTimeMillis();
+                        logger.warn("---> find start position successfully, {}", startPosition.toString() + " cost : "
+                                                                                 + (end - start)
+                                                                                 + "ms , the next step is binlog dump");
                         // 重新链接,因为在找position过程中可能有状态,需要断开后重建
                         erosaConnection.reconnect();
 
@@ -417,7 +422,7 @@ public abstract class AbstractEventParser<EVENT> extends AbstractCanalLifeCycle
     }
 
     protected LogPosition buildLastTransactionPosition(List<CanalEntry.Entry> entries) { // 初始化一下
-        for (int i = entries.size() - 1; i >= 0; i--) {
+        for (int i = entries.size() - 1; i > 0; i--) {
             CanalEntry.Entry entry = entries.get(i);
             if (entry.getEntryType() == CanalEntry.EntryType.TRANSACTIONEND) {// 尽量记录一个事务做为position
                 return buildLastPosition(entry);