فهرست منبع

always check whether ringbuffer has an exception in event processor (#2053)

soocold 5 سال پیش
والد
کامیت
066743cfd6
1فایلهای تغییر یافته به همراه7 افزوده شده و 7 حذف شده
  1. 7 7
      parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/MysqlMultiStageCoprocessor.java

+ 7 - 7
parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/MysqlMultiStageCoprocessor.java

@@ -190,17 +190,17 @@ public class MysqlMultiStageCoprocessor extends AbstractCanalLifeCycle implement
             return false;
             return false;
         }
         }
 
 
-        /**
-         * 由于改为processor仅终止自身stage而不是stop,那么需要由incident标识coprocessor是否正常工作。
-         * 让dump线程能够及时感知
-         */
-        if (exception != null) {
-            throw exception;
-        }
         boolean interupted = false;
         boolean interupted = false;
         long blockingStart = 0L;
         long blockingStart = 0L;
         int fullTimes = 0;
         int fullTimes = 0;
         do {
         do {
+            /**
+             * 由于改为processor仅终止自身stage而不是stop,那么需要由incident标识coprocessor是否正常工作。
+             * 让dump线程能够及时感知
+             */
+            if (exception != null) {
+                throw exception;
+            }
             try {
             try {
                 long next = disruptorMsgBuffer.tryNext();
                 long next = disruptorMsgBuffer.tryNext();
                 MessageEvent data = disruptorMsgBuffer.get(next);
                 MessageEvent data = disruptorMsgBuffer.get(next);