[ 
https://issues.apache.org/jira/browse/MAILBOX-350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16692904#comment-16692904
 ] 

Tellier Benoit commented on MAILBOX-350:
----------------------------------------

To answer you question:

> (BTW: Is it correct to allow reuse of UIDs in UidMsnConverter?)

The UidMsnConverter is an inMemory component responsible of tracking MSN to UID 
mapping.

It is not responsible for generating a monotic, strictly increasing UID.

Note that we are soon going to have a distributed topology. Messaging being not 
100% reliable, we could have duplicated events, which would then be valid 
(UidMsnConverter being idempotent). Telling the difference between a duplicated 
event and a software bug would then be complicated.

> Double added events from StoreMessageManager can cause wrong sequence numbers
> -----------------------------------------------------------------------------
>
>                 Key: MAILBOX-350
>                 URL: https://issues.apache.org/jira/browse/MAILBOX-350
>             Project: James Mailbox
>          Issue Type: Bug
>          Components: store
>    Affects Versions: master, 3.1.0, 3.2.0
>         Environment: Tested on Linux with Maildir storage and James 3.1.0
>            Reporter: Johan Tjernström
>            Priority: Major
>
> When a COPY command is issued for a message two added events are dispatched 
> from StoreMessageManager 
> (mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java).
>  The first event (row 712) use the message UID from the source mailbox and 
> the second event (row 743) use a new UID from the target mailbox. If the 
> source UID is "available" in the target mailbox a new entry will be added to 
> the target mailbox UidMsnConverter which will mess up the sequence numbers.
> In the example below two connection A and B are used. A selects the Inbox and 
> B selects the Trash mailbox. Inbox and Trash contains one message each.
> {{* OK JAMES IMAP4rev1 Server Server imapsrv is ready.}}
>  {{A1 LOGIN "[email protected]" "1234"}}
>  {{A1 OK LOGIN completed.}}
>  {{A2 SELECT inbox}}
>  {{* FLAGS (\Answered \Deleted \Draft \Flagged \Seen)}}
>  {{* 1 EXISTS}}
>  {{* 0 RECENT}}
>  {{* OK [UIDVALIDITY 1892339292] UIDs valid}}
>  {{* OK [UNSEEN 1] MailboxMessage 1 is first unseen}}
>  {{* OK [PERMANENTFLAGS (\Answered \Deleted \Draft \Flagged \Seen)] Limited}}
>  {{* OK [HIGHESTMODSEQ 1538993301626] Highest}}
>  {{* OK [UIDNEXT 2] Predicted next UID}}
>  {{A2 OK [READ-WRITE] SELECT completed.}}
>  {{A3 FETCH 1:* (FLAGS)}}
>  {{* 1 FETCH (FLAGS ())}}
>  {{A3 OK FETCH completed.}}
>  {{* OK JAMES IMAP4rev1 Server Server imapsrv is ready.}}
>  {{B1 LOGIN "[email protected]" "1234"}}
>  {{B1 OK LOGIN completed.}}
>  {{B3 SELECT Trash}}
>  {{* FLAGS (\Answered \Deleted \Draft \Flagged \Seen)}}
>  {{* 1 EXISTS}}
>  {{* 1 RECENT}}
>  {{* OK [UIDVALIDITY 286991256] UIDs valid}}
>  {{* OK [UNSEEN 1] MailboxMessage 1 is first unseen}}
>  {{* OK [PERMANENTFLAGS (\Answered \Deleted \Draft \Flagged \Seen)] Limited}}
>  {{* OK [HIGHESTMODSEQ 1538993663429] Highest}}
>  {{* OK [UIDNEXT 3] Predicted next UID}}
>  {{B3 OK [READ-WRITE] SELECT completed.}}
>  Clear Trash
>  {{B4 STORE 1 +FLAGS (\Deleted)}}
>  {{* 1 FETCH (FLAGS (\Deleted \Recent))}}
>  {{B4 OK STORE completed.}}
>  {{B5 EXPUNGE}}
>  {{* 1 EXPUNGE}}
>  {{* 0 RECENT}}
>  {{B5 OK EXPUNGE completed.}}
>  {{B6 FETCH 1:* (FLAGS)}}
>  {{B6 BAD FETCH failed. Invalid messageset.}}
>  Copy message from Inbox to Trash
>  {{A4 COPY 1 Trash}}
>  {{A4 OK [COPYUID 286991256 1 3] COPY completed.}}
>  Check messages in Trash
>  {{B7 FETCH 1:* (FLAGS)}}
>  {{* 2 FETCH (FLAGS (\Recent))}}
>  {{* 2 EXISTS}} <-- SHOULD ONLY BE ONE!
>  {{* 2 RECENT}}
>  {{B7 OK FETCH completed.}}
> Removing the first event seems to fix the problem.
> (BTW: Is it correct to allow reuse of UIDs in UidMsnConverter?)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to