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

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


The following commit(s) were added to refs/heads/master by this push:
     new 2754405f76d add storage_size to sys.servers (#18979)
2754405f76d is described below

commit 2754405f76d7e615f9e569046583c722eb986ea4
Author: Clint Wylie <[email protected]>
AuthorDate: Tue Feb 3 10:06:50 2026 -0800

    add storage_size to sys.servers (#18979)
---
 .../embedded/query/QueryVirtualStorageTest.java    | 25 +++++++++++++++----
 .../druid/sql/calcite/schema/SystemSchema.java     |  4 +++
 .../druid/sql/calcite/schema/SystemSchemaTest.java | 29 +++++++++++++++++++---
 3 files changed, 50 insertions(+), 8 deletions(-)

diff --git 
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/query/QueryVirtualStorageTest.java
 
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/query/QueryVirtualStorageTest.java
index 02d0fae66f8..ea16aebb4ff 100644
--- 
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/query/QueryVirtualStorageTest.java
+++ 
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/query/QueryVirtualStorageTest.java
@@ -66,6 +66,11 @@ import java.util.concurrent.ThreadLocalRandom;
  */
 class QueryVirtualStorageTest extends EmbeddedClusterTestBase
 {
+  // size of wiki segments, adjust this if segment size changes for some reason
+  private static final long SIZE_BYTES = 3776682L;
+  private static final long CACHE_SIZE = HumanReadableBytes.parse("1MiB");
+  private static final long MAX_SIZE = HumanReadableBytes.parse("100MiB");
+
   private final EmbeddedBroker broker = new EmbeddedBroker();
   private final EmbeddedIndexer indexer = new EmbeddedIndexer();
   private final EmbeddedOverlord overlord = new EmbeddedOverlord();
@@ -88,11 +93,11 @@ class QueryVirtualStorageTest extends 
EmbeddedClusterTestBase
                       StringUtils.format(
                           "[{\"path\":\"%s\",\"maxSize\":\"%s\"}]",
                           
cluster.getTestFolder().newFolder().getAbsolutePath(),
-                          HumanReadableBytes.parse("1MiB")
+                          CACHE_SIZE
                       )
                   )
               )
-              .addProperty("druid.server.maxSize", 
String.valueOf(HumanReadableBytes.parse("100MiB")));
+              .addProperty("druid.server.maxSize", String.valueOf(MAX_SIZE));
 
     broker.setServerMemory(200_000_000)
           .addProperty("druid.msq.dart.controller.maxRetainedReportCount", 
"10")
@@ -236,12 +241,12 @@ class QueryVirtualStorageTest extends 
EmbeddedClusterTestBase
 
     coordinatorEmitter.waitForEvent(event -> 
event.hasMetricName(Stats.Tier.STORAGE_CAPACITY.getMetricName()));
     Assertions.assertEquals(
-        HumanReadableBytes.parse("1MiB"),
+        CACHE_SIZE,
         
coordinatorEmitter.getLatestMetricEventValue(Stats.Tier.STORAGE_CAPACITY.getMetricName())
     );
     coordinatorEmitter.waitForEvent(event -> 
event.hasMetricName(Stats.Tier.TOTAL_CAPACITY.getMetricName()));
     Assertions.assertEquals(
-        HumanReadableBytes.parse("100MiB"),
+        MAX_SIZE,
         
coordinatorEmitter.getLatestMetricEventValue(Stats.Tier.TOTAL_CAPACITY.getMetricName())
     );
   }
@@ -293,11 +298,21 @@ class QueryVirtualStorageTest extends 
EmbeddedClusterTestBase
     Assertions.assertTrue(segmentChannelCounters.getLoadFiles()[0] > 0 && 
segmentChannelCounters.getLoadFiles()[0] <= 
segmentChannelCounters.getFiles()[0]);
     // size of all segments at time of writing, possibly we have to load all 
of them, but possibly less depending on
     // test order
-    Assertions.assertTrue(segmentChannelCounters.getLoadBytes()[0] > 0 && 
segmentChannelCounters.getLoadBytes()[0] <= 3776682L);
+    Assertions.assertTrue(segmentChannelCounters.getLoadBytes()[0] > 0 && 
segmentChannelCounters.getLoadBytes()[0] <= SIZE_BYTES);
     Assertions.assertTrue(segmentChannelCounters.getLoadTime()[0] > 0);
     Assertions.assertTrue(segmentChannelCounters.getLoadWait()[0] > 0);
   }
 
