You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by eo...@apache.org on 2021/01/28 07:24:18 UTC

[bookkeeper] branch branch-4.12 updated: Allow stream storage to use hostname instead of IP address

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

eolivelli pushed a commit to branch branch-4.12
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/branch-4.12 by this push:
     new e29329e  Allow stream storage to use hostname instead of IP address
e29329e is described below

commit e29329e764c53f24f52a7a4f801cfe5bdf13a558
Author: Andrey Yegorov <dl...@users.noreply.github.com>
AuthorDate: Wed Jan 27 23:23:54 2021 -0800

    Allow stream storage to use hostname instead of IP address
    
    Descriptions of the changes in this PR:
    
    Allow stream storage to use hostname instead of IP address
    
    ### Motivation
    
    issue #2559
    
    ### Changes
    
    Allowed use of the host name for the endpoint.
    Changes by cdbartholomew
    
    Master Issue: #2559
    
    Reviewers: Enrico Olivelli <eo...@gmail.com>, Sijie Guo <si...@apache.org>
    
    This closes #2560 from dlg99/master-stream-hostname
    
    (cherry picked from commit 6c3c9f7cf4bd4d6db5fcd4aee657c3a0f30fd2f4)
    Signed-off-by: Enrico Olivelli <eo...@apache.org>
---
 .../bookkeeper/stream/server/StorageServer.java    | 24 ++++++++++++++++++----
 .../server/StreamStorageLifecycleComponent.java    |  1 +
 .../server/conf/StorageServerConfiguration.java    | 12 +++++++++++
 3 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/stream/server/src/main/java/org/apache/bookkeeper/stream/server/StorageServer.java b/stream/server/src/main/java/org/apache/bookkeeper/stream/server/StorageServer.java
index 278aaf2..6fa0580 100644
--- a/stream/server/src/main/java/org/apache/bookkeeper/stream/server/StorageServer.java
+++ b/stream/server/src/main/java/org/apache/bookkeeper/stream/server/StorageServer.java
@@ -87,6 +87,9 @@ public class StorageServer {
         @Parameter(names = {"-p", "--port"}, description = "Port to listen on for gPRC server")
         private int port = 4181;
 
+        @Parameter(names = {"-u", "--useHostname"}, description = "Use hostname instead of IP for server ID")
+        private boolean useHostname = false;
+
         @Parameter(names = {"-h", "--help"}, description = "Show this help message")
         private boolean help = false;
 
@@ -110,11 +113,14 @@ public class StorageServer {
 
     public static Endpoint createLocalEndpoint(int port, boolean useHostname) throws UnknownHostException {
         String hostname;
+        log.warn("Determining hostname for stream storage");
         if (useHostname) {
             hostname = InetAddress.getLocalHost().getHostName();
         } else {
             hostname = InetAddress.getLocalHost().getHostAddress();
         }
+
+        log.warn("Decided to use hostname {}", hostname);
         return Endpoint.newBuilder()
             .setHostname(hostname)
             .setPort(port)
@@ -148,12 +154,14 @@ public class StorageServer {
         }
 
         int grpcPort = arguments.port;
+        boolean grpcUseHostname = arguments.useHostname;
 
         LifecycleComponent storageServer;
         try {
             storageServer = buildStorageServer(
                 conf,
-                grpcPort);
+                grpcPort,
+                grpcUseHostname);
         } catch (Exception e) {
             log.error("Invalid storage configuration", e);
             return ExitCode.INVALID_CONF.code();
@@ -176,14 +184,22 @@ public class StorageServer {
     public static LifecycleComponent buildStorageServer(CompositeConfiguration conf,
                                                         int grpcPort)
             throws Exception {
-        return buildStorageServer(conf, grpcPort, true, NullStatsLogger.INSTANCE);
+        return buildStorageServer(conf, grpcPort, false, true, NullStatsLogger.INSTANCE);
+    }
+
+    public static LifecycleComponent buildStorageServer(CompositeConfiguration conf,
+                                                        int grpcPort, boolean useHostname)
+            throws Exception {
+        return buildStorageServer(conf, grpcPort, false, useHostname, NullStatsLogger.INSTANCE);
     }
 
     public static LifecycleComponent buildStorageServer(CompositeConfiguration conf,
                                                         int grpcPort,
+                                                        boolean useHostname,
                                                         boolean startBookieAndStartProvider,
                                                         StatsLogger externalStatsLogger)
-        throws Exception {
+            throws Exception {
+
         final ComponentInfoPublisher componentInfoPublisher = new ComponentInfoPublisher();
 
         final Supplier<BookieServiceInfo> bookieServiceInfoProvider =
@@ -206,7 +222,7 @@ public class StorageServer {
         storageConf.validate();
 
         // Get my local endpoint
-        Endpoint myEndpoint = createLocalEndpoint(grpcPort, false);
+        Endpoint myEndpoint = createLocalEndpoint(grpcPort, useHostname);
 
         // Create shared resources
         StorageResources storageResources = StorageResources.create();
diff --git a/stream/server/src/main/java/org/apache/bookkeeper/stream/server/StreamStorageLifecycleComponent.java b/stream/server/src/main/java/org/apache/bookkeeper/stream/server/StreamStorageLifecycleComponent.java
index 60c60a3..29c6b7f 100644
--- a/stream/server/src/main/java/org/apache/bookkeeper/stream/server/StreamStorageLifecycleComponent.java
+++ b/stream/server/src/main/java/org/apache/bookkeeper/stream/server/StreamStorageLifecycleComponent.java
@@ -40,6 +40,7 @@ public class StreamStorageLifecycleComponent extends ServerLifecycleComponent {
         this.streamStorage = StorageServer.buildStorageServer(
             conf.getUnderlyingConf(),
             ssConf.getGrpcPort(),
+            ssConf.getGrpcUseHostname(),
             false,
             statsLogger.scope("stream"));
     }
diff --git a/stream/server/src/main/java/org/apache/bookkeeper/stream/server/conf/StorageServerConfiguration.java b/stream/server/src/main/java/org/apache/bookkeeper/stream/server/conf/StorageServerConfiguration.java
index bc300c9..9067fce 100644
--- a/stream/server/src/main/java/org/apache/bookkeeper/stream/server/conf/StorageServerConfiguration.java
+++ b/stream/server/src/main/java/org/apache/bookkeeper/stream/server/conf/StorageServerConfiguration.java
@@ -25,6 +25,8 @@ public class StorageServerConfiguration extends ComponentConfiguration {
     private static final String COMPONENT_PREFIX = "storageserver" + DELIMITER;
 
     private static final String GRPC_PORT = "grpc.port";
+    private static final String GRPC_USE_HOSTNAME = "grpc.useHostname";
+
 
     public static StorageServerConfiguration of(CompositeConfiguration conf) {
         return new StorageServerConfiguration(conf);
@@ -42,4 +44,14 @@ public class StorageServerConfiguration extends ComponentConfiguration {
     public int getGrpcPort() {
         return getInt(GRPC_PORT, 4181);
     }
+
+    /**
+     * Returns the grpc flag that indicates to use hostname instead of IP address
+     * for the stream storage server.
+     *
+     * @return grpc useHostname flag
+     */
+    public boolean getGrpcUseHostname() {
+        return getBoolean(GRPC_USE_HOSTNAME, false);
+    }
 }