You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2020/06/25 06:50:48 UTC
[james-project] 04/04: JAMES-3170 CassandraBlobStoreCache should
not propagate failures
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 <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org