Kaynağa Gözat

修复全量同步断线重试

Signed-off-by: AE86 <836391306@qq.com>
AE86 2 yıl önce
ebeveyn
işleme
77f6cf37c5

+ 2 - 1
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/MappingServiceImpl.java

@@ -214,7 +214,8 @@ public class MappingServiceImpl extends BaseServiceImpl implements MappingServic
     private void clearMetaIfFinished(String metaId) {
         Meta meta = manager.getMeta(metaId);
         Assert.notNull(meta, "Mapping meta can not be null.");
-        if (meta.getTotal().get() >= (meta.getSuccess().get() + meta.getFail().get())) {
+        // 完成任务则重置状态
+        if (meta.getTotal().get() <= (meta.getSuccess().get() + meta.getFail().get())) {
             meta.getFail().set(0);
             meta.getSuccess().set(0);
             manager.editMeta(meta);

+ 1 - 7
dbsyncer-manager/src/main/java/org/dbsyncer/manager/puller/FullPuller.java

@@ -106,10 +106,10 @@ public class FullPuller extends AbstractPuller implements ApplicationListener<Fu
 
         int i = task.getTableGroupIndex();
         while (i < list.size()){
+            parser.execute(task, mapping, list.get(i), executorService);
             if (!task.isRunning()) {
                 break;
             }
-            parser.execute(task, mapping, list.get(i), executorService);
             task.setPageIndex(ParserEnum.PAGE_INDEX.getDefaultValue());
             task.setCursor(null);
             task.setTableGroupIndex(++i);
@@ -119,7 +119,6 @@ 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);
     }
 
@@ -133,11 +132,6 @@ 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();

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

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