You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ri...@apache.org on 2021/08/18 09:37:27 UTC
[incubator-streampipes] 02/02: [STREAMPIPES-319] Attempt host and
port discovery only once
This is an automated email from the ASF dual-hosted git repository.
riemer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git
commit b1293f26376d4c2f52dd363040e6b20db4ae71cc
Author: Dominik Riemer <ri...@fzi.de>
AuthorDate: Wed Aug 18 11:37:16 2021 +0200
[STREAMPIPES-319] Attempt host and port discovery only once
---
.../backend/StreamPipesBackendApplication.java | 4 +-
.../container/base/BaseNetworkingConfig.java | 49 ++++++++++++++++++++++
.../container/base/StreamPipesServiceBase.java | 25 ++++-------
.../standalone/init/StandaloneModelSubmitter.java | 4 +-
.../base/StreamPipesExtensionsServiceBase.java | 13 +++---
5 files changed, 70 insertions(+), 25 deletions(-)
diff --git a/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesBackendApplication.java b/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesBackendApplication.java
index d72a4d3..6b3bb4d 100644
--- a/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesBackendApplication.java
+++ b/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesBackendApplication.java
@@ -20,6 +20,7 @@ package org.apache.streampipes.backend;
import org.apache.shiro.web.env.EnvironmentLoaderListener;
import org.apache.shiro.web.servlet.OncePerRequestFilter;
import org.apache.shiro.web.servlet.ShiroFilter;
+import org.apache.streampipes.container.base.BaseNetworkingConfig;
import org.apache.streampipes.container.base.StreamPipesServiceBase;
import org.apache.streampipes.manager.health.PipelineHealthCheck;
import org.apache.streampipes.manager.operations.Operations;
@@ -74,10 +75,11 @@ public class StreamPipesBackendApplication extends StreamPipesServiceBase {
public static void main(String[] args) {
StreamPipesBackendApplication application = new StreamPipesBackendApplication();
try {
+ BaseNetworkingConfig networkingConfig = BaseNetworkingConfig.defaultResolution(8030);
application.startStreamPipesService(StreamPipesBackendApplication.class,
DefaultSpServiceGroups.CORE,
application.serviceId(),
- 8030);
+ networkingConfig);
} catch (UnknownHostException e) {
LOG.error("Could not auto-resolve host address - please manually provide the hostname using the SP_HOST environment variable");
}
diff --git a/streampipes-container-base/src/main/java/org/apache/streampipes/container/base/BaseNetworkingConfig.java b/streampipes-container-base/src/main/java/org/apache/streampipes/container/base/BaseNetworkingConfig.java
new file mode 100644
index 0000000..d196a54
--- /dev/null
+++ b/streampipes-container-base/src/main/java/org/apache/streampipes/container/base/BaseNetworkingConfig.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.streampipes.container.base;
+
+import org.apache.streampipes.commons.networking.Networking;
+
+import java.net.UnknownHostException;
+
+public class BaseNetworkingConfig {
+
+ private final String host;
+ private final Integer port;
+
+ public static BaseNetworkingConfig defaultResolution(Integer defaultPort) throws UnknownHostException {
+ String host = Networking.getHostname();
+ Integer port = Networking.getPort(defaultPort);
+
+ return new BaseNetworkingConfig(host, port);
+ }
+
+ public BaseNetworkingConfig(String host,
+ Integer port) {
+ this.host = host;
+ this.port = port;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public Integer getPort() {
+ return port;
+ }
+}
diff --git a/streampipes-container-base/src/main/java/org/apache/streampipes/container/base/StreamPipesServiceBase.java b/streampipes-container-base/src/main/java/org/apache/streampipes/container/base/StreamPipesServiceBase.java
index 4969fe0..b0f8829 100644
--- a/streampipes-container-base/src/main/java/org/apache/streampipes/container/base/StreamPipesServiceBase.java
+++ b/streampipes-container-base/src/main/java/org/apache/streampipes/container/base/StreamPipesServiceBase.java
@@ -18,7 +18,6 @@
package org.apache.streampipes.container.base;
import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.streampipes.commons.networking.Networking;
import org.apache.streampipes.svcdiscovery.SpServiceDiscovery;
import org.apache.streampipes.svcdiscovery.api.model.SpServiceRegistrationRequest;
import org.apache.streampipes.svcdiscovery.api.model.SpServiceTag;
@@ -39,26 +38,26 @@ public abstract class StreamPipesServiceBase {
protected void startStreamPipesService(Class<?> serviceClass,
String serviceGroup,
String serviceId,
- Integer defaultPort) throws UnknownHostException {
- registerService(serviceGroup, serviceId, defaultPort);
- runApplication(serviceClass, defaultPort);
+ BaseNetworkingConfig networkingConfig) throws UnknownHostException {
+ registerService(serviceGroup, serviceId, networkingConfig);
+ runApplication(serviceClass, networkingConfig.getPort());
}
private void runApplication(Class<?> serviceClass,
- Integer defaultPort) {
+ Integer port) {
SpringApplication app = new SpringApplication(serviceClass);
- app.setDefaultProperties(Collections.singletonMap("server.port", getPort(defaultPort)));
+ app.setDefaultProperties(Collections.singletonMap("server.port", port));
app.run();
}
private void registerService(String serviceGroup,
String serviceId,
- Integer defaultPort) throws UnknownHostException {
+ BaseNetworkingConfig networkingConfig) {
SpServiceRegistrationRequest req = SpServiceRegistrationRequest.from(
serviceGroup,
serviceId,
- getHostname(),
- getPort(defaultPort),
+ networkingConfig.getHost(),
+ networkingConfig.getPort(),
getServiceTags(),
getHealthCheckPath());
@@ -67,14 +66,6 @@ public abstract class StreamPipesServiceBase {
.registerService(req);
}
- protected String getHostname() throws UnknownHostException {
- return Networking.getHostname();
- }
-
- protected Integer getPort(Integer defaultPort) {
- return Networking.getPort(defaultPort);
- }
-
protected abstract List<SpServiceTag> getServiceTags();
protected void deregisterService(String serviceId) {
diff --git a/streampipes-container-standalone/src/main/java/org/apache/streampipes/container/standalone/init/StandaloneModelSubmitter.java b/streampipes-container-standalone/src/main/java/org/apache/streampipes/container/standalone/init/StandaloneModelSubmitter.java
index bf5cae0..1738887 100644
--- a/streampipes-container-standalone/src/main/java/org/apache/streampipes/container/standalone/init/StandaloneModelSubmitter.java
+++ b/streampipes-container-standalone/src/main/java/org/apache/streampipes/container/standalone/init/StandaloneModelSubmitter.java
@@ -19,6 +19,7 @@
package org.apache.streampipes.container.standalone.init;
+import org.apache.streampipes.container.base.BaseNetworkingConfig;
import org.apache.streampipes.container.init.DeclarersSingleton;
import org.apache.streampipes.container.model.PeConfig;
import org.apache.streampipes.container.model.SpServiceDefinition;
@@ -48,10 +49,11 @@ public abstract class StandaloneModelSubmitter extends StreamPipesExtensionsServ
DeclarersSingleton.getInstance()
.setPort(peConfig.getPort());
+ BaseNetworkingConfig networkingConfig = new BaseNetworkingConfig(peConfig.getHost(), peConfig.getPort());
SpServiceDefinition serviceDef = DeclarersSingleton.getInstance().toServiceDefinition(peConfig.getId());
try {
- startExtensionsService(this.getClass(), serviceDef);
+ startExtensionsService(this.getClass(), serviceDef, networkingConfig);
} catch (UnknownHostException e) {
e.printStackTrace();
}
diff --git a/streampipes-service-extensions-base/src/main/java/org/apache/streampipes/service/extensions/base/StreamPipesExtensionsServiceBase.java b/streampipes-service-extensions-base/src/main/java/org/apache/streampipes/service/extensions/base/StreamPipesExtensionsServiceBase.java
index 0f7d4dd..f2851c0 100644
--- a/streampipes-service-extensions-base/src/main/java/org/apache/streampipes/service/extensions/base/StreamPipesExtensionsServiceBase.java
+++ b/streampipes-service-extensions-base/src/main/java/org/apache/streampipes/service/extensions/base/StreamPipesExtensionsServiceBase.java
@@ -18,6 +18,7 @@
package org.apache.streampipes.service.extensions.base;
+import org.apache.streampipes.container.base.BaseNetworkingConfig;
import org.apache.streampipes.container.base.StreamPipesServiceBase;
import org.apache.streampipes.container.init.DeclarersSingleton;
import org.apache.streampipes.container.model.SpServiceDefinition;
@@ -43,13 +44,12 @@ public abstract class StreamPipesExtensionsServiceBase extends StreamPipesServic
public void init(SpServiceDefinition serviceDef) {
try {
- String host = getHostname();
- Integer port = getPort(serviceDef.getDefaultPort());
+ BaseNetworkingConfig networkingConfig = BaseNetworkingConfig.defaultResolution(serviceDef.getDefaultPort());
String serviceId = serviceDef.getServiceGroup() + "-" + AUTO_GENERATED_SERVICE_ID;
serviceDef.setServiceId(serviceId);
- DeclarersSingleton.getInstance().populate(host, port, serviceDef);
+ DeclarersSingleton.getInstance().populate(networkingConfig.getHost(), networkingConfig.getPort(), serviceDef);
- startExtensionsService(this.getClass(), serviceDef);
+ startExtensionsService(this.getClass(), serviceDef, networkingConfig);
} catch (UnknownHostException e) {
LOG.error("Could not auto-resolve host address - please manually provide the hostname using the SP_HOST environment variable");
}
@@ -62,12 +62,13 @@ public abstract class StreamPipesExtensionsServiceBase extends StreamPipesServic
public abstract void afterServiceRegistered(SpServiceDefinition serviceDef);
public void startExtensionsService(Class<?> serviceClass,
- SpServiceDefinition serviceDef) throws UnknownHostException {
+ SpServiceDefinition serviceDef,
+ BaseNetworkingConfig networkingConfig) throws UnknownHostException {
this.startStreamPipesService(
serviceClass,
DefaultSpServiceGroups.EXT,
serviceId(),
- serviceDef.getDefaultPort()
+ networkingConfig
);
this.afterServiceRegistered(serviceDef);
}