Bläddra i källkod

修复全量同步统计总数存在误差

AE86 2 år sedan
förälder
incheckning
d21837ae71

+ 6 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/puller/FullPuller.java

@@ -119,6 +119,7 @@ public class FullPuller extends AbstractPuller implements ApplicationListener<Fu
         // 记录结束时间
         task.setEndTime(Instant.now().toEpochMilli());
         task.setTableGroupIndex(ParserEnum.TABLE_GROUP_INDEX.getDefaultValue());
+        task.setFinished(true);
         flush(task);
     }
 
@@ -132,6 +133,11 @@ public class FullPuller extends AbstractPuller implements ApplicationListener<Fu
             meta.getTotal().set(finished);
         }
 
+        // 同步实际完成总数(读取的系统表存在误差,执行的过程中,总数可能有变化)
+        if(task.isFinished() && meta.getTotal().get() != finished){
+            meta.getTotal().set(finished);
+        }
+
         meta.setBeginTime(task.getBeginTime());
         meta.setEndTime(task.getEndTime());
         Map<String, String> snapshot = meta.getSnapshot();

+ 10 - 0
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/Task.java

@@ -16,6 +16,8 @@ public class Task {
 
     private long endTime;
 
+    private boolean finished;
+
     public Task() {
     }
 
@@ -80,6 +82,14 @@ public class Task {
         this.endTime = endTime;
     }
 
+    public boolean isFinished() {
+        return finished;
+    }
+
+    public void setFinished(boolean finished) {
+        this.finished = finished;
+    }
+
     public enum StateEnum {
         /**
          * 运行