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