This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git


The following commit(s) were added to refs/heads/main by this push:
     new 1f1ced59c9b Update file-cluster-service-starter configuration for 
recent FileLockClusterService enhancements
1f1ced59c9b is described below

commit 1f1ced59c9bee3678e3974f494e19e9c9eadab92
Author: James Netherton <[email protected]>
AuthorDate: Tue Jan 13 09:40:17 2026 +0000

    Update file-cluster-service-starter configuration for recent 
FileLockClusterService enhancements
---
 .../src/main/docs/file-cluster-service.json        | 16 +++++++--
 .../FileLockClusterServiceAutoConfiguration.java   |  2 ++
 .../FileLockClusterServiceConfiguration.java       | 40 ++++++++++++++++++++--
 3 files changed, 54 insertions(+), 4 deletions(-)

diff --git 
a/components-starter/camel-file-cluster-service-starter/src/main/docs/file-cluster-service.json
 
b/components-starter/camel-file-cluster-service-starter/src/main/docs/file-cluster-service.json
index 375e915b00f..cb127f57ffc 100644
--- 
a/components-starter/camel-file-cluster-service-starter/src/main/docs/file-cluster-service.json
+++ 
b/components-starter/camel-file-cluster-service-starter/src/main/docs/file-cluster-service.json
@@ -10,13 +10,13 @@
     {
       "name": "camel.cluster.file.acquire-lock-delay",
       "type": "java.lang.String",
-      "description": "The time to wait before starting to try to acquire 
lock.",
+      "description": "The time to wait before starting to try to acquire the 
cluster lock. Note that if FileLockClusterService determines no cluster members 
are running or cannot reliably determine the cluster state, the initial delay 
is computed from the acquireLockInterval.",
       "sourceType": 
"org.apache.camel.component.file.springboot.cluster.FileLockClusterServiceConfiguration"
     },
     {
       "name": "camel.cluster.file.acquire-lock-interval",
       "type": "java.lang.String",
-      "description": "The time to wait between attempts to try to acquire 
lock.",
+      "description": "The time to wait between attempts to try to acquire the 
cluster lock evaluated using wall-clock time. All cluster members must use the 
same value so leadership checks and leader liveness detection remain 
consistent.",
       "sourceType": 
"org.apache.camel.component.file.springboot.cluster.FileLockClusterServiceConfiguration"
     },
     {
@@ -25,6 +25,18 @@
       "description": "Custom service attributes.",
       "sourceType": 
"org.apache.camel.component.file.springboot.cluster.FileLockClusterServiceConfiguration"
     },
