You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/08/15 02:08:15 UTC
[iotdb] 01/01: [IOTDB-4127] Fix NPE bug in AbstractFragInsStateTracker
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch IOTDB-4127
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 93f41b5c764fc7c3845419297b6a63247df96ae7
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Mon Aug 15 10:08:01 2022 +0800
[IOTDB-4127] Fix NPE bug in AbstractFragInsStateTracker
---
.../iotdb/db/mpp/plan/scheduler/AbstractFragInsStateTracker.java | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/AbstractFragInsStateTracker.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/AbstractFragInsStateTracker.java
index eb77ef7587..c2233d8da0 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/AbstractFragInsStateTracker.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/AbstractFragInsStateTracker.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.commons.client.IClientManager;
import org.apache.iotdb.commons.client.sync.SyncDataNodeInternalServiceClient;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.mpp.execution.QueryStateMachine;
+import org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceInfo;
import org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceManager;
import org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceState;
import org.apache.iotdb.db.mpp.plan.planner.plan.FragmentInstance;
@@ -69,7 +70,13 @@ public abstract class AbstractFragInsStateTracker implements IFragInstanceStateT
throws TException, IOException {
TEndPoint endPoint = instance.getHostDataNode().internalEndPoint;
if (isInstanceRunningLocally(endPoint)) {
- return FragmentInstanceManager.getInstance().getInstanceInfo(instance.getId()).getState();
+ FragmentInstanceInfo info =
+ FragmentInstanceManager.getInstance().getInstanceInfo(instance.getId());
+ if (info != null) {
+ return info.getState();
+ } else {
+ return FragmentInstanceState.NO_SUCH_INSTANCE;
+ }
} else {
try (SyncDataNodeInternalServiceClient client =
internalServiceClientManager.borrowClient(endPoint)) {