You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by xi...@apache.org on 2020/10/16 16:52:55 UTC

[incubator-pinot] branch adding_grpc_port_to_instance created (now 9796cbf)

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

xiangfu pushed a change to branch adding_grpc_port_to_instance
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git.


      at 9796cbf  Adding grpcPort in controller instance API response

This branch includes the following new commits:

     new 9796cbf  Adding grpcPort in controller instance API response

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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


[incubator-pinot] 01/01: Adding grpcPort in controller instance API response

Posted by xi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xiangfu pushed a commit to branch adding_grpc_port_to_instance
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git

commit 9796cbfcebe167ad6c5ad4f8029c85fa266614af
Author: Xiang Fu <fx...@gmail.com>
AuthorDate: Fri Oct 16 09:52:07 2020 -0700

    Adding grpcPort in controller instance API response
---
 .../pinot/common/utils/config/InstanceUtils.java   |  2 ++
 .../resources/PinotInstanceRestletResource.java    |  1 +
 .../api/PinotInstanceRestletResourceTest.java      | 31 ++++++++++++++--------
 .../apache/pinot/spi/config/instance/Instance.java | 19 +++++++++++--
 4 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/pinot-common/src/main/java/org/apache/pinot/common/utils/config/InstanceUtils.java b/pinot-common/src/main/java/org/apache/pinot/common/utils/config/InstanceUtils.java
index f30fbfe..1eb3a90 100644
--- a/pinot-common/src/main/java/org/apache/pinot/common/utils/config/InstanceUtils.java
+++ b/pinot-common/src/main/java/org/apache/pinot/common/utils/config/InstanceUtils.java
@@ -31,6 +31,7 @@ public class InstanceUtils {
   }
 
   public static final String POOL_KEY = "pool";
