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

haonan pushed a commit to branch opt/windows_metric_bind
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit fedff2b40f9c676fd7595b5b7df77f98768ebda3
Author: HTHou <[email protected]>
AuthorDate: Thu Apr 2 12:25:10 2026 +0800

    Make Windows metric binding asynchronous and remove test waits
---
 .../java/org/apache/iotdb/session/it/IoTDBConnectionsIT.java  |  1 -
 .../java/org/apache/iotdb/session/it/pool/SessionPoolIT.java  |  2 --
 .../org/apache/iotdb/metrics/metricsets/disk/DiskMetrics.java | 11 +++++++++++
 .../metrics/metricsets/disk/WindowsDiskMetricsManager.java    | 10 ----------
 .../org/apache/iotdb/metrics/metricsets/net/NetMetrics.java   | 11 +++++++++++
 .../iotdb/metrics/metricsets/net/WindowsNetMetricManager.java |  4 +---
 6 files changed, 23 insertions(+), 16 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBConnectionsIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBConnectionsIT.java
index 591980548e2..80aa854e66c 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBConnectionsIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBConnectionsIT.java
@@ -341,7 +341,6 @@ public class IoTDBConnectionsIT {
         TimeUnit.SECONDS.sleep(1);
       }
     }
-    TimeUnit.SECONDS.sleep(5);
   }
 
   @Test
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/session/it/pool/SessionPoolIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/session/it/pool/SessionPoolIT.java
index f42d4237ea9..648a6918331 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/session/it/pool/SessionPoolIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/session/it/pool/SessionPoolIT.java
@@ -268,7 +268,6 @@ public class SessionPoolIT {
           .ensureNodeStatus(
               Collections.singletonList(node), 
Collections.singletonList(NodeStatus.Running));
       pool = EnvFactory.getEnv().getSessionPool(3);
-      TimeUnit.SECONDS.sleep(5);
       correctQuery(pool, DEFAULT_QUERY_TIMEOUT);
       pool.close();
       return;
@@ -354,7 +353,6 @@ public class SessionPoolIT {
     EnvFactory.getEnv()
         .ensureNodeStatus(
             Collections.singletonList(node), 
Collections.singletonList(NodeStatus.Running));
-    TimeUnit.SECONDS.sleep(5);
     write10Data(pool, true);
     pool.close();
   }
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/disk/DiskMetrics.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/disk/DiskMetrics.java
index c9c2b393cde..6811c8143d2 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/disk/DiskMetrics.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/disk/DiskMetrics.java
@@ -50,6 +50,17 @@ public class DiskMetrics implements IMetricSet {
 
   @Override
   public void bindTo(AbstractMetricService metricService) {
+    String os = System.getProperty("os.name").toLowerCase();
+    if (os.startsWith("windows")) {
+      Thread thread = new Thread(() -> bindTask(metricService), 
"Windows-Disk-Metric-Binder");
+      thread.setDaemon(true);
+      thread.start();
+      return;
+    }
+    bindTask(metricService);
+  }
+
+  private void bindTask(AbstractMetricService metricService) {
     // metrics for disks
     Set<String> diskIDs = diskMetricsManager.getDiskIds();
     for (String diskID : diskIDs) {
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/disk/WindowsDiskMetricsManager.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/disk/WindowsDiskMetricsManager.java
index b83e0c5aa17..a82b048f6db 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/disk/WindowsDiskMetricsManager.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/disk/WindowsDiskMetricsManager.java
@@ -106,7 +106,6 @@ public class WindowsDiskMetricsManager implements 
IDiskMetricsManager {
 
   public WindowsDiskMetricsManager() {
     processId = 
String.valueOf(MetricConfigDescriptor.getInstance().getMetricConfig().getPid());
-    collectDiskId();
   }
 
   @Override
@@ -235,15 +234,6 @@ public class WindowsDiskMetricsManager implements 
IDiskMetricsManager {
     return diskIdSet;
   }
 
-  private void collectDiskId() {
-    Map<String, String[]> diskInfoMap = queryDiskInfo();
-    if (diskInfoMap.isEmpty()) {
-      return;
-    }
-    diskIdSet.clear();
-    diskIdSet.addAll(diskInfoMap.keySet());
-  }
-
   private Map<String, Double> toKbMap(Map<String, Long> source) {
     Map<String, Double> result = new HashMap<>(source.size());
     for (Map.Entry<String, Long> entry : source.entrySet()) {
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/NetMetrics.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/NetMetrics.java
index 3561fd7997c..49c98702ad7 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/NetMetrics.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/NetMetrics.java
@@ -41,6 +41,17 @@ public class NetMetrics implements IMetricSet {
 
   @Override
   public void bindTo(AbstractMetricService metricService) {
+    String os = System.getProperty("os.name").toLowerCase();
+    if (os.startsWith("windows")) {
+      Thread thread = new Thread(() -> bindTask(metricService), 
"Windows-Net-Metric-Binder");
+      thread.setDaemon(true);
+      thread.start();
+      return;
+    }
+    bindTask(metricService);
+  }
+
+  private void bindTask(AbstractMetricService metricService) {
     // metrics for net
     Set<String> ifaceSet = netMetricManager.getIfaceSet();
     for (String iface : ifaceSet) {
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/WindowsNetMetricManager.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/WindowsNetMetricManager.java
index 7fb82ffaa0d..62991048cab 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/WindowsNetMetricManager.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/WindowsNetMetricManager.java
@@ -56,9 +56,7 @@ public class WindowsNetMetricManager implements 
INetMetricManager {
 
   private int connectionNum = 0;
 
-  public WindowsNetMetricManager() {
-    checkUpdate();
-  }
+  public WindowsNetMetricManager() {}
 
   @Override
   public Set<String> getIfaceSet() {

Reply via email to