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 <fx19880...@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-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org