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 a25cd99985892e..9ecd0b78787a8f 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 @@ -1635,24 +1635,28 @@ public List getShowInfo() { public List> getTasksShowInfo() throws AnalysisException { List> rows = Lists.newArrayList(); - if (null == routineLoadTaskInfoList || routineLoadTaskInfoList.isEmpty()) { + readLock(); + try { + if (null == routineLoadTaskInfoList || routineLoadTaskInfoList.isEmpty()) { + return rows; + } + routineLoadTaskInfoList.forEach(entity -> { + long txnId = entity.getTxnId(); + if (RoutineLoadTaskInfo.INIT_TXN_ID == txnId) { + rows.add(entity.getTaskShowInfo()); + return; + } + TransactionState transactionState = Env.getCurrentGlobalTransactionMgr() + .getTransactionState(dbId, entity.getTxnId()); + if (null != transactionState && null != transactionState.getTransactionStatus()) { + entity.setTxnStatus(transactionState.getTransactionStatus()); + } + rows.add(entity.getTaskShowInfo()); + }); return rows; + } finally { + readUnlock(); } - - routineLoadTaskInfoList.forEach(entity -> { - long txnId = entity.getTxnId(); - if (RoutineLoadTaskInfo.INIT_TXN_ID == txnId) { - rows.add(entity.getTaskShowInfo()); - return; - } - TransactionState transactionState = Env.getCurrentGlobalTransactionMgr() - .getTransactionState(dbId, entity.getTxnId()); - if (null != transactionState && null != transactionState.getTransactionStatus()) { - entity.setTxnStatus(transactionState.getTransactionStatus()); - } - rows.add(entity.getTaskShowInfo()); - }); - return rows; } public String getShowCreateInfo() { @@ -1768,12 +1772,17 @@ public List getShowStatistic() { private String getTaskStatistic() { Map result = Maps.newHashMap(); - result.put("running_task", - String.valueOf(routineLoadTaskInfoList.stream().filter(entity -> entity.isRunning()).count())); - result.put("waiting_task", - String.valueOf(routineLoadTaskInfoList.stream().filter(entity -> !entity.isRunning()).count())); - Gson gson = new GsonBuilder().disableHtmlEscaping().create(); - return gson.toJson(result); + readLock(); + try { + result.put("running_task", + String.valueOf(routineLoadTaskInfoList.stream().filter(entity -> entity.isRunning()).count())); + result.put("waiting_task", + String.valueOf(routineLoadTaskInfoList.stream().filter(entity -> !entity.isRunning()).count())); + Gson gson = new GsonBuilder().disableHtmlEscaping().create(); + return gson.toJson(result); + } finally { + readUnlock(); + } } private String jobPropertiesToJsonString() {