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/streampipes.git


The following commit(s) were added to refs/heads/dev by this push:
     new 5deb02dcb6 feat: Add environment variable to require minimum OPC-UA 
pull frequency (#4160)
5deb02dcb6 is described below

commit 5deb02dcb6224ec21d21e37aa1e5fe5f61298ed4
Author: Dominik Riemer <[email protected]>
AuthorDate: Tue Feb 10 18:28:59 2026 +0100

    feat: Add environment variable to require minimum OPC-UA pull frequency 
(#4160)
---
 .../apache/streampipes/commons/constants/Envs.java |  1 +
 .../commons/environment/DefaultEnvironment.java    |  5 +++++
 .../commons/environment/Environment.java           |  2 ++
 .../connectors/opcua/adapter/OpcUaAdapter.java     | 22 +++++++++++++++++++++-
 4 files changed, 29 insertions(+), 1 deletion(-)

diff --git 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/constants/Envs.java
 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/constants/Envs.java
index c1b04d1193..5974facc9c 100644
--- 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/constants/Envs.java
+++ 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/constants/Envs.java
@@ -123,6 +123,7 @@ public enum Envs {
   SP_ALLOWED_UPLOAD_FILETYPES("SP_ALLOWED_UPLOAD_FILETYPES", "", ""),
 
   // OPC-UA security
+  SP_OPCUA_MIN_PULL_INTERVAL_MS("SP_OPCUA_MIN_PULL_INTERVAL_MS"),
   SP_OPCUA_SECURITY_DIR("SP_OPCUA_SECURITY_DIR", 
"/streampipes-security/opcua"),
   SP_OPCUA_KEYSTORE_FILE("SP_OPCUA_KEYSTORE_FILE", "keystore.pfx"),
   SP_OPCUA_KEYSTORE_PASSWORD("SP_OPCUA_KEYSTORE_PASSWORD", "password"),
diff --git 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/DefaultEnvironment.java
 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/DefaultEnvironment.java
index 04d790fee9..dd01aa8af7 100644
--- 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/DefaultEnvironment.java
+++ 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/DefaultEnvironment.java
@@ -352,6 +352,11 @@ public class DefaultEnvironment implements Environment {
     return new StringEnvironmentVariable(Envs.SP_OPCUA_KEYSTORE_ALIAS);
   }
 
+  @Override
+  public IntEnvironmentVariable getOpcUaMinPullIntervalMs() {
+    return new IntEnvironmentVariable(Envs.SP_OPCUA_MIN_PULL_INTERVAL_MS);
+  }
+
   @Override
   public StringEnvironmentVariable getKeystoreFilename() {
     return new StringEnvironmentVariable(Envs.SP_SECURITY_KEYSTORE_FILENAME);
diff --git 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/Environment.java
 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/Environment.java
index 3f4b6c5291..8949d4663a 100644
--- 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/Environment.java
+++ 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/Environment.java
@@ -172,6 +172,8 @@ public interface Environment {
 
   StringEnvironmentVariable getOpcUaKeystoreAlias();
 
+  IntEnvironmentVariable getOpcUaMinPullIntervalMs();
+
   StringEnvironmentVariable getKeystoreFilename();
 
   StringEnvironmentVariable getKeystorePassword();
diff --git 
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/adapter/OpcUaAdapter.java
 
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/adapter/OpcUaAdapter.java
index 464f30e95c..79a76aee34 100644
--- 
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/adapter/OpcUaAdapter.java
+++ 
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/adapter/OpcUaAdapter.java
@@ -18,6 +18,7 @@
 
 package org.apache.streampipes.extensions.connectors.opcua.adapter;
 
+import org.apache.streampipes.commons.environment.Environments;
 import org.apache.streampipes.commons.exceptions.SpConfigurationException;
 import org.apache.streampipes.commons.exceptions.connect.AdapterException;
 import org.apache.streampipes.extensions.api.connect.IAdapterConfiguration;
@@ -102,7 +103,26 @@ public class OpcUaAdapter implements StreamPipesAdapter, 
IPullAdapter, SupportsR
       this.allNodes = nodeProvider.getNodes();
 
       if (opcUaAdapterConfig.inPullMode()) {
-        this.pullingIntervalMilliSeconds = 
opcUaAdapterConfig.getPullIntervalMilliSeconds();
+        var configuredIntervalMs = 
opcUaAdapterConfig.getPullIntervalMilliSeconds();
+        var effectiveIntervalMs = configuredIntervalMs;
+
+        var minPullInterval = 
Environments.getEnvironment().getOpcUaMinPullIntervalMs();
+        if (minPullInterval.exists()) {
+          effectiveIntervalMs = Math.max(
+              minPullInterval.getValue(),
+              configuredIntervalMs
+          );
+
+          if (!effectiveIntervalMs.equals(configuredIntervalMs)) {
+            LOG.warn(
+                "OPC-UA pull interval increased from {} ms to {} ms due to 
environment variable OPCUA_MIN_PULL_INTERVAL_MS",
+                configuredIntervalMs,
+                effectiveIntervalMs
+            );
+          }
+        }
+
+        this.pullingIntervalMilliSeconds = effectiveIntervalMs;
       } else {
         var allNodeIds = this.allNodes.stream()
             .map(node -> node.nodeInfo().getNodeId()).toList();

Reply via email to