Browse Source

Fix notify failover WorkflowInstance will cause NPE (#15499)

Wenjun Ruan 1 year ago
parent
commit
603dfa2e4b

+ 10 - 0
dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteRunnable.java

@@ -490,6 +490,16 @@ public class WorkflowExecuteRunnable implements IWorkflowExecuteRunnable {
         } else {
             ProcessInstance processInstance =
                     processService.findProcessInstanceById(nextTaskInstance.getProcessInstanceId());
+            if (processInstance == null) {
+                log.error("WorkflowInstance is null cannot wakeup, processInstanceId:{}",
+                        nextTaskInstance.getProcessInstanceId());
+                return;
+            }
+            if (processInstance.getHost() == null || Constants.NULL.equals(processInstance.getHost())) {
+                log.warn("The next WorkflowInstance: {} host is null no need to wakeup, maybe it is in failover",
+                        processInstance);
+                return;
+            }
             ILogicTaskInstanceOperator taskInstanceOperator = SingletonJdkDynamicRpcClientProxyFactory
                     .getProxyClient(processInstance.getHost(), ILogicTaskInstanceOperator.class);
             taskInstanceOperator.wakeupTaskInstance(