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

quantranhong1999 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit cfc54791b408c43912bab5ba5daadc6b1b9918fe
Author: Benoit TELLIER <[email protected]>
AuthorDate: Thu Sep 17 09:38:42 2026 +0200

    [BUILD] S3: configurable healthcheck timeout
---
 .../org/apache/james/blob/api/ObjectStorageHealthCheck.java    | 10 ++++++++--
 .../apache/james/blob/objectstorage/aws/S3HealthCheckTest.java |  4 +++-
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git 
a/server/blob/blob-api/src/main/java/org/apache/james/blob/api/ObjectStorageHealthCheck.java
 
b/server/blob/blob-api/src/main/java/org/apache/james/blob/api/ObjectStorageHealthCheck.java
index 266b4f14ce..543d591743 100644
--- 
a/server/blob/blob-api/src/main/java/org/apache/james/blob/api/ObjectStorageHealthCheck.java
+++ 
b/server/blob/blob-api/src/main/java/org/apache/james/blob/api/ObjectStorageHealthCheck.java
@@ -32,15 +32,21 @@ import reactor.core.publisher.Mono;
 
 public class ObjectStorageHealthCheck implements HealthCheck {
 
-    private static final Integer HEALTH_CHECK_TIMEOUT = 10;
+    private static final Duration HEALTH_CHECK_TIMEOUT = 
Duration.ofSeconds(10);
 
     private static final ComponentName COMPONENT_NAME = new 
ComponentName("ObjectStorage");
 
     private final BlobStoreDAO blobStoreDAO;
+    private final Duration timeout;
 
     @Inject
     public ObjectStorageHealthCheck(BlobStoreDAO blobStoreDAO) {
+        this(blobStoreDAO, HEALTH_CHECK_TIMEOUT);
+    }
+
+    public ObjectStorageHealthCheck(BlobStoreDAO blobStoreDAO, Duration 
timeout) {
         this.blobStoreDAO = blobStoreDAO;
+        this.timeout = timeout;
     }
 
     @Override
@@ -51,7 +57,7 @@ public class ObjectStorageHealthCheck implements HealthCheck {
     @Override
     public Mono<Result> check() {
         return Flux.from(blobStoreDAO.listBuckets())
-            .timeout(Duration.ofSeconds(HEALTH_CHECK_TIMEOUT))
+            .timeout(timeout)
             .next()
             .thenReturn(Result.healthy(COMPONENT_NAME))
             .onErrorResume(e -> Mono.just(Result.unhealthy(COMPONENT_NAME, 
"Error checking ObjectSotrage", e)));
diff --git 
a/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/S3HealthCheckTest.java
 
b/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/S3HealthCheckTest.java
index 11570eba3a..17dc943ab3 100644
--- 
a/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/S3HealthCheckTest.java
+++ 
b/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/S3HealthCheckTest.java
@@ -21,6 +21,8 @@ package org.apache.james.blob.objectstorage.aws;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.time.Duration;
+
 import org.apache.james.blob.api.BlobStoreDAO;
 import org.apache.james.blob.api.ObjectStorageHealthCheck;
 import org.apache.james.blob.api.TestBlobId;
@@ -52,7 +54,7 @@ public class S3HealthCheckTest {
 
         S3ClientFactory s3ClientFactory = new S3ClientFactory(s3Configuration, 
new RecordingMetricFactory(), new NoopGaugeRegistry());
         BlobStoreDAO s3BlobStoreDAO = new S3BlobStoreDAO(s3ClientFactory, 
s3Configuration, new TestBlobId.Factory(), S3RequestOption.DEFAULT);
-        s3HealthCheck = new ObjectStorageHealthCheck(s3BlobStoreDAO);
+        s3HealthCheck = new ObjectStorageHealthCheck(s3BlobStoreDAO, 
Duration.ofSeconds(2));
     }
 
     @AfterEach


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to