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 5bfcbe090c41b37ff3d1f109982d895fce0b953e Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Tue Jun 23 11:33:11 2020 +0700 JAMES-3170 CassandraBlobStoreCache should not propagate failures --- .../blob/cassandra/cache/CassandraBlobStoreCache.java | 6 +++++- .../james/blob/cassandra/cache/CachedBlobStoreTest.java | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/cache/CassandraBlobStoreCache.java b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/cache/CassandraBlobStoreCache.java index 5584a6c..fe912bb 100644 --- a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/cache/CassandraBlobStoreCache.java +++ b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/cache/CassandraBlobStoreCache.java @@ -87,7 +87,11 @@ public class CassandraBlobStoreCache implements BlobStoreCache { .setString(ID, blobId.asString()) .setConsistencyLevel(ONE) .setReadTimeoutMillis(readTimeOutFromDataBase)) - .map(this::toByteArray); + .map(this::toByteArray) + .onErrorResume(e -> { + LOGGER.warn("Fail reading blob store cache", e); + return Mono.empty(); + }); } @Override diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java index 1d2abcd..c8c66a0 100644 --- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java +++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.james.blob.cassandra.cache; +import static org.apache.james.backends.cassandra.Scenario.Builder.fail; import static org.apache.james.blob.api.BlobStore.StoragePolicy.HIGH_PERFORMANCE; import static org.apache.james.blob.api.BlobStore.StoragePolicy.LOW_COST; import static org.apache.james.blob.api.BlobStore.StoragePolicy.SIZE_BASED; @@ -282,6 +283,20 @@ public class CachedBlobStoreTest implements BlobStoreContract { }); } + @Test + public void readShouldNotPropagateFailures(CassandraCluster cassandra) { + BlobId blobId = Mono.from(testee.save(DEFAULT_BUCKETNAME, APPROXIMATELY_FIVE_KILOBYTES, SIZE_BASED)).block(); + + cassandra.getConf().registerScenario(fail() + .times(1) + .whenQueryStartsWith("SELECT * FROM blob_cache WHERE id=:id")); + + Mono.from(cache.read(blobId)).block(); + + assertThat(testee().read(DEFAULT_BUCKETNAME, blobId)) + .hasSameContentAs(new ByteArrayInputStream(APPROXIMATELY_FIVE_KILOBYTES)); + } + @Nested class MetricsTest { @Test --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org