You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by da...@apache.org on 2024/07/08 09:19:23 UTC
(doris) branch branch-2.0 updated: [branch-2.0](routine-load) fix routine load job throw exception after commit (#31303) (#37432)
This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 90acc456cea [branch-2.0](routine-load) fix routine load job throw exception after commit (#31303) (#37432)
90acc456cea is described below
commit 90acc456ceaea3f204990fbab1679d5ed6a959f2
Author: hui lai <13...@qq.com>
AuthorDate: Mon Jul 8 17:19:15 2024 +0800
[branch-2.0](routine-load) fix routine load job throw exception after commit (#31303) (#37432)
pick #31303
Co-authored-by: HHoflittlefish777 <77...@users.noreply.github.com>
---
.../java/org/apache/doris/load/routineload/RoutineLoadJob.java | 10 ++++++++++
.../org/apache/doris/load/routineload/RoutineLoadJobTest.java | 1 -
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java
index 94ba7ac8e17..dff41e915f6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java
@@ -1010,6 +1010,16 @@ public abstract class RoutineLoadJob extends AbstractTxnStateChangeCallback impl
// find task in job
Optional<RoutineLoadTaskInfo> routineLoadTaskInfoOptional = routineLoadTaskInfoList.stream().filter(
entity -> entity.getTxnId() == txnState.getTransactionId()).findFirst();
+ if (!routineLoadTaskInfoOptional.isPresent()) {
+ // not find task in routineLoadTaskInfoList. this may happen in following case:
+ // the routine load job has been paused and before transaction committed.
+ // The routineLoadTaskInfoList will be cleared when job being paused.
+ // So the task can not be found here.
+ // This is a normal case, we just print a log here to observe.
+ LOG.info("Can not find task with transaction {} after committed, job: {}",
+ txnState.getTransactionId(), id);
+ return;
+ }
RoutineLoadTaskInfo routineLoadTaskInfo = routineLoadTaskInfoOptional.get();
taskBeId = routineLoadTaskInfo.getBeId();
executeTaskOnTxnStatusChanged(routineLoadTaskInfo, txnState, TransactionStatus.COMMITTED, null);
diff --git a/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadJobTest.java b/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadJobTest.java
index ba3ab2100be..88622df26c9 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadJobTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadJobTest.java
@@ -172,7 +172,6 @@ public class RoutineLoadJobTest {
Deencapsulation.setField(routineLoadJob, "progress", progress);
try {
routineLoadJob.afterCommitted(transactionState, true);
- Assert.assertEquals(RoutineLoadJob.JobState.PAUSED, routineLoadJob.getState());
} catch (TransactionException e) {
Assert.fail();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org