You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2021/08/31 03:03:36 UTC

[james-project] 01/03: JAMES-3150 Fix BloomFilterGCAlgorithm - handler more special cases

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 accab931768e3673694d1864951a2abe85b34f33
Author: Tung Van TRAN <vt...@linagora.com>
AuthorDate: Thu Aug 26 16:16:46 2021 +0700

    JAMES-3150 Fix BloomFilterGCAlgorithm - handler more special cases
---
 .../james/server/blob/deduplication/BloomFilterGCAlgorithm.java    | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/server/blob/blob-storage-strategy/src/main/java/org/apache/james/server/blob/deduplication/BloomFilterGCAlgorithm.java b/server/blob/blob-storage-strategy/src/main/java/org/apache/james/server/blob/deduplication/BloomFilterGCAlgorithm.java
index d9fc0aa..283d7fc 100644
--- a/server/blob/blob-storage-strategy/src/main/java/org/apache/james/server/blob/deduplication/BloomFilterGCAlgorithm.java
+++ b/server/blob/blob-storage-strategy/src/main/java/org/apache/james/server/blob/deduplication/BloomFilterGCAlgorithm.java
@@ -261,13 +261,18 @@ public class BloomFilterGCAlgorithm {
 
     public Mono<Result> gc(int expectedBlobCount, double associatedProbability, BucketName bucketName, Context context) {
         return populatedBloomFilter(expectedBlobCount, associatedProbability, context)
-            .flatMap(bloomFilter -> gc(bloomFilter, bucketName, context));
+            .flatMap(bloomFilter -> gc(bloomFilter, bucketName, context))
+            .onErrorResume(error -> {
+                LOGGER.error("Error when running blob deduplicate garbage collection", error);
+                return Mono.just(Result.PARTIAL);
+            });
     }
 
     private Mono<Result> gc(BloomFilter<CharSequence> bloomFilter, BucketName bucketName, Context context) {
         return Flux.from(blobStoreDAO.listBlobs(bucketName))
             .doOnNext(blobId -> context.incrementBlobCount())
             .flatMap(blobId -> gcBlob(bloomFilter, blobId, bucketName, context))
+            .switchIfEmpty(Mono.just(Result.COMPLETED))
             .reduce(Task::combine);
     }
 

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