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