You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by GitBox <gi...@apache.org> on 2019/05/14 19:15:19 UTC

[GitHub] [incubator-druid] himanshug commented on a change in pull request #7654: Show all server types in sys.servers table

himanshug commented on a change in pull request #7654: Show all server types in sys.servers table
URL: https://github.com/apache/incubator-druid/pull/7654#discussion_r283957093
 
 

 ##########
 File path: sql/src/main/java/org/apache/druid/sql/calcite/schema/SystemSchema.java
 ##########
 @@ -452,26 +465,57 @@ public TableType getJdbcTableType()
     @Override
     public Enumerable<Object[]> scan(DataContext root)
     {
-      final List<ImmutableDruidServer> druidServers = serverView.getDruidServers();
+      final Iterator<DiscoveryDruidNode> druidServers = getDruidServers(druidNodeDiscoveryProvider);
       final AuthenticationResult authenticationResult =
           (AuthenticationResult) root.get(PlannerContext.DATA_CTX_AUTHENTICATION_RESULT);
 
       checkStateReadAccessForServers(authenticationResult, authorizerMapper);
 
       final FluentIterable<Object[]> results = FluentIterable
-          .from(druidServers)
-          .transform(val -> new Object[]{
-              val.getHost(),
-              extractHost(val.getHost()),
-              (long) extractPort(val.getHostAndPort()),
-              (long) extractPort(val.getHostAndTlsPort()),
-              toStringOrNull(val.getType()),
-              val.getTier(),
-              val.getCurrSize(),
-              val.getMaxSize()
+          .from(() -> druidServers)
+          .transform(val -> {
+            boolean isDataNode = false;
+            final DruidNode node = val.getDruidNode();
+            if (val.getNodeType().equals(NodeType.HISTORICAL)) {
+              isDataNode = true;
+            }
+            return new Object[]{
+                node.getHostAndPortToUse(),
+                extractHost(node.getHost()),
+                (long) extractPort(node.getHostAndPort()),
+                (long) extractPort(node.getHostAndTlsPort()),
+                toStringOrNull(val.getNodeType()),
+                isDataNode ? val.toDruidServer().getTier() : null,
+                isDataNode ? val.toDruidServer().getCurrSize() : CURRENT_SERVER_SIZE,
+                isDataNode ? val.toDruidServer().getMaxSize() : MAX_SERVER_SIZE
+            };
           });
       return Linq4j.asEnumerable(results);
     }
+
+    private Iterator<DiscoveryDruidNode> getDruidServers(DruidNodeDiscoveryProvider druidNodeDiscoveryProvider)
+    {
+      final Collection<DiscoveryDruidNode> discoveryDruidNodes = new ArrayList<>();
+      discoveryDruidNodes.addAll(getServerTypeNodes(druidNodeDiscoveryProvider, NodeType.COORDINATOR));
+      discoveryDruidNodes.addAll(getServerTypeNodes(druidNodeDiscoveryProvider, NodeType.OVERLORD));
+      discoveryDruidNodes.addAll(getServerTypeNodes(druidNodeDiscoveryProvider, NodeType.BROKER));
+      discoveryDruidNodes.addAll(getServerTypeNodes(druidNodeDiscoveryProvider, NodeType.ROUTER));
+      discoveryDruidNodes.addAll(getServerTypeNodes(druidNodeDiscoveryProvider, NodeType.HISTORICAL));
+      discoveryDruidNodes.addAll(getServerTypeNodes(druidNodeDiscoveryProvider, NodeType.MIDDLE_MANAGER));
+      discoveryDruidNodes.addAll(getServerTypeNodes(druidNodeDiscoveryProvider, NodeType.PEON));
+      return discoveryDruidNodes.iterator();
 
 Review comment:
   could change to following instead of listing each node type explicitly.
   
   ```suggestion
               return Arrays.stream(NodeType.values())
                      .flatMap(t -> getServerTypeNodes(druidNodeDiscoveryProvider, t).stream())
                      .collect(Collectors.toList())
                      .iterator();
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

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