+  @Test
+  void testQuerySysTables()
+  {
+    String query = "SELECT curr_size, max_size, storage_size FROM sys.servers 
WHERE tier IS NOT NULL AND server_type = 'historical'";
+    Assertions.assertEquals(
+        StringUtils.format("%s,%s,%s", SIZE_BYTES, MAX_SIZE, CACHE_SIZE),
+        cluster.callApi().runSql(query)
+    );
+  }
+
 
   private void assertQueryMetrics(int expectedEventCount, @Nullable Long 
expectedLoadCount)
   {
diff --git 
a/sql/src/main/java/org/apache/druid/sql/calcite/schema/SystemSchema.java 
b/sql/src/main/java/org/apache/druid/sql/calcite/schema/SystemSchema.java
index 35c92e403a1..f461acfa687 100644
--- a/sql/src/main/java/org/apache/druid/sql/calcite/schema/SystemSchema.java
+++ b/sql/src/main/java/org/apache/druid/sql/calcite/schema/SystemSchema.java
@@ -188,6 +188,7 @@ public class SystemSchema extends AbstractSchema
       .add("tier", ColumnType.STRING)
       .add("curr_size", ColumnType.LONG)
       .add("max_size", ColumnType.LONG)
+      .add("storage_size", ColumnType.LONG)
       .add("is_leader", ColumnType.LONG)
       .add("start_time", ColumnType.STRING)
       .add("version", ColumnType.STRING)
@@ -692,6 +693,7 @@ public class SystemSchema extends AbstractSchema
           null,
           UNKNOWN_SIZE,
           UNKNOWN_SIZE,
+          UNKNOWN_SIZE,
           null,
           toStringOrNull(discoveryDruidNode.getStartTime()),
           node.getVersion(),
@@ -719,6 +721,7 @@ public class SystemSchema extends AbstractSchema
           null,
           UNKNOWN_SIZE,
           UNKNOWN_SIZE,
+          UNKNOWN_SIZE,
           isLeader ? 1L : 0L,
           toStringOrNull(discoveryDruidNode.getStartTime()),
           node.getVersion(),
@@ -758,6 +761,7 @@ public class SystemSchema extends AbstractSchema
           druidServerToUse.getTier(),
           currentSize,
           druidServerToUse.getMaxSize(),
+          druidServerToUse.getStorageSize(),
           null,
           toStringOrNull(discoveryDruidNode.getStartTime()),
           node.getVersion(),
diff --git 
a/sql/src/test/java/org/apache/druid/sql/calcite/schema/SystemSchemaTest.java 
b/sql/src/test/java/org/apache/druid/sql/calcite/schema/SystemSchemaTest.java
index 3914448c733..ae15e124198 100644
--- 
a/sql/src/test/java/org/apache/druid/sql/calcite/schema/SystemSchemaTest.java
+++ 
b/sql/src/test/java/org/apache/druid/sql/calcite/schema/SystemSchemaTest.java
@@ -583,7 +583,7 @@ public class SystemSchemaTest extends CalciteTestBase
     final SystemSchema.ServersTable serversTable = (SystemSchema.ServersTable) 
schema.getTableMap().get("servers");
     final RelDataType serverRowType = serversTable.getRowType(new 
JavaTypeFactoryImpl());
     final List<RelDataTypeField> serverFields = serverRowType.getFieldList();
-    Assert.assertEquals(14, serverFields.size());
+    Assert.assertEquals(15, serverFields.size());
     Assert.assertEquals("server", serverFields.get(0).getName());
     Assert.assertEquals(SqlTypeName.VARCHAR, 
serverFields.get(0).getType().getSqlTypeName());
 
@@ -847,7 +847,7 @@ public class SystemSchemaTest extends CalciteTestBase
 
     final List<DruidServer> servers = new ArrayList<>();
     
servers.add(mockDataServer(historical1.getDruidNode().getHostAndPortToUse(), 
200L, 1000L, "tier"));
-    
servers.add(mockDataServer(historical2.getDruidNode().getHostAndPortToUse(), 
400L, 1000L, "tier"));
+    
servers.add(mockDataServer(historical2.getDruidNode().getHostAndPortToUse(), 
400L, 1000L, 100L, "tier2"));
     servers.add(mockDataServer(peon1.getDruidNode().getHostAndPortToUse(), 0L, 
1000L, "tier"));
     servers.add(mockDataServer(peon2.getDruidNode().getHostAndPortToUse(), 0L, 
1000L, "tier"));
     servers.add(mockDataServer(broker1.getDruidNode().getHostAndPortToUse(), 
0L, 1000L, "tier"));
@@ -888,6 +888,7 @@ public class SystemSchemaTest extends CalciteTestBase
             null,
             0L,
             0L,
+            0L,
             nonLeader,
             startTimeStr,
             version,
@@ -906,6 +907,7 @@ public class SystemSchemaTest extends CalciteTestBase
             "tier",
             0L,
             1000L,
+            1000L,
             nonLeader,
             startTimeStr,
             version,
@@ -921,9 +923,10 @@ public class SystemSchemaTest extends CalciteTestBase
             8083,
             -1,
             NodeRole.HISTORICAL,
-            "tier",
+            "tier2",
             400L,
             1000L,
+            100L,
             nonLeader,
             startTimeStr,
             version,
@@ -942,6 +945,7 @@ public class SystemSchemaTest extends CalciteTestBase
             "tier",
             0L,
             1000L,
+            1000L,
             nonLeader,
             startTimeStr,
             version,
@@ -960,6 +964,7 @@ public class SystemSchemaTest extends CalciteTestBase
             "tier",
             0L,
             1000L,
+            1000L,
             nonLeader,
             startTimeStr,
             version,
@@ -977,6 +982,7 @@ public class SystemSchemaTest extends CalciteTestBase
         "tier",
         0L,
         1000L,
+        1000L,
         nonLeader,
         startTimeStr,
         version,
@@ -994,6 +1000,7 @@ public class SystemSchemaTest extends CalciteTestBase
             null,
             0L,
             0L,
+            0L,
             1L,
             startTimeStr,
             version,
@@ -1012,6 +1019,7 @@ public class SystemSchemaTest extends CalciteTestBase
             null,
             0L,
             0L,
+            0L,
             nonLeader,
             startTimeStr,
             version,
@@ -1030,6 +1038,7 @@ public class SystemSchemaTest extends CalciteTestBase
             "tier",
             200L,
             1000L,
+            1000L,
             nonLeader,
             startTimeStr,
             version,
@@ -1048,6 +1057,7 @@ public class SystemSchemaTest extends CalciteTestBase
             null,
             0L,
             0L,
+            0L,
             1L,
             startTimeStr,
             version,
@@ -1067,6 +1077,7 @@ public class SystemSchemaTest extends CalciteTestBase
             0L,
             0L,
             0L,
+            0L,
             startTimeStr,
             version,
             null,
@@ -1085,6 +1096,7 @@ public class SystemSchemaTest extends CalciteTestBase
             0L,
             0L,
             0L,
+            0L,
             startTimeStr,
             version,
             null,
@@ -1102,6 +1114,7 @@ public class SystemSchemaTest extends CalciteTestBase
             null,
             0L,
             0L,
+            0L,
             nonLeader,
             startTimeStr,
             version,
@@ -1120,6 +1133,7 @@ public class SystemSchemaTest extends CalciteTestBase
             null,
             0L,
             0L,
+            0L,
             nonLeader,
             startTimeStr,
             version,
@@ -1137,6 +1151,7 @@ public class SystemSchemaTest extends CalciteTestBase
         "tier",
         0L,
         1000L,
+        1000L,
         nonLeader,
         startTimeStr,
         version,
@@ -1154,6 +1169,11 @@ public class SystemSchemaTest extends CalciteTestBase
   }
 
   private DruidServer mockDataServer(String name, long currentSize, long 
maxSize, String tier)
+  {
+    return mockDataServer(name, currentSize, maxSize, maxSize, tier);
+  }
+
+  private DruidServer mockDataServer(String name, long currentSize, long 
maxSize, long storageSize, String tier)
   {
     final DruidServer server = EasyMock.createMock(DruidServer.class);
     EasyMock.expect(serverInventoryView.getInventoryValue(name))
@@ -1161,6 +1181,7 @@ public class SystemSchemaTest extends CalciteTestBase
             .once();
     EasyMock.expect(server.getCurrSize()).andReturn(currentSize).once();
     EasyMock.expect(server.getMaxSize()).andReturn(maxSize).once();
+    EasyMock.expect(server.getStorageSize()).andReturn(storageSize).once();
     EasyMock.expect(server.getTier()).andReturn(tier).once();
     return server;
   }
@@ -1174,6 +1195,7 @@ public class SystemSchemaTest extends CalciteTestBase
       @Nullable String tier,
       @Nullable Long currSize,
       @Nullable Long maxSize,
+      @Nullable Long storageSize,
       @Nullable Long isLeader,
       String startTime,
       String version,
@@ -1191,6 +1213,7 @@ public class SystemSchemaTest extends CalciteTestBase
         tier,
         currSize,
         maxSize,
+        storageSize,
         isLeader,
         startTime,
         version,


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to