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]