+    {
+      "name": "camel.cluster.file.cluster-data-task-max-attempts",
+      "type": "java.lang.Integer",
+      "description": "The number of times a cluster data task will run, 
counting both the first execution and subsequent retries in case of failure or 
timeout. <p> This can be useful when the cluster data root is on network based 
file storage, where I\/O operations may occasionally block for long or 
unpredictable periods.",
+      "sourceType": 
"org.apache.camel.component.file.springboot.cluster.FileLockClusterServiceConfiguration"
+    },
+    {
+      "name": "camel.cluster.file.cluster-data-task-timeout",
+      "type": "java.lang.Long",
+      "description": "The timeout for a cluster data task (reading or writing 
cluster data). <p> Timeouts are useful when the cluster data root is on network 
storage, where I\/O operations may occasionally block for long or unpredictable 
periods.",
+      "sourceType": 
"org.apache.camel.component.file.springboot.cluster.FileLockClusterServiceConfiguration"
+    },
     {
       "name": "camel.cluster.file.enabled",
       "type": "java.lang.Boolean",
diff --git 
a/components-starter/camel-file-cluster-service-starter/src/main/java/org/apache/camel/component/file/springboot/cluster/FileLockClusterServiceAutoConfiguration.java
 
b/components-starter/camel-file-cluster-service-starter/src/main/java/org/apache/camel/component/file/springboot/cluster/FileLockClusterServiceAutoConfiguration.java
index e725ac8f7a7..c7edcb008d2 100644
--- 
a/components-starter/camel-file-cluster-service-starter/src/main/java/org/apache/camel/component/file/springboot/cluster/FileLockClusterServiceAutoConfiguration.java
+++ 
b/components-starter/camel-file-cluster-service-starter/src/main/java/org/apache/camel/component/file/springboot/cluster/FileLockClusterServiceAutoConfiguration.java
@@ -55,6 +55,8 @@ public class FileLockClusterServiceAutoConfiguration {
         
Optional.ofNullable(configuration.getAcquireLockInterval()).map(TimePatternConverter::toMilliSeconds)
                 .ifPresent(v -> service.setAcquireLockInterval(v, 
TimeUnit.MILLISECONDS));
         
Optional.ofNullable(configuration.getHeartbeatTimeoutMultiplier()).ifPresent(service::setHeartbeatTimeoutMultiplier);
+        
Optional.ofNullable(configuration.getClusterDataTaskMaxAttempts()).ifPresent(service::setClusterDataTaskMaxAttempts);
+        
Optional.ofNullable(configuration.getClusterDataTaskTimeout()).ifPresent(service::setClusterDataTaskTimeout);
 
         return service;
     }
diff --git 
a/components-starter/camel-file-cluster-service-starter/src/main/java/org/apache/camel/component/file/springboot/cluster/FileLockClusterServiceConfiguration.java
 
b/components-starter/camel-file-cluster-service-starter/src/main/java/org/apache/camel/component/file/springboot/cluster/FileLockClusterServiceConfiguration.java
index c87c6a9aaff..39b5b5ad71e 100644
--- 
a/components-starter/camel-file-cluster-service-starter/src/main/java/org/apache/camel/component/file/springboot/cluster/FileLockClusterServiceConfiguration.java
+++ 
b/components-starter/camel-file-cluster-service-starter/src/main/java/org/apache/camel/component/file/springboot/cluster/FileLockClusterServiceConfiguration.java
@@ -38,12 +38,15 @@ public class FileLockClusterServiceConfiguration {
     private String root;
 
     /**
-     * The time to wait before starting to try to acquire lock.
+     * The time to wait before starting to try to acquire the cluster lock. 
Note that if FileLockClusterService
+     * determines no cluster members are running or cannot reliably determine 
the cluster state, the initial delay is
+     * computed from the acquireLockInterval.
      */
     private String acquireLockDelay;
 
     /**
-     * The time to wait between attempts to try to acquire lock.
+     * The time to wait between attempts to try to acquire the cluster lock 
evaluated using wall-clock time. All cluster
+     * members must use the same value so leadership checks and leader 
liveness detection remain consistent.
      */
     private String acquireLockInterval;
 
@@ -60,6 +63,23 @@ public class FileLockClusterServiceConfiguration {
      */
     private Integer heartbeatTimeoutMultiplier;
 
+    /**
+     * The number of times a cluster data task will run, counting both the 
first execution and subsequent retries in
+     * case of failure or timeout.
+     * <p>
+     * This can be useful when the cluster data root is on network based file 
storage, where I/O operations may
+     * occasionally block for long or unpredictable periods.
+     */
+    private Integer clusterDataTaskMaxAttempts;
+
+    /**
+     * The timeout for a cluster data task (reading or writing cluster data).
+     * <p>
+     * Timeouts are useful when the cluster data root is on network storage, 
where I/O operations may occasionally block
+     * for long or unpredictable periods.
+     */
+    private Long clusterDataTaskTimeout;
+
     /**
      * Service lookup order/priority.
      */
@@ -128,4 +148,20 @@ public class FileLockClusterServiceConfiguration {
     public void setHeartbeatTimeoutMultiplier(Integer 
heartbeatTimeoutMultiplier) {
         this.heartbeatTimeoutMultiplier = heartbeatTimeoutMultiplier;
     }
+
+    public Integer getClusterDataTaskMaxAttempts() {
+        return clusterDataTaskMaxAttempts;
+    }
+
+    public void setClusterDataTaskMaxAttempts(Integer 
clusterDataTaskMaxAttempts) {
+        this.clusterDataTaskMaxAttempts = clusterDataTaskMaxAttempts;
+    }
+
+    public Long getClusterDataTaskTimeout() {
+        return clusterDataTaskTimeout;
+    }
+
+    public void setClusterDataTaskTimeout(Long clusterDataTaskTimeout) {
+        this.clusterDataTaskTimeout = clusterDataTaskTimeout;
+    }
 }

Reply via email to