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() {
