You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2023/04/13 07:23:09 UTC

[james-project] 05/07: [PERF] S3BlobStoreDAO: Open/close inout streams on elastic threads

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

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

commit 57f1f7a979307577d5188aa32b99415262ccde6c
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Apr 12 13:45:11 2023 +0700

    [PERF] S3BlobStoreDAO: Open/close inout streams on elastic threads
    
    Blocking operations where performed on the Cassandra driver event loop.
---
 .../java/org/apache/james/blob/objectstorage/aws/S3BlobStoreDAO.java | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/server/blob/blob-s3/src/main/java/org/apache/james/blob/objectstorage/aws/S3BlobStoreDAO.java b/server/blob/blob-s3/src/main/java/org/apache/james/blob/objectstorage/aws/S3BlobStoreDAO.java
index 564a8a8381..ba85e2375e 100644
--- a/server/blob/blob-s3/src/main/java/org/apache/james/blob/objectstorage/aws/S3BlobStoreDAO.java
+++ b/server/blob/blob-s3/src/main/java/org/apache/james/blob/objectstorage/aws/S3BlobStoreDAO.java
@@ -305,10 +305,9 @@ public class S3BlobStoreDAO implements BlobStoreDAO, Startable, Closeable {
 
         return Mono.fromCallable(content::size)
             .flatMap(contentLength ->
-                Mono.using(content::openStream,
+                Mono.usingWhen(Mono.fromCallable(content::openStream).subscribeOn(Schedulers.boundedElastic()),
                     stream -> save(resolvedBucketName, blobId, stream, contentLength),
-                    Throwing.consumer(InputStream::close),
-                    LAZY))
+                    stream -> Mono.fromRunnable(Throwing.runnable(stream::close))))
             .retryWhen(createBucketOnRetry(resolvedBucketName))
             .onErrorMap(IOException.class, e -> new ObjectStoreIOException("Error saving blob", e))
             .onErrorMap(SdkClientException.class, e -> new ObjectStoreIOException("Error saving blob", e))


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org