Good catch! Bye, Norman
2011/9/4 <wstrza...@apache.org>: > Author: wstrzalka > Date: Sun Sep 4 16:46:32 2011 > New Revision: 1165073 > > URL: http://svn.apache.org/viewvc?rev=1165073&view=rev > Log: > Make sure we have an higher uid on each append so we don't generate out of > order events and so are imap compliant. CopyTo(...) method also generates > UIDs so should be executed with the lock granted. See MAILBOX-131 > > Modified: > > james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java > > Modified: > james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java > URL: > http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java?rev=1165073&r1=1165072&r2=1165073&view=diff > ============================================================================== > --- > james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java > (original) > +++ > james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java > Sun Sep 4 16:46:32 2011 > @@ -519,16 +519,21 @@ public class StoreMessageManager<Id> imp > * @param session > * @throws MailboxException > */ > - public List<MessageRange> copyTo(MessageRange set, > StoreMessageManager<Id> toMailbox, MailboxSession session) throws > MailboxException { > + public List<MessageRange> copyTo(final MessageRange set, final > StoreMessageManager<Id> toMailbox, final MailboxSession session) throws > MailboxException { > if (!toMailbox.isWriteable(session)) { > throw new ReadOnlyException(new > StoreMailboxPath<Id>(getMailboxEntity()),session.getPathDelimiter()); > } > > try { > - Map<Long, MessageMetaData> copiedUids = copy(set, toMailbox, > session); > - dispatcher.added(session, copiedUids, > toMailbox.getMailboxEntity()); > + return locker.executeWithLock(session, new > StoreMailboxPath<Id>(getMailboxEntity()), new > MailboxPathLocker.LockAwareExecution<List<MessageRange>>() { > > - return MessageRange.toRanges(new > ArrayList<Long>(copiedUids.keySet())); > + @Override > + public List<MessageRange> execute() throws MailboxException { > + Map<Long, MessageMetaData> copiedUids = copy(set, > toMailbox, session); > + dispatcher.added(session, copiedUids, > toMailbox.getMailboxEntity()); > + return MessageRange.toRanges(new > ArrayList<Long>(copiedUids.keySet())); > + } > + }, true); > } catch (MailboxException e) { > throw new MailboxException("Unable to parse message", e); > } > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org > For additional commands, e-mail: server-dev-h...@james.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org