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 2023/09/08 02:12:44 UTC

[james-project] branch master updated: JAMES-3925 Improve CassandraUploadUsageRepository.resetSpace - query to database one time

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


The following commit(s) were added to refs/heads/master by this push:
     new 9386cdb184 JAMES-3925 Improve CassandraUploadUsageRepository.resetSpace - query to database one time
9386cdb184 is described below

commit 9386cdb18418e6d81e467c73c562cbd013f3a6bf
Author: vttran <vt...@linagora.com>
AuthorDate: Thu Sep 7 12:56:48 2023 +0700

    JAMES-3925 Improve CassandraUploadUsageRepository.resetSpace - query to database one time
---
 core/src/main/java/org/apache/james/core/quota/QuotaSizeUsage.java | 2 ++
 .../jmap/cassandra/upload/CassandraUploadUsageRepository.java      | 7 ++++---
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/core/src/main/java/org/apache/james/core/quota/QuotaSizeUsage.java b/core/src/main/java/org/apache/james/core/quota/QuotaSizeUsage.java
index 00291250a1..875ded2cda 100644
--- a/core/src/main/java/org/apache/james/core/quota/QuotaSizeUsage.java
+++ b/core/src/main/java/org/apache/james/core/quota/QuotaSizeUsage.java
@@ -26,6 +26,8 @@ import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;
 
 public class QuotaSizeUsage implements QuotaUsageValue<QuotaSizeUsage, QuotaSizeLimit> {
+
+    public static final QuotaSizeUsage ZERO = new QuotaSizeUsage(0L);
     private static final Logger LOGGER = LoggerFactory.getLogger(QuotaSizeUsage.class);
 
     public static class Sanitized extends QuotaSizeUsage {
diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/upload/CassandraUploadUsageRepository.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/upload/CassandraUploadUsageRepository.java
index 7ceb174aa5..ebf61da7c5 100644
--- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/upload/CassandraUploadUsageRepository.java
+++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/upload/CassandraUploadUsageRepository.java
@@ -34,7 +34,7 @@ public class CassandraUploadUsageRepository implements UploadUsageRepository {
 
     private static final QuotaSizeUsage DEFAULT_QUOTA_SIZE_USAGE = QuotaSizeUsage.size(0);
 
-    private CassandraQuotaCurrentValueDao cassandraQuotaCurrentValueDao;
+    private final CassandraQuotaCurrentValueDao cassandraQuotaCurrentValueDao;
 
     @Inject
     public CassandraUploadUsageRepository(CassandraQuotaCurrentValueDao cassandraQuotaCurrentValueDao) {
@@ -61,7 +61,8 @@ public class CassandraUploadUsageRepository implements UploadUsageRepository {
 
     @Override
     public Mono<Void> resetSpace(Username username, QuotaSizeUsage usage) {
-        return getSpaceUsage(username).flatMap(quotaSizeUsage -> Mono.from(decreaseSpace(username, quotaSizeUsage)))
-            .then(increaseSpace(username, usage));
+        return getSpaceUsage(username)
+            .switchIfEmpty(Mono.just(QuotaSizeUsage.ZERO))
+            .flatMap(quotaSizeUsage -> decreaseSpace(username, QuotaSizeUsage.size(quotaSizeUsage.asLong() - usage.asLong())));
     }
 }


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