You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by fj...@apache.org on 2019/05/21 18:56:05 UTC

[incubator-druid] branch master updated: Fix currSize attribute of historical server type (#7706)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 1fe0de1  Fix currSize attribute of historical server type (#7706)
1fe0de1 is described below

commit 1fe0de1c962400321ce0ca3e2a6f8528e64466cf
Author: Surekha <su...@imply.io>
AuthorDate: Tue May 21 11:55:58 2019 -0700

    Fix currSize attribute of historical server type (#7706)
---
 .../druid/sql/calcite/schema/SystemSchema.java     | 13 +++++++++--
 .../druid/sql/calcite/schema/SystemSchemaTest.java | 26 +++++++++++++++++-----
 .../druid/sql/calcite/util/CalciteTests.java       |  2 ++
 3 files changed, 33 insertions(+), 8 deletions(-)

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 bf0e3b6..f863104 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
@@ -43,7 +43,9 @@ import org.apache.calcite.schema.ScannableTable;
 import org.apache.calcite.schema.Table;
 import org.apache.calcite.schema.impl.AbstractSchema;
 import org.apache.calcite.schema.impl.AbstractTable;
+import org.apache.druid.client.DruidServer;
 import org.apache.druid.client.ImmutableDruidServer;
+import org.apache.druid.client.InventoryView;
 import org.apache.druid.client.JsonParserIterator;
 import org.apache.druid.client.TimelineServerView;
 import org.apache.druid.client.coordinator.Coordinator;
@@ -184,6 +186,7 @@ public class SystemSchema extends AbstractSchema
       final DruidSchema druidSchema,
       final MetadataSegmentView metadataView,
       final TimelineServerView serverView,
+      final InventoryView serverInventoryView,
       final AuthorizerMapper authorizerMapper,
       final @Coordinator DruidLeaderClient coordinatorDruidLeaderClient,
       final @IndexingService DruidLeaderClient overlordDruidLeaderClient,
@@ -201,7 +204,7 @@ public class SystemSchema extends AbstractSchema
     );
     this.tableMap = ImmutableMap.of(
         SEGMENTS_TABLE, segmentsTable,
-        SERVERS_TABLE, new ServersTable(druidNodeDiscoveryProvider, authorizerMapper),
+        SERVERS_TABLE, new ServersTable(druidNodeDiscoveryProvider, serverInventoryView, authorizerMapper),
         SERVER_SEGMENTS_TABLE, new ServerSegmentsTable(serverView, authorizerMapper),
         TASKS_TABLE, new TasksTable(overlordDruidLeaderClient, jsonMapper, responseHandler, authorizerMapper)
     );
@@ -441,14 +444,17 @@ public class SystemSchema extends AbstractSchema
   {
     private final AuthorizerMapper authorizerMapper;
     private final DruidNodeDiscoveryProvider druidNodeDiscoveryProvider;
+    private final InventoryView serverInventoryView;
 
     public ServersTable(
         DruidNodeDiscoveryProvider druidNodeDiscoveryProvider,
+        InventoryView serverInventoryView,
         AuthorizerMapper authorizerMapper
     )
     {
       this.authorizerMapper = authorizerMapper;
       this.druidNodeDiscoveryProvider = druidNodeDiscoveryProvider;
+      this.serverInventoryView = serverInventoryView;
     }
 
     @Override
@@ -477,7 +483,10 @@ public class SystemSchema extends AbstractSchema
           .transform(val -> {
             boolean isDataNode = false;
             final DruidNode node = val.getDruidNode();
+            long currHistoricalSize = 0;
             if (val.getNodeType().equals(NodeType.HISTORICAL)) {
+              final DruidServer server = serverInventoryView.getInventoryValue(val.toDruidServer().getName());
+              currHistoricalSize = server.getCurrSize();
               isDataNode = true;
             }
             return new Object[]{
@@ -487,7 +496,7 @@ public class SystemSchema extends AbstractSchema
                 (long) extractPort(node.getHostAndTlsPort()),
                 StringUtils.toLowerCase(toStringOrNull(val.getNodeType())),
                 isDataNode ? val.toDruidServer().getTier() : null,
-                isDataNode ? val.toDruidServer().getCurrSize() : CURRENT_SERVER_SIZE,
+                isDataNode ? currHistoricalSize : CURRENT_SERVER_SIZE,
                 isDataNode ? val.toDruidServer().getMaxSize() : MAX_SERVER_SIZE
             };
           });
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 2d8e1d6..49e406b 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
@@ -37,6 +37,8 @@ import org.apache.calcite.sql.type.SqlTypeName;
 import org.apache.druid.client.DruidServer;
 import org.apache.druid.client.ImmutableDruidDataSource;
 import org.apache.druid.client.ImmutableDruidServer;
+import org.apache.druid.client.InventoryView;
+import org.apache.druid.client.ServerInventoryView;
 import org.apache.druid.client.TimelineServerView;
 import org.apache.druid.data.input.InputRow;
 import org.apache.druid.discovery.DataNodeService;
@@ -144,6 +146,7 @@ public class SystemSchemaTest extends CalciteTestBase
   private static Closer resourceCloser;
   private MetadataSegmentView metadataView;
   private DruidNodeDiscoveryProvider druidNodeDiscoveryProvider;
+  private InventoryView serverInventoryView;
 
   @Rule
   public TemporaryFolder temporaryFolder = new TemporaryFolder();
@@ -245,10 +248,12 @@ public class SystemSchemaTest extends CalciteTestBase
     druidSchema.awaitInitialization();
     metadataView = EasyMock.createMock(MetadataSegmentView.class);
     druidNodeDiscoveryProvider = EasyMock.createMock(DruidNodeDiscoveryProvider.class);
+    serverInventoryView = EasyMock.createMock(ServerInventoryView.class);
     schema = new SystemSchema(
         druidSchema,
         metadataView,
         serverView,
+        serverInventoryView,
         EasyMock.createStrictMock(AuthorizerMapper.class),
         client,
         client,
@@ -425,8 +430,6 @@ public class SystemSchemaTest extends CalciteTestBase
           DataNodeService.DISCOVERY_SERVICE_KEY, new DataNodeService("tier", 1000, ServerType.HISTORICAL, 0))
   );
 
-
-
   private final ImmutableDruidServer druidServer1 = new ImmutableDruidServer(
       new DruidServerMetadata("server1", "localhost:0000", null, 5L, ServerType.REALTIME, DruidServer.DEFAULT_TIER, 0),
       1L,
@@ -679,7 +682,11 @@ public class SystemSchemaTest extends CalciteTestBase
   {
 
     SystemSchema.ServersTable serversTable = EasyMock.createMockBuilder(SystemSchema.ServersTable.class)
-                                                     .withConstructor(druidNodeDiscoveryProvider, authMapper)
+                                                     .withConstructor(
+                                                         druidNodeDiscoveryProvider,
+                                                         serverInventoryView,
+                                                         authMapper
+                                                     )
                                                      .createMock();
     EasyMock.replay(serversTable);
     final DruidNodeDiscovery coordinatorNodeDiscovery = EasyMock.createMock(DruidNodeDiscovery.class);
@@ -714,7 +721,14 @@ public class SystemSchemaTest extends CalciteTestBase
     EasyMock.expect(mmNodeDiscovery.getAllNodes()).andReturn(ImmutableList.of(middleManager)).once();
     EasyMock.expect(peonNodeDiscovery.getAllNodes()).andReturn(ImmutableList.of(peon1, peon2)).once();
 
-    EasyMock.replay(druidNodeDiscoveryProvider);
+    final DruidServer server1 = EasyMock.createMock(DruidServer.class);
+    EasyMock.expect(serverInventoryView.getInventoryValue(historical1.toDruidServer().getName())).andReturn(server1).once();
+    EasyMock.expect(server1.getCurrSize()).andReturn(200L).once();
+    final DruidServer server2 = EasyMock.createMock(DruidServer.class);
+    EasyMock.expect(serverInventoryView.getInventoryValue(historical2.toDruidServer().getName())).andReturn(server2).once();
+    EasyMock.expect(server2.getCurrSize()).andReturn(400L).once();
+
+    EasyMock.replay(druidNodeDiscoveryProvider, serverInventoryView, server1, server2);
     EasyMock.replay(
         coordinatorNodeDiscovery,
         overlordNodeDiscovery,
@@ -773,7 +787,7 @@ public class SystemSchemaTest extends CalciteTestBase
         -1,
         "historical",
         "tier",
-        0,
+        400,
         1000
     );
     verifyServerRow(
@@ -817,7 +831,7 @@ public class SystemSchemaTest extends CalciteTestBase
         -1,
         "historical",
         "tier",
-        0,
+        200,
         1000
     );
     verifyServerRow(
diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/util/CalciteTests.java b/sql/src/test/java/org/apache/druid/sql/calcite/util/CalciteTests.java
index 633799e..590205e 100644
--- a/sql/src/test/java/org/apache/druid/sql/calcite/util/CalciteTests.java
+++ b/sql/src/test/java/org/apache/druid/sql/calcite/util/CalciteTests.java
@@ -31,6 +31,7 @@ import com.google.inject.Key;
 import com.google.inject.Module;
 import org.apache.curator.x.discovery.ServiceProvider;
 import org.apache.druid.client.BrokerSegmentWatcherConfig;
+import org.apache.druid.client.ServerInventoryView;
 import org.apache.druid.collections.CloseableStupidPool;
 import org.apache.druid.curator.discovery.ServerDiscoverySelector;
 import org.apache.druid.data.input.InputRow;
@@ -761,6 +762,7 @@ public class CalciteTests
             plannerConfig
         ),
         new TestServerInventoryView(walker.getSegments()),
+        EasyMock.createMock(ServerInventoryView.class),
         TEST_AUTHORIZER_MAPPER,
         druidLeaderClient,
         druidLeaderClient,


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org