From d1a74dfc5639a2a92d6d0a1846647f90aea5b7ba Mon Sep 17 00:00:00 2001 From: mystarry-sky Date: Fri, 10 Jan 2025 11:39:57 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A9=BA=E8=A1=A8=E5=88=A4=E6=96=AD=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../check/slice/SliceCheckEventHandler.java | 10 +++++++++- .../extract/service/DataExtractServiceImpl.java | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/datachecker-check/src/main/java/org/opengauss/datachecker/check/slice/SliceCheckEventHandler.java b/datachecker-check/src/main/java/org/opengauss/datachecker/check/slice/SliceCheckEventHandler.java index 10331d0..7a27341 100644 --- a/datachecker-check/src/main/java/org/opengauss/datachecker/check/slice/SliceCheckEventHandler.java +++ b/datachecker-check/src/main/java/org/opengauss/datachecker/check/slice/SliceCheckEventHandler.java @@ -99,10 +99,18 @@ public class SliceCheckEventHandler { sliceCheckContext.addCheckResult(checkEvent.getSlice(), result); } + /** + * check table is empty + * source or sink any one is not empty, then table is not empty; + * source and sink both are empty, then table is empty + * + * @param tableName table name + * @return table has any rows + */ private boolean checkTableHasRows(String tableName) { TableMetadata sourceMeta = metaDataManager.getTableMetadata(Endpoint.SOURCE, tableName); TableMetadata sinkMeta = metaDataManager.getTableMetadata(Endpoint.SINK, tableName); - return sourceMeta.isExistTableRows() && sinkMeta.isExistTableRows(); + return sourceMeta.isExistTableRows() || sinkMeta.isExistTableRows(); } /** diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/service/DataExtractServiceImpl.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/service/DataExtractServiceImpl.java index f7b801a..5c10829 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/service/DataExtractServiceImpl.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/service/DataExtractServiceImpl.java @@ -536,8 +536,8 @@ public class DataExtractServiceImpl implements DataExtractService { registerCheckPoint(task, endpoint); }); LogUtils.info(log, "tableRegisterCheckPoint finished"); - long count = taskList.stream().filter(task -> task.getTableMetadata().isExistTableRows()).count(); - while (tableCheckPointCache.tableCount() != count) { + // 该出增加空表过滤逻辑,导致检查点注册线程不能终止。迁移失败,导致目标端数据为空,或者源端表迁移完成后,数据清空 + while (tableCheckPointCache.tableCount() != taskList.size()) { ThreadUtil.sleepHalfSecond(); } checkPointManager.close(); -- Gitee