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]
