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

Reply via email to