JAMES-2344 Quota is not updated when batch copy fails at some point

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

Branch: refs/heads/master
Commit: 2d57cf1cc9280cbbf0e25c2a6234c0e73a188446
Parents: ebcb09a
Author: Matthieu Baechler <[email protected]>
Authored: Fri Mar 2 16:11:05 2018 +0100
Committer: Matthieu Baechler <[email protected]>
Committed: Wed Mar 7 11:27:22 2018 +0100

----------------------------------------------------------------------
 .../james/mailbox/store/StoreMessageManager.java    | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/2d57cf1c/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index 704d881..23d9108 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -709,13 +709,14 @@ public class StoreMessageManager implements 
org.apache.james.mailbox.MessageMana
     private Iterator<MessageMetaData> copy(Iterator<MailboxMessage> 
originalRows, MailboxSession session) throws MailboxException {
         final List<MessageMetaData> copiedRows = new ArrayList<>();
         final MessageMapper messageMapper = 
mapperFactory.getMessageMapper(session);
-        QuotaChecker quotaChecker = new QuotaChecker(quotaManager, 
quotaRootResolver, mailbox);
 
         while (originalRows.hasNext()) {
             final MailboxMessage originalMessage = originalRows.next();
-            quotaChecker.tryAddition(1, 
originalMessage.getFullContentOctets());
+            new QuotaChecker(quotaManager, quotaRootResolver, mailbox)
+                .tryAddition(1, originalMessage.getFullContentOctets());
             MessageMetaData data = messageMapper.execute(
                 () -> messageMapper.copy(getMailboxEntity(), originalMessage));
+            dispatcher.added(session, this.getMailboxEntity(), 
immutableMailboxMessageFactory.from(getMailboxEntity().getMailboxId(), 
originalMessage));
             copiedRows.add(data);
         }
         return copiedRows.iterator();
@@ -739,16 +740,7 @@ public class StoreMessageManager implements 
org.apache.james.mailbox.MessageMana
 
     private SortedMap<MessageUid, MessageMetaData> copy(MessageRange set, 
StoreMessageManager to, MailboxSession session) throws MailboxException {
         IteratorWrapper<MailboxMessage> originalRows = new 
IteratorWrapper<>(retrieveOriginalRows(set, session));
-
-        SortedMap<MessageUid, MessageMetaData> copiedUids = 
collectMetadata(to.copy(originalRows, session));
-
-        ImmutableMap.Builder<MessageUid, MailboxMessage> messagesMap = 
ImmutableMap.builder();
-        for (MailboxMessage message: originalRows.getEntriesSeen()) {
-            messagesMap.put(message.getUid(), 
immutableMailboxMessageFactory.from(to.getMailboxEntity().getMailboxId(), 
message));
-        }
-        dispatcher.added(session, copiedUids, to.getMailboxEntity(), 
messagesMap.build());
-
-        return copiedUids;
+        return collectMetadata(to.copy(originalRows, session));
     }
 
     private SortedMap<MessageUid, MessageMetaData> move(MessageRange set, 
StoreMessageManager to, MailboxSession session) throws MailboxException {


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

Reply via email to