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