JAMES-2103 Fix StoreMessageIdManager Quota management

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/533af6aa
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/533af6aa
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/533af6aa

Branch: refs/heads/master
Commit: 533af6aa30dddcdea4a01e7c922c4ff165d6c2cc
Parents: 69cef15
Author: benwa <[email protected]>
Authored: Fri Jul 28 11:24:58 2017 +0700
Committer: benwa <[email protected]>
Committed: Tue Aug 8 10:39:51 2017 +0700

----------------------------------------------------------------------
 .../org/apache/james/mailbox/store/StoreMessageIdManager.java  | 6 ++++--
 .../james/mailbox/store/AbstractMessageIdManagerQuotaTest.java | 3 ---
 2 files changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/533af6aa/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 9b9d6e1..3d06f87 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -206,9 +206,11 @@ public class StoreMessageIdManager implements 
MessageIdManager {
 
         Map<QuotaRoot, Integer> messageCountByQuotaRoot = 
buildMapQuotaRoot(mailboxIdsToBeAdded, mailboxIdsToBeRemove, mailboxMapper);
         for (Map.Entry<QuotaRoot, Integer> entry : 
messageCountByQuotaRoot.entrySet()) {
-            if (entry.getValue() > 0) {
+            Integer additionalCopyCount = entry.getValue();
+            if (additionalCopyCount > 0) {
+                long additionalOccupiedSpace = additionalCopyCount * 
mailboxMessage.getFullContentOctets();
                 new QuotaChecker(quotaManager.getMessageQuota(entry.getKey()), 
quotaManager.getStorageQuota(entry.getKey()), entry.getKey())
-                    .tryAddition(entry.getValue(), 
mailboxMessage.getFullContentOctets());
+                    .tryAddition(additionalCopyCount, additionalOccupiedSpace);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/533af6aa/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
index bfc59d6..757f434 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
@@ -27,7 +27,6 @@ import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.OverQuotaException;
 import org.apache.james.mailbox.manager.MailboxManagerFixture;
 import org.apache.james.mailbox.mock.MockMailboxSession;
-import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.quota.CurrentQuotaManager;
 import org.apache.james.mailbox.quota.MaxQuotaManager;
@@ -35,7 +34,6 @@ import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -113,7 +111,6 @@ public abstract class AbstractMessageIdManagerQuotaTest {
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
     }
 
-    @Ignore
     @Test
     public void 
setInMailboxesShouldThrowWhenStorageQuotaExceededWhenCopiedToMultipleMailboxes()
 throws Exception {
         maxQuotaManager.setDefaultMaxStorage(2 * 
testingData.getConstantMessageSize());


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to