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/10/24 09:33:44 UTC

[iotdb] branch IOTDB-4619 updated: Fix NPE while restarting

This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch IOTDB-4619
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/IOTDB-4619 by this push:
     new 0bb1c2db4b Fix NPE while restarting
0bb1c2db4b is described below

commit 0bb1c2db4b58c42f8bdf385e6f74a6f40c00db6f
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Mon Oct 24 17:33:27 2022 +0800

    Fix NPE while restarting
---
 .../org/apache/iotdb/confignode/manager/ConfigManager.java    |  2 +-
 .../org/apache/iotdb/confignode/manager/cq/CQManager.java     | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
index e3625bd3dd..8b2671b6c9 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
@@ -152,7 +152,7 @@ public class ConfigManager implements IManager {
   private static final Logger LOGGER = LoggerFactory.getLogger(ConfigManager.class);
 
   /** Manage PartitionTable read/write requests through the ConsensusLayer */
-  private ConsensusManager consensusManager;
+  private volatile ConsensusManager consensusManager;
 
   /** Manage cluster node */
   private final NodeManager nodeManager;
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/cq/CQManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/cq/CQManager.java
index 90e8a32a58..ead3f1b63f 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/cq/CQManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/cq/CQManager.java
@@ -41,6 +41,7 @@ import org.slf4j.LoggerFactory;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
@@ -132,6 +133,16 @@ public class CQManager {
 
       // 3. get all CQs
       List<CQInfo.CQEntry> allCQs = null;
+      // wait for consensus layer ready
+      while (configManager.getConsensusManager() == null) {
+        try {
+          LOGGER.info("consensus layer is not ready, sleep 1s...");
+          TimeUnit.SECONDS.sleep(1);
+        } catch (InterruptedException e) {
+          Thread.currentThread().interrupt();
+          LOGGER.warn("Unexpected interruption during waiting for consensus layer ready.");
+        }
+      }
       // keep fetching until we get all CQEntries if this node is still leader
       while (allCQs == null && configManager.getConsensusManager().isLeader()) {
         ConsensusReadResponse response = configManager.getConsensusManager().read(new ShowCQPlan());