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

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

commit 9223af0c3121307b54177364f23ce8fce1c6056c
Author: Xiang Fu <[email protected]>
AuthorDate: Sat Aug 10 00:05:13 2019 -0700

    Adding config to use let controller/broker/server to set hostname
---
 .../pinot/broker/broker/helix/HelixBrokerStarter.java    |  5 ++++-
 .../org/apache/pinot/common/utils/CommonConstants.java   |  1 +
 .../org/apache/pinot/controller/ControllerStarter.java   | 16 ++++++++++++++++
 .../pinot/server/starter/helix/HelixServerStarter.java   |  6 +++++-
 4 files changed, 26 insertions(+), 2 deletions(-)

diff --git 
a/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/HelixBrokerStarter.java
 
b/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/HelixBrokerStarter.java
index 57beed3..1c6fb25 100644
--- 
a/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/HelixBrokerStarter.java
+++ 
b/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/HelixBrokerStarter.java
@@ -52,6 +52,7 @@ import org.apache.pinot.common.config.TagNameUtils;
 import org.apache.pinot.common.metadata.ZKMetadataProvider;
 import org.apache.pinot.common.metrics.BrokerMeter;
 import org.apache.pinot.common.metrics.BrokerMetrics;
+import org.apache.pinot.common.utils.CommonConstants;
 import org.apache.pinot.common.utils.CommonConstants.Broker;
 import org.apache.pinot.common.utils.CommonConstants.Helix;
 import org.apache.pinot.common.utils.NetUtil;
@@ -107,7 +108,9 @@ public class HelixBrokerStarter {
     _zkServers = zkServer.replaceAll("\\s+", "");
 
     if (brokerHost == null) {
-      brokerHost = NetUtil.getHostAddress();
+      brokerHost =
+        
_brokerConf.getBoolean(CommonConstants.Helix.PREFER_HOSTNAME_IN_DEFAULT_INSTANCD_ID_KEY,
 false) ? NetUtil
+            .getHostnameOrAddress() : NetUtil.getHostAddress();
     }
     _brokerId = _brokerConf.getString(Helix.Instance.INSTANCE_ID_KEY,
         Helix.PREFIX_OF_BROKER_INSTANCE + brokerHost + "_" + _brokerConf
diff --git 
a/pinot-common/src/main/java/org/apache/pinot/common/utils/CommonConstants.java 
b/pinot-common/src/main/java/org/apache/pinot/common/utils/CommonConstants.java
index 386621b..86aa857 100644
--- 
a/pinot-common/src/main/java/org/apache/pinot/common/utils/CommonConstants.java
+++ 
b/pinot-common/src/main/java/org/apache/pinot/common/utils/CommonConstants.java
@@ -102,6 +102,7 @@ public class CommonConstants {
         return ServerType.REALTIME;
       }
     }
+    public static final String PREFER_HOSTNAME_IN_DEFAULT_INSTANCD_ID_KEY = 
"pinot.preferHostnameInDefaultInstanceId";
 
     public static final String KEY_OF_SERVER_NETTY_PORT = 
"pinot.server.netty.port";
     public static final int DEFAULT_SERVER_NETTY_PORT = 8098;
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/ControllerStarter.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/ControllerStarter.java
index 310748b..7c80033 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/ControllerStarter.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/ControllerStarter.java
@@ -52,6 +52,7 @@ import org.apache.pinot.common.metrics.MetricsHelper;
 import org.apache.pinot.common.metrics.ValidationMetrics;
 import org.apache.pinot.common.segment.fetcher.SegmentFetcherFactory;
 import org.apache.pinot.common.utils.CommonConstants;
+import org.apache.pinot.common.utils.NetUtil;
 import org.apache.pinot.common.utils.ServiceStatus;
 import org.apache.pinot.controller.api.ControllerAdminApiApplication;
 import org.apache.pinot.controller.api.access.AccessControlFactory;
@@ -124,6 +125,7 @@ public class ControllerStarter {
 
   public ControllerStarter(ControllerConf conf) {
     _config = conf;
+    inferHostnameIfNeeded(_config);
     setupHelixSystemProperties();
 
     _controllerMode = conf.getControllerMode();
@@ -152,6 +154,20 @@ public class ControllerStarter {
     }
   }
 
+  private void inferHostnameIfNeeded(ControllerConf config) {
+    if (config.getControllerHost() == null) {
+      if 
(config.getBoolean(CommonConstants.Helix.PREFER_HOSTNAME_IN_DEFAULT_INSTANCD_ID_KEY,
 false)) {
+        final String inferredHostname = NetUtil.getHostnameOrAddress();
+        if (inferredHostname != null) {
+          config.setControllerHost(inferredHostname);
+        } else {
+          throw new RuntimeException(
+              "Failed to infer controller hostname, please set controller 
instanceId explicitly in config file.");
+        }
+      }
+    }
+  }
+
   private void setupHelixSystemProperties() {
     // NOTE: Helix will disconnect the manager and disable the instance if it 
detects flapping (too frequent disconnect
     // from ZooKeeper). Setting flapping time window to a small value can 
avoid this from happening. Helix ignores the
diff --git 
a/pinot-server/src/main/java/org/apache/pinot/server/starter/helix/HelixServerStarter.java
 
b/pinot-server/src/main/java/org/apache/pinot/server/starter/helix/HelixServerStarter.java
index e69f275..01a3007 100644
--- 
a/pinot-server/src/main/java/org/apache/pinot/server/starter/helix/HelixServerStarter.java
+++ 
b/pinot-server/src/main/java/org/apache/pinot/server/starter/helix/HelixServerStarter.java
@@ -52,6 +52,7 @@ import org.apache.pinot.common.config.TagNameUtils;
 import org.apache.pinot.common.metadata.ZKMetadataProvider;
 import org.apache.pinot.common.metrics.ServerMeter;
 import org.apache.pinot.common.metrics.ServerMetrics;
+import org.apache.pinot.common.utils.CommonConstants;
 import org.apache.pinot.common.utils.NetUtil;
 import org.apache.pinot.common.utils.ServiceStatus;
 import org.apache.pinot.common.utils.ServiceStatus.Status;
@@ -141,7 +142,10 @@ public class HelixServerStarter {
     if (_serverConf.containsKey(CONFIG_OF_INSTANCE_ID)) {
       _instanceId = _serverConf.getString(CONFIG_OF_INSTANCE_ID);
     } else {
-      String host = _serverConf.getString(KEY_OF_SERVER_NETTY_HOST, 
NetUtil.getHostAddress());
+      String host = _serverConf.getString(KEY_OF_SERVER_NETTY_HOST,
+          
_serverConf.getBoolean(CommonConstants.Helix.PREFER_HOSTNAME_IN_DEFAULT_INSTANCD_ID_KEY,
 false) ? NetUtil
+              .getHostnameOrAddress() : NetUtil.getHostAddress());
+
       int port = _serverConf.getInt(KEY_OF_SERVER_NETTY_PORT, 
DEFAULT_SERVER_NETTY_PORT);
       _instanceId = PREFIX_OF_SERVER_INSTANCE + host + "_" + port;
       _serverConf.addProperty(CONFIG_OF_INSTANCE_ID, _instanceId);


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

Reply via email to