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 2019/08/01 07:31:02 UTC

[james-project] 09/20: JAMES-2838 CassandraBlobStore delete implementation

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 dbd546f07f3667e7c99a44e653a8b4c99dd9faa6
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Jul 25 11:36:12 2019 +0200

    JAMES-2838 CassandraBlobStore delete implementation
---
 .../apache/james/blob/cassandra/CassandraBlobStore.java  |  8 +++++++-
 .../james/blob/cassandra/CassandraBlobStoreTest.java     | 16 ++++++++--------
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobStore.java b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobStore.java
index 931ea38..e9fa212 100644
--- a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobStore.java
+++ b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobStore.java
@@ -159,7 +159,13 @@ public class CassandraBlobStore implements BlobStore {
 
     @Override
     public Mono<Void> delete(BucketName bucketName, BlobId blobId) {
-        throw new NotImplementedException("not implemented");
+        if (isDefaultBucket(bucketName)) {
+            return defaultBucketDAO.deletePosition(blobId)
+                .then(defaultBucketDAO.deleteParts(blobId));
+        } else {
+            return bucketDAO.deletePosition(bucketName, blobId)
+                .then(bucketDAO.deleteParts(bucketName, blobId));
+        }
     }
 
     private Mono<byte[]> readPart(BucketName bucketName, BlobId blobId, Integer partIndex) {
diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreTest.java
index 4829757..3014a60 100644
--- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreTest.java
+++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreTest.java
@@ -30,6 +30,7 @@ import org.apache.james.backends.cassandra.init.configuration.CassandraConfigura
 import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.api.BlobStore;
 import org.apache.james.blob.api.BucketBlobStoreContract;
+import org.apache.james.blob.api.DeleteBlobStoreContract;
 import org.apache.james.blob.api.HashBlobId;
 import org.apache.james.blob.api.MetricableBlobStore;
 import org.apache.james.blob.api.MetricableBlobStoreContract;
@@ -41,7 +42,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 
 import com.google.common.base.Strings;
 
-public class CassandraBlobStoreTest implements MetricableBlobStoreContract, BucketBlobStoreContract {
+public class CassandraBlobStoreTest implements MetricableBlobStoreContract, BucketBlobStoreContract, DeleteBlobStoreContract {
     private static final int CHUNK_SIZE = 10240;
     private static final int MULTIPLE_CHUNK_SIZE = 3;
 
@@ -102,6 +103,12 @@ public class CassandraBlobStoreTest implements MetricableBlobStoreContract, Buck
 
     }
 
+    @Override
+    @Disabled("Concurrent read and delete can lead to partial reads (no transactions)")
+    public void readShouldNotReadPartiallyWhenDeletingConcurrentlyBigBlob() {
+
+    }
+
     @Test
     void readBytesShouldReturnSplitSavedDataByChunk() {
         String longString = Strings.repeat("0123456789\n", MULTIPLE_CHUNK_SIZE);
@@ -118,11 +125,4 @@ public class CassandraBlobStoreTest implements MetricableBlobStoreContract, Buck
         InputStream bytes = testee.read(testee.getDefaultBucketName(), blobId);
         assertThat(bytes).hasSameContentAs(new ZeroedInputStream(100_000_000));
     }
-
-    @Override
-    @Disabled("JAMES-2829 Not supported yet")
-    public void deleteShouldPublishDeleteTimerMetrics() {
-
-    }
-
 }
\ No newline at end of file


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