Benoit Tellier created JAMES-3105:
-------------------------------------

             Summary: Corrective task for mailbox counters
                 Key: JAMES-3105
                 URL: https://issues.apache.org/jira/browse/JAMES-3105
             Project: James Server
          Issue Type: New Feature
          Components: cassandra, mailbox
            Reporter: Benoit Tellier


Cassandra maintains a per mailbox projection for message count and unseen 
message count.

As with any projection, it can go out of sync, leading to inconsistent results 
being returned to the client, which is not acceptable.

We need to expose a corrective task, resetting mailbox counters to their 
correct value.

The proposed endpoint is:

{code:java}
curl -XPST http://ip:port/mailbox?task=RecomputeMailboxCounters
{code}

This endpoints will:
 - List existing mailboxes
 - List their messages
 - Check them against their source of truth
 - Compute mailbox counter values
 - And reset the value of the counter if needed

Of course, this endpoint won't be friendly in the face of concurrent 
operations, which would be ignored during the recomputation of the counter of 
the given mailbox. However the source of truth is unaffected hence, upon 
rerunning the task, the result will be eventually correct.

To be noted that we rely on the "listing messages by mailbox" projection (that 
we recheck). Missing entries in there will be ignored until the given 
projection is healed (currently unsupported). We furthermore can piggy back a 
partial check of the message denormalization upon counter recomputation 
(partial because we cannot detect missing entries in the "list messages in 
mailbox" denormalization table)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to