From d367e3cf01988a436bd96cf694e648666a4ee2eb Mon Sep 17 00:00:00 2001 From: meiyi Date: Sun, 3 Sep 2023 10:57:38 +0800 Subject: [PATCH] [fix](load) fix cancel load failed because Job could not be cancelled when job is finished or cancelled (#17730) --- .../java/org/apache/doris/load/loadv2/LoadManager.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/LoadManager.java b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/LoadManager.java index 278e23bba5..73d4d1a57a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/LoadManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/LoadManager.java @@ -270,13 +270,14 @@ public class LoadManager implements Writable { public void cancelLoadJob(CancelLoadStmt stmt) throws DdlException, AnalysisException { Database db = Env.getCurrentInternalCatalog().getDbOrDdlException(stmt.getDbName()); // List of load jobs waiting to be cancelled - List matchLoadJobs = Lists.newArrayList(); + List uncompletedLoadJob = Lists.newArrayList(); readLock(); try { Map> labelToLoadJobs = dbIdToLabelToLoadJobs.get(db.getId()); if (labelToLoadJobs == null) { throw new DdlException("Load job does not exist"); } + List matchLoadJobs = Lists.newArrayList(); addNeedCancelLoadJob(stmt, labelToLoadJobs.values().stream().flatMap(Collection::stream).collect(Collectors.toList()), matchLoadJobs); @@ -284,7 +285,7 @@ public class LoadManager implements Writable { throw new DdlException("Load job does not exist"); } // check state here - List uncompletedLoadJob = + uncompletedLoadJob = matchLoadJobs.stream().filter(entity -> !entity.isTxnDone()).collect(Collectors.toList()); if (uncompletedLoadJob.isEmpty()) { throw new DdlException("There is no uncompleted job"); @@ -292,7 +293,7 @@ public class LoadManager implements Writable { } finally { readUnlock(); } - for (LoadJob loadJob : matchLoadJobs) { + for (LoadJob loadJob : uncompletedLoadJob) { try { loadJob.cancelJob(new FailMsg(FailMsg.CancelType.USER_CANCEL, "user cancel")); } catch (DdlException e) {