This is an automated email from the ASF dual-hosted git repository.
exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 5bd1ce9e35 NIFI-14501 Added Connect and Read Timeouts to
JsonConfigBasedBoxClientService (#9905)
5bd1ce9e35 is described below
commit 5bd1ce9e351facd2f446d01b95d334c8004bec4c
Author: Alaksiej Ščarbaty <[email protected]>
AuthorDate: Mon Apr 28 17:47:48 2025 +0200
NIFI-14501 Added Connect and Read Timeouts to
JsonConfigBasedBoxClientService (#9905)
Signed-off-by: David Handermann <[email protected]>
---
.../JsonConfigBasedBoxClientService.java | 23 ++++++++++++++++++++++
...nConfigBasedBoxClientServiceTestRunnerTest.java | 18 +++++++++++++++++
2 files changed, 41 insertions(+)
diff --git
a/nifi-extension-bundles/nifi-box-bundle/nifi-box-services/src/main/java/org/apache/nifi/box/controllerservices/JsonConfigBasedBoxClientService.java
b/nifi-extension-bundles/nifi-box-bundle/nifi-box-services/src/main/java/org/apache/nifi/box/controllerservices/JsonConfigBasedBoxClientService.java
index e6cbcf0772..5bbf385a8d 100644
---
a/nifi-extension-bundles/nifi-box-bundle/nifi-box-services/src/main/java/org/apache/nifi/box/controllerservices/JsonConfigBasedBoxClientService.java
+++
b/nifi-extension-bundles/nifi-box-bundle/nifi-box-services/src/main/java/org/apache/nifi/box/controllerservices/JsonConfigBasedBoxClientService.java
@@ -50,6 +50,7 @@ import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.proxy.ProxyConfiguration;
import org.apache.nifi.proxy.ProxySpec;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static
org.apache.nifi.components.ConfigVerificationResult.Outcome.FAILED;
import static
org.apache.nifi.components.ConfigVerificationResult.Outcome.SUCCESSFUL;
@@ -96,6 +97,22 @@ public class JsonConfigBasedBoxClientService extends
AbstractControllerService i
.expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
.build();
+ static final PropertyDescriptor CONNECT_TIMEOUT = new
PropertyDescriptor.Builder()
+ .name("Connect Timeout")
+ .description("Maximum amount of time to wait before failing during
initial socket connection.")
+ .required(true)
+ .defaultValue("10 secs")
+ .addValidator(StandardValidators.TIME_PERIOD_VALIDATOR)
+ .build();
+
+ static final PropertyDescriptor READ_TIMEOUT = new
PropertyDescriptor.Builder()
+ .name("Read Timeout")
+ .description("Maximum amount of time to wait before failing while
reading socket responses.")
+ .required(true)
+ .defaultValue("30 secs")
+ .addValidator(StandardValidators.TIME_PERIOD_VALIDATOR)
+ .build();
+
private static final ProxySpec[] PROXY_SPECS = {ProxySpec.HTTP,
ProxySpec.HTTP_AUTH};
private static final List<PropertyDescriptor> PROPERTY_DESCRIPTORS =
List.of(
@@ -103,6 +120,8 @@ public class JsonConfigBasedBoxClientService extends
AbstractControllerService i
ACCOUNT_ID,
APP_CONFIG_FILE,
APP_CONFIG_JSON,
+ CONNECT_TIMEOUT,
+ READ_TIMEOUT,
ProxyConfiguration.createProxyConfigPropertyDescriptor(PROXY_SPECS)
);
@@ -227,6 +246,10 @@ public class JsonConfigBasedBoxClientService extends
AbstractControllerService i
api.setProxyBasicAuthentication(proxyConfiguration.getProxyUserName(),
proxyConfiguration.getProxyUserPassword());
}
}
+
+
api.setConnectTimeout(context.getProperty(CONNECT_TIMEOUT).asTimePeriod(MILLISECONDS).intValue());
+
api.setReadTimeout(context.getProperty(READ_TIMEOUT).asTimePeriod(MILLISECONDS).intValue());
+
return api;
}
}
diff --git
a/nifi-extension-bundles/nifi-box-bundle/nifi-box-services/src/test/java/org/apache/nifi/box/controllerservices/JsonConfigBasedBoxClientServiceTestRunnerTest.java
b/nifi-extension-bundles/nifi-box-bundle/nifi-box-services/src/test/java/org/apache/nifi/box/controllerservices/JsonConfigBasedBoxClientServiceTestRunnerTest.java
index da971e186b..28b7208d62 100644
---
a/nifi-extension-bundles/nifi-box-bundle/nifi-box-services/src/test/java/org/apache/nifi/box/controllerservices/JsonConfigBasedBoxClientServiceTestRunnerTest.java
+++
b/nifi-extension-bundles/nifi-box-bundle/nifi-box-services/src/test/java/org/apache/nifi/box/controllerservices/JsonConfigBasedBoxClientServiceTestRunnerTest.java
@@ -116,4 +116,22 @@ public class JsonConfigBasedBoxClientServiceTestRunnerTest
{
testRunner.setProperty(testSubject,
JsonConfigBasedBoxClientService.APP_CONFIG_JSON, "{}");
testRunner.assertNotValid(testSubject);
}
+
+ @Test
+ void validWhenCustomTimeoutsAreSet() {
+ testRunner.setProperty(testSubject,
JsonConfigBasedBoxClientService.APP_ACTOR, BoxAppActor.SERVICE_ACCOUNT);
+ testRunner.setProperty(testSubject,
JsonConfigBasedBoxClientService.APP_CONFIG_JSON, "{}");
+ testRunner.setProperty(testSubject,
JsonConfigBasedBoxClientService.CONNECT_TIMEOUT, "1 min");
+ testRunner.setProperty(testSubject,
JsonConfigBasedBoxClientService.READ_TIMEOUT, "10 sec");
+ testRunner.assertValid(testSubject);
+ }
+
+ @Test
+ void invalidWhenTimeoutsAreNotTimePeriods() {
+ testRunner.setProperty(testSubject,
JsonConfigBasedBoxClientService.APP_ACTOR, BoxAppActor.SERVICE_ACCOUNT);
+ testRunner.setProperty(testSubject,
JsonConfigBasedBoxClientService.APP_CONFIG_JSON, "{}");
+ testRunner.setProperty(testSubject,
JsonConfigBasedBoxClientService.CONNECT_TIMEOUT, "not_a_time_period");
+ testRunner.setProperty(testSubject,
JsonConfigBasedBoxClientService.READ_TIMEOUT, "1234");
+ testRunner.assertNotValid(testSubject);
+ }
}