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]
