Fix Concurrent bug between NodeSupplier.close() and its run()
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/NodesSupplier.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/NodesSupplier.java index ccb83b9..8f0244b 100644 --- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/NodesSupplier.java +++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/NodesSupplier.java
@@ -170,8 +170,11 @@ } } - if (client != null && !updateDataNodeList()) { - destroyCurrentClient(); + // make sure the following code block can run thread-safely with close() method. + synchronized (this) { + if (client != null && !updateDataNodeList()) { + destroyCurrentClient(); + } } }