From e64790d685bb5e4d69963b8de6fef001432cbbf5 Mon Sep 17 00:00:00 2001 From: morningman Date: Fri, 6 Aug 2021 23:23:10 +0800 Subject: [PATCH 1/3] [RoutineLoad] Support pause or resume all routine load jobs 1. PAUSE ALL ROUTINE LOAD; 2. RESUME ALL ROUTINE LOAD; --- fe/fe-core/src/main/cup/sql_parser.cup | 8 ++ .../doris/analysis/PauseRoutineLoadStmt.java | 25 ++++- .../doris/analysis/ResumeRoutineLoadStmt.java | 25 ++++- .../load/routineload/RoutineLoadManager.java | 106 ++++++++++++++---- 4 files changed, 132 insertions(+), 32 deletions(-) diff --git a/fe/fe-core/src/main/cup/sql_parser.cup b/fe/fe-core/src/main/cup/sql_parser.cup index f71647a0aec321..528103437a9dd1 100644 --- a/fe/fe-core/src/main/cup/sql_parser.cup +++ b/fe/fe-core/src/main/cup/sql_parser.cup @@ -1666,6 +1666,10 @@ pause_routine_load_stmt ::= {: RESULT = new PauseRoutineLoadStmt(jobLabel); :} + | KW_PAUSE KW_ALL KW_ROUTINE KW_LOAD + {: + RESULT = new PauseRoutineLoadStmt(null); + :} ; resume_routine_load_stmt ::= @@ -1673,6 +1677,10 @@ resume_routine_load_stmt ::= {: RESULT = new ResumeRoutineLoadStmt(jobLabel); :} + | KW_RESUME KW_ALL KW_ROUTINE KW_LOAD + {: + RESULT = new ResumeRoutineLoadStmt(null); + :} ; stop_routine_load_stmt ::= diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java index 19ae0c2f851b47..2f89fcd7107655 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java @@ -17,9 +17,13 @@ package org.apache.doris.analysis; -import org.apache.doris.common.AnalysisException; +import org.apache.doris.cluster.ClusterNamespace; +import org.apache.doris.common.ErrorCode; +import org.apache.doris.common.ErrorReport; import org.apache.doris.common.UserException; +import com.google.common.base.Strings; + /* Pause routine load by name @@ -29,22 +33,35 @@ public class PauseRoutineLoadStmt extends DdlStmt { private final LabelName labelName; + private String db; public PauseRoutineLoadStmt(LabelName labelName) { this.labelName = labelName; } + public boolean showAll() { + return labelName == null; + } + public String getName() { return labelName.getLabelName(); } public String getDbFullName(){ - return labelName.getDbName(); + return db; } @Override - public void analyze(Analyzer analyzer) throws AnalysisException, UserException { + public void analyze(Analyzer analyzer) throws UserException { super.analyze(analyzer); - labelName.analyze(analyzer); + if (labelName != null) { + labelName.analyze(analyzer); + db = labelName.getDbName(); + } else { + if (Strings.isNullOrEmpty(analyzer.getDefaultDb())) { + ErrorReport.reportAnalysisException(ErrorCode.ERR_NO_DB_ERROR); + } + db = ClusterNamespace.getFullName(analyzer.getClusterName(), analyzer.getDefaultDb()); + } } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java index ca31856b92184c..c89a6f3c894063 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java @@ -17,9 +17,13 @@ package org.apache.doris.analysis; -import org.apache.doris.common.AnalysisException; +import org.apache.doris.cluster.ClusterNamespace; +import org.apache.doris.common.ErrorCode; +import org.apache.doris.common.ErrorReport; import org.apache.doris.common.UserException; +import com.google.common.base.Strings; + /* Resume routine load job by name @@ -29,22 +33,35 @@ public class ResumeRoutineLoadStmt extends DdlStmt{ private final LabelName labelName; + private String db; public ResumeRoutineLoadStmt(LabelName labelName) { this.labelName = labelName; } + public boolean showAll() { + return labelName == null; + } + public String getName() { return labelName.getLabelName(); } public String getDbFullName() { - return labelName.getDbName(); + return db; } @Override - public void analyze(Analyzer analyzer) throws AnalysisException, UserException { + public void analyze(Analyzer analyzer) throws UserException { super.analyze(analyzer); - labelName.analyze(analyzer); + if (labelName != null) { + labelName.analyze(analyzer); + db = labelName.getDbName(); + } else { + if (Strings.isNullOrEmpty(analyzer.getDefaultDb())) { + ErrorReport.reportAnalysisException(ErrorCode.ERR_NO_DB_ERROR); + } + db = ClusterNamespace.getFullName(analyzer.getClusterName(), analyzer.getDefaultDb()); + } } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java index 045fbd1128493c..a41735570435bd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java @@ -41,14 +41,14 @@ import org.apache.doris.persist.RoutineLoadOperation; import org.apache.doris.qe.ConnectContext; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; @@ -232,34 +232,92 @@ public RoutineLoadJob checkPrivAndGetJob(String dbName, String jobName) return routineLoadJob; } + // get all jobs which state is not in final state from specified database + public List checkPrivAndGetAllJobs(String dbName) + throws MetaNotFoundException, DdlException, AnalysisException { + + List result = Lists.newArrayList(); + Database database = Catalog.getCurrentCatalog().getDb(dbName); + if (database == null) { + throw new MetaNotFoundException("failed to find database: " + dbName); + } + long dbId = database.getId(); + Map> jobMap = dbToNameToRoutineLoadJob.get(dbId); + if (jobMap == null) { + throw new MetaNotFoundException("failed to find routine load jobs with databas id: " + dbId); + } + + for (List jobs : jobMap.values()) { + for (RoutineLoadJob job : jobs) { + if (!job.getState().isFinalState()) { + String tableName = job.getTableName(); + if (!Catalog.getCurrentCatalog().getAuth().checkTblPriv(ConnectContext.get(), + dbName, tableName, PrivPredicate.LOAD)) { + continue; + } + result.add(job); + } + } + } + + return result; + } + public void pauseRoutineLoadJob(PauseRoutineLoadStmt pauseRoutineLoadStmt) throws UserException { - RoutineLoadJob routineLoadJob = checkPrivAndGetJob(pauseRoutineLoadStmt.getDbFullName(), - pauseRoutineLoadStmt.getName()); + List jobs = Lists.newArrayList(); + if (pauseRoutineLoadStmt.showAll()) { + jobs = checkPrivAndGetAllJobs(pauseRoutineLoadStmt.getDbFullName()); + } else { + RoutineLoadJob routineLoadJob = checkPrivAndGetJob(pauseRoutineLoadStmt.getDbFullName(), + pauseRoutineLoadStmt.getName()); + jobs.add(routineLoadJob); + } - routineLoadJob.updateState(RoutineLoadJob.JobState.PAUSED, - new ErrorReason(InternalErrorCode.MANUAL_PAUSE_ERR, - "User " + ConnectContext.get().getQualifiedUser() + " pauses routine load job"), - false /* not replay */); - LOG.info(new LogBuilder(LogKey.ROUTINE_LOAD_JOB, routineLoadJob.getId()).add("current_state", - routineLoadJob.getState()).add("user", ConnectContext.get().getQualifiedUser()).add("msg", + for (RoutineLoadJob routineLoadJob : jobs) { + try { + routineLoadJob.updateState(RoutineLoadJob.JobState.PAUSED, + new ErrorReason(InternalErrorCode.MANUAL_PAUSE_ERR, + "User " + ConnectContext.get().getQualifiedUser() + " pauses routine load job"), + false /* not replay */); + LOG.info(new LogBuilder(LogKey.ROUTINE_LOAD_JOB, routineLoadJob.getId()).add("current_state", + routineLoadJob.getState()).add("user", ConnectContext.get().getQualifiedUser()).add("msg", "routine load job has been paused by user").build()); + } catch (UserException e) { + LOG.warn("failed to pause routine load job {}", routineLoadJob.getName(), e); + continue; + } + } } public void resumeRoutineLoadJob(ResumeRoutineLoadStmt resumeRoutineLoadStmt) throws UserException { - RoutineLoadJob routineLoadJob = checkPrivAndGetJob(resumeRoutineLoadStmt.getDbFullName(), - resumeRoutineLoadStmt.getName()); - - routineLoadJob.jobStatistic.errorRowsAfterResumed = 0; - routineLoadJob.autoResumeCount = 0; - routineLoadJob.firstResumeTimestamp = 0; - routineLoadJob.autoResumeLock = false; - routineLoadJob.updateState(RoutineLoadJob.JobState.NEED_SCHEDULE, null, false /* not replay */); - LOG.info(new LogBuilder(LogKey.ROUTINE_LOAD_JOB, routineLoadJob.getId()) - .add("current_state", routineLoadJob.getState()) - .add("user", ConnectContext.get().getQualifiedUser()) - .add("msg", "routine load job has been resumed by user") - .build()); + + List jobs = Lists.newArrayList(); + if (resumeRoutineLoadStmt.showAll()) { + jobs = checkPrivAndGetAllJobs(resumeRoutineLoadStmt.getDbFullName()); + } else { + RoutineLoadJob routineLoadJob = checkPrivAndGetJob(resumeRoutineLoadStmt.getDbFullName(), + resumeRoutineLoadStmt.getName()); + jobs.add(routineLoadJob); + } + + for (RoutineLoadJob routineLoadJob : jobs) { + try { + routineLoadJob.jobStatistic.errorRowsAfterResumed = 0; + routineLoadJob.autoResumeCount = 0; + routineLoadJob.firstResumeTimestamp = 0; + routineLoadJob.autoResumeLock = false; + routineLoadJob.updateState(RoutineLoadJob.JobState.NEED_SCHEDULE, null, false /* not replay */); + LOG.info(new LogBuilder(LogKey.ROUTINE_LOAD_JOB, routineLoadJob.getId()) + .add("current_state", routineLoadJob.getState()) + .add("user", ConnectContext.get().getQualifiedUser()) + .add("msg", "routine load job has been resumed by user") + .build()); + } catch (UserException e) { + LOG.warn("failed to resume routine load job {}", routineLoadJob.getName(), e); + continue; + } + } } public void stopRoutineLoadJob(StopRoutineLoadStmt stopRoutineLoadStmt) From 1137330f0230effbe075428ccd410f320323bf0a Mon Sep 17 00:00:00 2001 From: morningman Date: Sat, 7 Aug 2021 18:10:23 +0800 Subject: [PATCH 2/3] fix bug --- .../doris/analysis/PauseRoutineLoadStmt.java | 2 +- .../doris/analysis/ResumeRoutineLoadStmt.java | 2 +- .../load/routineload/RoutineLoadManager.java | 4 +- .../routineload/RoutineLoadManagerTest.java | 70 ++++++++++++++++++- 4 files changed, 71 insertions(+), 7 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java index 2f89fcd7107655..49f07f917ff445 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java @@ -39,7 +39,7 @@ public PauseRoutineLoadStmt(LabelName labelName) { this.labelName = labelName; } - public boolean showAll() { + public boolean isAll() { return labelName == null; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java index c89a6f3c894063..888d0327ab6f0c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java @@ -39,7 +39,7 @@ public ResumeRoutineLoadStmt(LabelName labelName) { this.labelName = labelName; } - public boolean showAll() { + public boolean isAll() { return labelName == null; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java index a41735570435bd..bb5e75e4f3abdf 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java @@ -266,7 +266,7 @@ public List checkPrivAndGetAllJobs(String dbName) public void pauseRoutineLoadJob(PauseRoutineLoadStmt pauseRoutineLoadStmt) throws UserException { List jobs = Lists.newArrayList(); - if (pauseRoutineLoadStmt.showAll()) { + if (pauseRoutineLoadStmt.isAll()) { jobs = checkPrivAndGetAllJobs(pauseRoutineLoadStmt.getDbFullName()); } else { RoutineLoadJob routineLoadJob = checkPrivAndGetJob(pauseRoutineLoadStmt.getDbFullName(), @@ -293,7 +293,7 @@ public void pauseRoutineLoadJob(PauseRoutineLoadStmt pauseRoutineLoadStmt) public void resumeRoutineLoadJob(ResumeRoutineLoadStmt resumeRoutineLoadStmt) throws UserException { List jobs = Lists.newArrayList(); - if (resumeRoutineLoadStmt.showAll()) { + if (resumeRoutineLoadStmt.isAll()) { jobs = checkPrivAndGetAllJobs(resumeRoutineLoadStmt.getDbFullName()); } else { RoutineLoadJob routineLoadJob = checkPrivAndGetJob(resumeRoutineLoadStmt.getDbFullName(), diff --git a/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadManagerTest.java b/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadManagerTest.java index fb8fe9bd44fb43..46215776dc903c 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadManagerTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadManagerTest.java @@ -45,14 +45,14 @@ import org.apache.doris.system.SystemInfoService; import org.apache.doris.thrift.TResourceInfo; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.Assert; import org.junit.Test; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; + import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -913,4 +913,68 @@ public void testAlterRoutineLoadJob(@Injectable StopRoutineLoadStmt stopRoutineL Assert.assertEquals(RoutineLoadJob.JobState.STOPPED, routineLoadJob.getState()); } + + @Test + public void testPauseAndResumeAllRoutineLoadJob(@Injectable PauseRoutineLoadStmt pauseRoutineLoadStmt, + @Injectable ResumeRoutineLoadStmt resumeRoutineLoadStmt, + @Mocked Catalog catalog, + @Mocked Database database, + @Mocked PaloAuth paloAuth, + @Mocked ConnectContext connectContext) throws UserException { + RoutineLoadManager routineLoadManager = new RoutineLoadManager(); + Map>> dbToNameToRoutineLoadJob = Maps.newHashMap(); + Map> nameToRoutineLoadJob = Maps.newHashMap(); + + List routineLoadJobList1 = Lists.newArrayList(); + RoutineLoadJob routineLoadJob1 = new KafkaRoutineLoadJob(); + Deencapsulation.setField(routineLoadJob1, "id", 1000L); + routineLoadJobList1.add(routineLoadJob1); + + List routineLoadJobList2 = Lists.newArrayList(); + RoutineLoadJob routineLoadJob2 = new KafkaRoutineLoadJob(); + Deencapsulation.setField(routineLoadJob2, "id", 1002L); + routineLoadJobList2.add(routineLoadJob2); + + nameToRoutineLoadJob.put("job1", routineLoadJobList1); + nameToRoutineLoadJob.put("job2", routineLoadJobList2); + dbToNameToRoutineLoadJob.put(1L, nameToRoutineLoadJob); + Deencapsulation.setField(routineLoadManager, "dbToNameToRoutineLoadJob", dbToNameToRoutineLoadJob); + + Assert.assertEquals(RoutineLoadJob.JobState.NEED_SCHEDULE, routineLoadJob1.getState()); + Assert.assertEquals(RoutineLoadJob.JobState.NEED_SCHEDULE, routineLoadJob1.getState()); + + new Expectations() { + { + pauseRoutineLoadStmt.isAll(); + minTimes = 0; + result = true; + pauseRoutineLoadStmt.getDbFullName(); + minTimes = 0; + result = ""; + catalog.getDb(""); + minTimes = 0; + result = database; + database.getId(); + minTimes = 0; + result = 1L; + catalog.getAuth(); + minTimes = 0; + result = paloAuth; + paloAuth.checkTblPriv((ConnectContext) any, anyString, anyString, (PrivPredicate) any); + minTimes = 0; + result = true; + resumeRoutineLoadStmt.isAll(); + minTimes = 0; + result = true; + } + }; + + routineLoadManager.pauseRoutineLoadJob(pauseRoutineLoadStmt); + Assert.assertEquals(RoutineLoadJob.JobState.PAUSED, routineLoadJob1.getState()); + Assert.assertEquals(RoutineLoadJob.JobState.PAUSED, routineLoadJob2.getState()); + + routineLoadManager.resumeRoutineLoadJob(resumeRoutineLoadStmt); + Assert.assertEquals(RoutineLoadJob.JobState.NEED_SCHEDULE, routineLoadJob1.getState()); + Assert.assertEquals(RoutineLoadJob.JobState.NEED_SCHEDULE, routineLoadJob2.getState()); + } } From 7fbb521bc46c7716f646f7b512214596b7ccf35d Mon Sep 17 00:00:00 2001 From: morningman Date: Tue, 10 Aug 2021 18:55:21 +0800 Subject: [PATCH 3/3] add doc --- .../Data Manipulation/PAUSE ROUTINE LOAD.md | 11 ++++++++--- .../Data Manipulation/RESUME ROUTINE LOAD.md | 11 ++++++++--- .../Data Manipulation/PAUSE ROUTINE LOAD.md | 6 +++++- .../Data Manipulation/RESUME ROUTINE LOAD.md | 7 ++++++- .../doris/load/routineload/RoutineLoadManager.java | 11 ++++++----- .../load/routineload/RoutineLoadManagerTest.java | 6 +++--- 6 files changed, 36 insertions(+), 16 deletions(-) diff --git a/docs/en/sql-reference/sql-statements/Data Manipulation/PAUSE ROUTINE LOAD.md b/docs/en/sql-reference/sql-statements/Data Manipulation/PAUSE ROUTINE LOAD.md index 7b98035a136ee4..92c157a4341bef 100644 --- a/docs/en/sql-reference/sql-statements/Data Manipulation/PAUSE ROUTINE LOAD.md +++ b/docs/en/sql-reference/sql-statements/Data Manipulation/PAUSE ROUTINE LOAD.md @@ -27,9 +27,14 @@ under the License. # PAUSE ROUTINE LOAD ## example -1. Suspend the routine import operation named test 1. +1. Pause routine load named test1; -PAUSE ROUTINE LOAD FOR test1; + PAUSE ROUTINE LOAD FOR test1; + +2. Pause all running routine load; + + PAUSE ALL ROUTINE LOAD; ## keyword -PAUSE,ROUTINE,LOAD + + PAUSE,ALL,ROUTINE,LOAD diff --git a/docs/en/sql-reference/sql-statements/Data Manipulation/RESUME ROUTINE LOAD.md b/docs/en/sql-reference/sql-statements/Data Manipulation/RESUME ROUTINE LOAD.md index 78d475545398b4..26a499b1dc0a9b 100644 --- a/docs/en/sql-reference/sql-statements/Data Manipulation/RESUME ROUTINE LOAD.md +++ b/docs/en/sql-reference/sql-statements/Data Manipulation/RESUME ROUTINE LOAD.md @@ -27,9 +27,14 @@ under the License. # RESUME ROUTINE LOAD ## example -1. Restore the routine import job named test 1. +1. Resume routine load job named test1. -RESUME ROUTINE LOAD FOR test1; + RESUME ROUTINE LOAD FOR test1; + +2. Resume all paused routine load job. + + RESUME ALL ROUTINE LOAD; ## keyword -RESUME,ROUTINE,LOAD + + RESUME,ALL,ROUTINE,LOAD diff --git a/docs/zh-CN/sql-reference/sql-statements/Data Manipulation/PAUSE ROUTINE LOAD.md b/docs/zh-CN/sql-reference/sql-statements/Data Manipulation/PAUSE ROUTINE LOAD.md index 85f8c866aea773..4a880957eceb64 100644 --- a/docs/zh-CN/sql-reference/sql-statements/Data Manipulation/PAUSE ROUTINE LOAD.md +++ b/docs/zh-CN/sql-reference/sql-statements/Data Manipulation/PAUSE ROUTINE LOAD.md @@ -31,6 +31,10 @@ under the License. PAUSE ROUTINE LOAD FOR test1; +2. 暂停所有正在运行的例行导入作业 + + PAUSE ALL ROUTINE LOAD; + ## keyword - PAUSE,ROUTINE,LOAD + PAUSE,ALL,ROUTINE,LOAD diff --git a/docs/zh-CN/sql-reference/sql-statements/Data Manipulation/RESUME ROUTINE LOAD.md b/docs/zh-CN/sql-reference/sql-statements/Data Manipulation/RESUME ROUTINE LOAD.md index 9a3730b2ac2dc9..5afa216b60e381 100644 --- a/docs/zh-CN/sql-reference/sql-statements/Data Manipulation/RESUME ROUTINE LOAD.md +++ b/docs/zh-CN/sql-reference/sql-statements/Data Manipulation/RESUME ROUTINE LOAD.md @@ -31,6 +31,11 @@ under the License. RESUME ROUTINE LOAD FOR test1; +2. 恢复所有暂停中的例行导入作业。 + + RESUME ALL ROUTINE LOAD; + ## keyword - RESUME,ROUTINE,LOAD + + RESUME,ALL,ROUTINE,LOAD diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java index bb5e75e4f3abdf..7b7e62faa9b803 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java @@ -41,14 +41,14 @@ import org.apache.doris.persist.RoutineLoadOperation; import org.apache.doris.qe.ConnectContext; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; @@ -239,12 +239,13 @@ public List checkPrivAndGetAllJobs(String dbName) List result = Lists.newArrayList(); Database database = Catalog.getCurrentCatalog().getDb(dbName); if (database == null) { - throw new MetaNotFoundException("failed to find database: " + dbName); + ErrorReport.reportDdlException(ErrorCode.ERR_BAD_DB_ERROR, dbName); } long dbId = database.getId(); Map> jobMap = dbToNameToRoutineLoadJob.get(dbId); if (jobMap == null) { - throw new MetaNotFoundException("failed to find routine load jobs with databas id: " + dbId); + // return empty result + return result; } for (List jobs : jobMap.values()) { diff --git a/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadManagerTest.java b/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadManagerTest.java index 46215776dc903c..f66b1972121688 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadManagerTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadManagerTest.java @@ -45,14 +45,14 @@ import org.apache.doris.system.SystemInfoService; import org.apache.doris.thrift.TResourceInfo; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.Assert; import org.junit.Test; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - import java.util.ArrayList; import java.util.List; import java.util.Map;