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();
+      }
     }
   }