From 1d654aff2d36ec42366c11564c7a59a15b1d5379 Mon Sep 17 00:00:00 2001 From: zhangdong Date: Fri, 7 Mar 2025 19:44:00 +0800 Subject: [PATCH] 1 --- .../org/apache/doris/job/extensions/mtmv/MTMVTask.java | 9 +++++++++ regression-test/suites/mtmv_p0/test_task_mtmv.groovy | 3 +++ 2 files changed, 12 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVTask.java b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVTask.java index 016d0a1d495983..4f91592aadb596 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVTask.java @@ -331,6 +331,9 @@ private String getDummyStmt(Set refreshPartitionNames) { public synchronized void onFail() throws JobException { LOG.info("mtmv task onFail, taskId: {}", super.getTaskId()); super.onFail(); + if (super.getStatus() != TaskStatus.FAILED) { + return; + } after(); } @@ -340,12 +343,18 @@ public synchronized void onSuccess() throws JobException { LOG.debug("mtmv task onSuccess, taskId: {}", super.getTaskId()); } super.onSuccess(); + if (super.getStatus() != TaskStatus.SUCCESS) { + return; + } after(); } @Override protected synchronized void executeCancelLogic(boolean needWaitCancelComplete) { LOG.info("mtmv task cancel, taskId: {}", super.getTaskId()); + if (super.getStatus() != TaskStatus.CANCELED) { + return; + } if (executor != null) { executor.cancel(new Status(TStatusCode.CANCELLED, "mtmv task cancelled"), needWaitCancelComplete); } diff --git a/regression-test/suites/mtmv_p0/test_task_mtmv.groovy b/regression-test/suites/mtmv_p0/test_task_mtmv.groovy index 72356b45a7942a..41859ddeefef29 100644 --- a/regression-test/suites/mtmv_p0/test_task_mtmv.groovy +++ b/regression-test/suites/mtmv_p0/test_task_mtmv.groovy @@ -57,6 +57,9 @@ suite("test_task_mtmv") { log.info("cancel error msg: " + e.getMessage()) assertTrue(e.getMessage().contains("no running task")); } + def tasksAfterCancel = sql """ select TaskId from tasks('type'='mv') where MvName = '${mvName}';""" + // should only has one task after cancel + assertEquals(1, tasksAfterCancel.size()); sql """drop materialized view if exists ${mvName};""" }