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]
