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

Benoit Tellier commented on JAMES-3105:
---------------------------------------

By checking on each entry the message projection, this task generate 
significant amount of load.

Given the fact that the projection might be correct, or that the difference is 
acceptable, an admin might want to run the task without paying the price of the 
message projection check.

https://github.com/linagora/james-project/pull/3325 proposes a 
`trustMessageProjection` query param to do so.

> 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
>            Priority: Major
>             Fix For: 3.5.0
>
>
> 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to