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

NSAmelchev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 8266f08c604 IGNITE-29076 Fix string representation of array-valued 
metrics (#13617)
8266f08c604 is described below

commit 8266f08c6042fc36c57b23a8cbd9ac519c4d4b9f
Author: Nikita Amelchev <[email protected]>
AuthorDate: Fri Sep 25 17:24:19 2026 +0300

    IGNITE-29076 Fix string representation of array-valued metrics (#13617)
---
 .../org/apache/ignite/spi/metric/ObjectMetric.java   | 13 ++++++++++++-
 .../ignite/internal/metric/MetricsSelfTest.java      | 20 ++++++++++++++++++++
 .../internal/thread/pool/ThreadPoolMetricsTest.java  |  9 ++++++++-
 3 files changed, 40 insertions(+), 2 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/metric/ObjectMetric.java 
b/modules/core/src/main/java/org/apache/ignite/spi/metric/ObjectMetric.java
index f931fef7efe..95c1e3d640a 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/metric/ObjectMetric.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/metric/ObjectMetric.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.spi.metric;
 
+import java.util.Arrays;
 import org.jetbrains.annotations.Nullable;
 
 /**
@@ -29,13 +30,23 @@ public interface ObjectMetric<T> extends Metric {
     /** @return Type of metric value. */
     public Class<T> type();
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     * <p>
+     * Array values are rendered as a comma-separated list of elements in 
square brackets, for example {@code [1, 2, 3]}.
+     */
     @Override @Nullable default String getAsString() {
         T val = value();
 
         if (val == null)
             return null;
 
+        if (val.getClass().isArray()) {
+            String str = Arrays.deepToString(new Object[] {val});
+
+            return str.substring(1, str.length() - 1);
+        }
+
         return val.toString();
     }
 }
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsSelfTest.java
index 17d6ac88efd..cafa31dc1f9 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsSelfTest.java
@@ -235,6 +235,26 @@ public class MetricsSelfTest extends 
GridCommonAbstractTest {
         assertEquals(v[0], m.value());
     }
 
+    /** */
+    @Test
+    public void testArrayMetricAsString() {
+        mreg.register("intArr", () -> new int[] {1, 2, 3}, int[].class, 
"test");
+        mreg.register("longArr", () -> new long[] {4L, 5L}, long[].class, 
"test");
+        mreg.register("boolArr", () -> new boolean[] {true, false}, 
boolean[].class, "test");
+        mreg.register("strArr", () -> new String[] {"a", null}, 
String[].class, "test");
+        mreg.register("nestedArr", () -> new int[][] {{1}, {2, 3}}, 
int[][].class, "test");
+        mreg.register("emptyArr", () -> new int[0], int[].class, "test");
+        mreg.register("nullArr", () -> null, int[].class, "test");
+
+        assertEquals("[1, 2, 3]", mreg.findMetric("intArr").getAsString());
+        assertEquals("[4, 5]", mreg.findMetric("longArr").getAsString());
+        assertEquals("[true, false]", 
mreg.findMetric("boolArr").getAsString());
+        assertEquals("[a, null]", mreg.findMetric("strArr").getAsString());
+        assertEquals("[[1], [2, 3]]", 
mreg.findMetric("nestedArr").getAsString());
+        assertEquals("[]", mreg.findMetric("emptyArr").getAsString());
+        assertNull(mreg.findMetric("nullArr").getAsString());
+    }
+
     /** */
     @Test
     public void testBooleanGauges() throws Exception {
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/thread/pool/ThreadPoolMetricsTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/thread/pool/ThreadPoolMetricsTest.java
index de9fbf542e3..085d99e705d 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/thread/pool/ThreadPoolMetricsTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/thread/pool/ThreadPoolMetricsTest.java
@@ -235,9 +235,16 @@ public class ThreadPoolMetricsTest extends 
GridCommonAbstractTest {
             assertTrue(errMsg, stream(execTimeMetric.value()).sum() >= 
taskCnt);
 
             if (stripedExecutor) {
-                assertTrue(errMsg, 
((IntMetric)mreg.findMetric("StripesCount")).value() > 0);
+                int stripes = 
((IntMetric)mreg.findMetric("StripesCount")).value();
+
+                assertTrue(errMsg, stripes > 0);
                 assertTrue(errMsg, 
((LongMetric)mreg.findMetric("TotalCompletedTasksCount")).value() >= taskCnt);
 
+                String statuses = 
mreg.findMetric("StripesActiveStatuses").getAsString();
+
+                assertEquals(Arrays.toString(new int[stripes]), 
mreg.findMetric("StripesQueueSizes").getAsString());
+                assertTrue(statuses.contains("true") && statuses.split(", 
").length == stripes);
+
                 continue;
             }
 

Reply via email to