+  public static final String GRPC_PORT_KEY = "grpcPort";
 
   /**
    * Returns the Helix instance id (e.g. {@code Server_localhost_1234}) for the given instance.
@@ -75,6 +76,7 @@ public class InstanceUtils {
       }
       instanceConfig.getRecord().setMapField(POOL_KEY, mapValue);
     }
+    instanceConfig.getRecord().setSimpleField(GRPC_PORT_KEY, Integer.toString(instance.getGrpcPort()));
     return instanceConfig;
   }
 }
diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotInstanceRestletResource.java b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotInstanceRestletResource.java
index cb6e629..b1fdcc5 100644
--- a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotInstanceRestletResource.java
+++ b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotInstanceRestletResource.java
@@ -101,6 +101,7 @@ public class PinotInstanceRestletResource {
     response.put("port", instanceConfig.getPort());
     response.set("tags", JsonUtils.objectToJsonNode(instanceConfig.getTags()));
     response.set("pools", JsonUtils.objectToJsonNode(instanceConfig.getRecord().getMapField(InstanceUtils.POOL_KEY)));
+    response.put("grpcPort", instanceConfig.getRecord().getSimpleField(InstanceUtils.GRPC_PORT_KEY));
     return response.toString();
   }
 
diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotInstanceRestletResourceTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotInstanceRestletResourceTest.java
index a99e9d8..1816fc0 100644
--- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotInstanceRestletResourceTest.java
+++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotInstanceRestletResourceTest.java
@@ -37,6 +37,7 @@ import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
+import static org.apache.pinot.spi.config.instance.Instance.NOT_SET_GRPC_PORT_VALUE;
 import static org.testng.Assert.fail;
 
 
@@ -75,7 +76,7 @@ public class PinotInstanceRestletResourceTest extends ControllerTest {
     Instance brokerInstance = new Instance("1.2.3.4", 1234, InstanceType.BROKER, null, null);
     sendPostRequest(createInstanceUrl, brokerInstance.toJsonString());
 
-    Instance serverInstance = new Instance("1.2.3.4", 2345, InstanceType.SERVER, null, null);
+    Instance serverInstance = new Instance("1.2.3.4", 2345, InstanceType.SERVER, null, null, 8090);
     sendPostRequest(createInstanceUrl, serverInstance.toJsonString());
 
     // Check that there are 3 instances -- controller, broker and server
@@ -89,7 +90,8 @@ public class PinotInstanceRestletResourceTest extends ControllerTest {
     serverPools.put("tag_OFFLINE", 0);
     serverPools.put("tag_REALTIME", 1);
     serverInstance =
-        new Instance("2.3.4.5", 2345, InstanceType.SERVER, Arrays.asList("tag_OFFLINE", "tag_REALTIME"), serverPools);
+        new Instance("2.3.4.5", 2345, InstanceType.SERVER, Arrays.asList("tag_OFFLINE", "tag_REALTIME"), serverPools,
+            18090);
     sendPostRequest(createInstanceUrl, serverInstance.toJsonString());
 
     // Check that there are 5 instances
@@ -116,26 +118,28 @@ public class PinotInstanceRestletResourceTest extends ControllerTest {
 
     // Check that the instances are properly created
     checkInstanceInfo("Broker_1.2.3.4_1234", "Broker_1.2.3.4", 1234, new String[0], null, null);
-    checkInstanceInfo("Server_1.2.3.4_2345", "Server_1.2.3.4", 2345, new String[0], null, null);
+    checkInstanceInfo("Server_1.2.3.4_2345", "Server_1.2.3.4", 2345, new String[0], null, null, 8090);
     checkInstanceInfo("Broker_2.3.4.5_1234", "Broker_2.3.4.5", 1234, new String[]{"tag_BROKER"}, null, null);
     checkInstanceInfo("Server_2.3.4.5_2345", "Server_2.3.4.5", 2345, new String[]{"tag_OFFLINE", "tag_REALTIME"},
-        new String[]{"tag_OFFLINE", "tag_REALTIME"}, new int[]{0, 1});
+        new String[]{"tag_OFFLINE", "tag_REALTIME"}, new int[]{0, 1}, 18090);
 
     // Test PUT Instance API
     String newBrokerTag = "new-broker-tag";
-    Instance newBrokerInstance = new Instance("1.2.3.4", 1234, InstanceType.BROKER, Collections.singletonList(newBrokerTag), null);
+    Instance newBrokerInstance =
+        new Instance("1.2.3.4", 1234, InstanceType.BROKER, Collections.singletonList(newBrokerTag), null);
     String brokerInstanceId = "Broker_1.2.3.4_1234";
     String brokerInstanceUrl = _controllerRequestURLBuilder.forInstance(brokerInstanceId);
     sendPutRequest(brokerInstanceUrl, newBrokerInstance.toJsonString());
 
     String newServerTag = "new-server-tag";
-    Instance newServerInstance = new Instance("1.2.3.4", 2345, InstanceType.SERVER, Collections.singletonList(newServerTag), null);
+    Instance newServerInstance =
+        new Instance("1.2.3.4", 2345, InstanceType.SERVER, Collections.singletonList(newServerTag), null, 28090);
     String serverInstanceId = "Server_1.2.3.4_2345";
     String serverInstanceUrl = _controllerRequestURLBuilder.forInstance(serverInstanceId);
     sendPutRequest(serverInstanceUrl, newServerInstance.toJsonString());
 
     checkInstanceInfo(brokerInstanceId, "Broker_1.2.3.4", 1234, new String[]{newBrokerTag}, null, null);
-    checkInstanceInfo(serverInstanceId, "Server_1.2.3.4", 2345, new String[]{newServerTag}, null, null);
+    checkInstanceInfo(serverInstanceId, "Server_1.2.3.4", 2345, new String[]{newServerTag}, null, null, 28090);
 
     // Test Instance updateTags API
     String brokerInstanceUpdateTagsUrl = _controllerRequestURLBuilder
@@ -144,14 +148,18 @@ public class PinotInstanceRestletResourceTest extends ControllerTest {
     String serverInstanceUpdateTagsUrl = _controllerRequestURLBuilder.forInstanceUpdateTags(serverInstanceId,
         Lists.newArrayList("tag_REALTIME", "newTag_OFFLINE", "newTag_REALTIME"));
     sendPutRequest(serverInstanceUpdateTagsUrl);
-    checkInstanceInfo(brokerInstanceId, "Broker_1.2.3.4", 1234, new String[]{"tag_BROKER", "newTag_BROKER"}, null,
-        null);
+    checkInstanceInfo(brokerInstanceId, "Broker_1.2.3.4", 1234, new String[]{"tag_BROKER", "newTag_BROKER"}, null, null);
     checkInstanceInfo(serverInstanceId, "Server_1.2.3.4", 2345,
-        new String[]{"tag_REALTIME", "newTag_OFFLINE", "newTag_REALTIME"}, null, null);
+        new String[]{"tag_REALTIME", "newTag_OFFLINE", "newTag_REALTIME"}, null, null, 28090);
   }
 
   private void checkInstanceInfo(String instanceName, String hostName, int port, String[] tags, String[] pools,
       int[] poolValues) {
+    checkInstanceInfo(instanceName, hostName, port, tags, pools, poolValues, NOT_SET_GRPC_PORT_VALUE);
+  }
+
+  private void checkInstanceInfo(String instanceName, String hostName, int port, String[] tags, String[] pools,
+      int[] poolValues, int grpcPort) {
     TestUtils.waitForCondition(new Function<Void, Boolean>() {
       @Nullable
       @Override
@@ -164,7 +172,8 @@ public class PinotInstanceRestletResourceTest extends ControllerTest {
                   && (instance.get("hostName") != null) && (instance.get("hostName").asText().equals(hostName)) && (
                   instance.get("port") != null) && (instance.get("port").asText().equals(String.valueOf(port)))
                   && (instance.get("enabled").asBoolean()) && (instance.get("tags") != null) && (
-                  instance.get("tags").size() == tags.length);
+                  instance.get("tags").size() == tags.length) && (instance.get("grpcPort").asText()
+                  .equals(String.valueOf(grpcPort)));
 
           for (int i = 0; i < tags.length; i++) {
             result = result && instance.get("tags").get(i).asText().equals(tags[i]);
diff --git a/pinot-spi/src/main/java/org/apache/pinot/spi/config/instance/Instance.java b/pinot-spi/src/main/java/org/apache/pinot/spi/config/instance/Instance.java
index 5cbb32c..7767907 100644
--- a/pinot-spi/src/main/java/org/apache/pinot/spi/config/instance/Instance.java
+++ b/pinot-spi/src/main/java/org/apache/pinot/spi/config/instance/Instance.java
@@ -38,22 +38,32 @@ import org.apache.pinot.spi.config.BaseJsonConfig;
  *   "tags": ["example_OFFLINE"],
  *   "pools": {
  *     "example_OFFLINE": 0
- *   }
+ *   },
+ *   "grpcPort": 8090
  * }
  * </pre>
  */
 public class Instance extends BaseJsonConfig {
+  public static int NOT_SET_GRPC_PORT_VALUE = -1;
+
   private final String _host;
   private final int _port;
   private final InstanceType _type;
   private final List<String> _tags;
   private final Map<String, Integer> _pools;
+  private final int _grpcPort;
+
+
+  public Instance(String host, int port, InstanceType type, List<String> tags, Map<String, Integer> pools) {
+    this(host, port, type, tags, pools, NOT_SET_GRPC_PORT_VALUE);
+  }
 
   @JsonCreator
   public Instance(@JsonProperty(value = "host", required = true) String host,
       @JsonProperty(value = "port", required = true) int port,
       @JsonProperty(value = "type", required = true) InstanceType type,
-      @JsonProperty("tags") @Nullable List<String> tags, @JsonProperty("pools") @Nullable Map<String, Integer> pools) {
+      @JsonProperty("tags") @Nullable List<String> tags, @JsonProperty("pools") @Nullable Map<String, Integer> pools,
+      @JsonProperty("grpcPort") int grpcPort) {
     Preconditions.checkArgument(host != null, "'host' must be configured");
     Preconditions.checkArgument(type != null, "'type' must be configured");
     _host = host;
@@ -61,6 +71,7 @@ public class Instance extends BaseJsonConfig {
     _type = type;
     _tags = tags;
     _pools = pools;
+    _grpcPort = grpcPort;
   }
 
   public String getHost() {
@@ -84,4 +95,8 @@ public class Instance extends BaseJsonConfig {
   public Map<String, Integer> getPools() {
     return _pools;
   }
+
+  public int getGrpcPort() {
+    return _grpcPort;
+  }
 }


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