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

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

commit 2d814a3cf0b7e624af0f915047caebb82cae7b46
Author: Benoit TELLIER <[email protected]>
AuthorDate: Tue Apr 2 16:10:46 2024 +0200

    [FIX] AESBlobStoreDAO caused IMAP FETCH to fail when using S3 as a backend
---
 .../java/org/apache/james/WithEncryptedBlobStoreImmutableTest.java   | 5 ++++-
 .../java/org/apache/james/WithEncryptedBlobStoreMutableTest.java     | 5 ++++-
 .../src/main/java/org/apache/james/blob/aes/AESBlobStoreDAO.java     | 4 ++--
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git 
a/server/apps/distributed-app/src/test/java/org/apache/james/WithEncryptedBlobStoreImmutableTest.java
 
b/server/apps/distributed-app/src/test/java/org/apache/james/WithEncryptedBlobStoreImmutableTest.java
index 129edfa429..62b51f5c8f 100644
--- 
a/server/apps/distributed-app/src/test/java/org/apache/james/WithEncryptedBlobStoreImmutableTest.java
+++ 
b/server/apps/distributed-app/src/test/java/org/apache/james/WithEncryptedBlobStoreImmutableTest.java
@@ -21,6 +21,7 @@ package org.apache.james;
 
 import org.apache.james.blob.aes.CryptoConfig;
 import org.apache.james.jmap.draft.JmapJamesServerContract;
+import org.apache.james.modules.AwsS3BlobStoreExtension;
 import org.apache.james.modules.RabbitMQExtension;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.apache.james.modules.blobstore.BlobStoreConfiguration;
@@ -32,7 +33,8 @@ public class WithEncryptedBlobStoreImmutableTest implements 
JmapJamesServerContr
         CassandraRabbitMQJamesConfiguration.builder()
             .workingDirectory(tmpDir)
             .configurationFromClasspath()
-            .blobStore(BlobStoreConfiguration.cassandra()
+            .blobStore(BlobStoreConfiguration.s3()
+                .enableCache()
                 .deduplication()
                 .cryptoConfig(CryptoConfig.builder()
                     .password("myPass".toCharArray())
@@ -46,6 +48,7 @@ public class WithEncryptedBlobStoreImmutableTest implements 
JmapJamesServerContr
         .extension(new DockerOpenSearchExtension())
         .extension(new CassandraExtension())
         .extension(new RabbitMQExtension())
+        .extension(new AwsS3BlobStoreExtension())
         .lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS)
         .build();
 }
diff --git 
a/server/apps/distributed-app/src/test/java/org/apache/james/WithEncryptedBlobStoreMutableTest.java
 
b/server/apps/distributed-app/src/test/java/org/apache/james/WithEncryptedBlobStoreMutableTest.java
index 42d976e6a9..39de49677d 100644
--- 
a/server/apps/distributed-app/src/test/java/org/apache/james/WithEncryptedBlobStoreMutableTest.java
+++ 
b/server/apps/distributed-app/src/test/java/org/apache/james/WithEncryptedBlobStoreMutableTest.java
@@ -20,6 +20,7 @@
 package org.apache.james;
 
 import org.apache.james.blob.aes.CryptoConfig;
+import org.apache.james.modules.AwsS3BlobStoreExtension;
 import org.apache.james.modules.RabbitMQExtension;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.apache.james.modules.blobstore.BlobStoreConfiguration;
@@ -31,7 +32,8 @@ public class WithEncryptedBlobStoreMutableTest implements 
MailsShouldBeWellRecei
         CassandraRabbitMQJamesConfiguration.builder()
             .workingDirectory(tmpDir)
             .configurationFromClasspath()
-            .blobStore(BlobStoreConfiguration.cassandra()
+            .blobStore(BlobStoreConfiguration.s3()
+                .enableCache()
                 .deduplication()
                 .cryptoConfig(CryptoConfig.builder()
                     .password("myPass".toCharArray())
@@ -45,6 +47,7 @@ public class WithEncryptedBlobStoreMutableTest implements 
MailsShouldBeWellRecei
         .extension(new DockerOpenSearchExtension())
         .extension(new CassandraExtension())
         .extension(new RabbitMQExtension())
+        .extension(new AwsS3BlobStoreExtension())
         .lifeCycle(JamesServerExtension.Lifecycle.PER_TEST)
         .build();
 }
diff --git 
a/server/blob/blob-aes/src/main/java/org/apache/james/blob/aes/AESBlobStoreDAO.java
 
b/server/blob/blob-aes/src/main/java/org/apache/james/blob/aes/AESBlobStoreDAO.java
index b8d7478f0e..e9562c014d 100644
--- 
a/server/blob/blob-aes/src/main/java/org/apache/james/blob/aes/AESBlobStoreDAO.java
+++ 
b/server/blob/blob-aes/src/main/java/org/apache/james/blob/aes/AESBlobStoreDAO.java
@@ -144,8 +144,8 @@ public class AESBlobStoreDAO implements BlobStoreDAO {
     @Override
     public Publisher<byte[]> readBytes(BucketName bucketName, BlobId blobId) {
         return Mono.from(underlying.readAsByteSource(bucketName, blobId))
-            .flatMap(reactiveByteSource -> 
decryptReactiveByteSource(reactiveByteSource, blobId))
-            .subscribeOn(ReactorUtils.BLOCKING_CALL_WRAPPER);
+            .publishOn(ReactorUtils.BLOCKING_CALL_WRAPPER)
+            .flatMap(reactiveByteSource -> 
decryptReactiveByteSource(reactiveByteSource, blobId));
     }
 
     @Override


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

Reply via email to