Tellier Benoit created JAMES-1820:
-------------------------------------

             Summary: Data race condition in JMAP flags updates
                 Key: JAMES-1820
                 URL: https://issues.apache.org/jira/browse/JAMES-1820
             Project: James Server
          Issue Type: Bug
          Components: JMAP
    Affects Versions: master
            Reporter: Tellier Benoit
            Assignee: Antoine Duprat


If user A supply two concurent requests : 

 - one updating the **Seen** flag
 - one updating the **Flagged** flag (marked as starred in thunderbird for 
instance)

As a replace mode is used here, the two request will not commute and the 
message will either be : 

 - Marked as unread but flagged
 - Marked as read but unflagged
Depending of the execution order....

**Why do we care?**

Because one usually make several updates of single flags of the same message in 
some very short time window (read + deleted // read + flagged // with longer 
window : read + answered). So I expect this problem to be seen.

Because it is avoidable... **UpdateMessagePatch** is actually a week 
reresentation that do not capture the fact that in JMAP these "flag" properties 
are actually independent from one an other.

**How to solve this?** (In my opinion...)

I agree Mailbox API do not fit the requirements right know to solve this 
problem, as Mailbox API do not provide other way to set and unset flags in a 
single request (unless you do several calls). But this could be corrected by 
making **FlagsUpdateCalculator** a higher level object, write for it a real 
builder (that catches what kind of flags updates one truely want to do with 
JMAP), and pass it by the **MessageManager** API.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to