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);
+ }
}