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

René Cordier commented on JAMES-3407:
-------------------------------------

[https://github.com/linagora/james-project/pull/3879] contributes this

> Read repair for mailbox denormalisation
> ---------------------------------------
>
>                 Key: JAMES-3407
>                 URL: https://issues.apache.org/jira/browse/JAMES-3407
>             Project: James Server
>          Issue Type: Improvement
>          Components: cassandra, mailbox
>            Reporter: Benoit Tellier
>            Priority: Major
>             Fix For: 3.6.0
>
>
> = Why
> Following this ADR https://github.com/apache/james-project/pull/248
> Mailbox inconsistencies requires manual intervention of the admin (via the 
> solve-inconsistency webadmin endpoint) to be resolved.
> Having such task to ensure a correct denormalisation state is desirable, but 
> optimally we should not have to rely on the admin to remember running it.
> We would prefer an auto-healing solution
> = Context
> Read repair is a classic mechanism in eventual consistent databases (like 
> cassandra) to piggy back consistency healing operation upon reads.
> A fraction of the reads will have a wider reach, read more data, and ensure 
> it is correctly replicated.
> Cassandra eventual consistency is all about "replication", but 
> "denormalization" consistency needs to be handled at the applicative layer. 
> In the past we did set up "Solve inconsistency" tasks that can be assimilated 
> to Cassandra repairs. In order to achieve denormalization auto-healing, we 
> thus needs to implement "applicative read repairs".
> = Technically speaking
> Upon reads, for each mailbox, the mailbox mapper have a configurable random 
> chance to trigger read repairs.
> In this case both table are read, and the "solve inconsistency" mechanism is 
> applied, if needed.
> Write unit tests demonstrating this "solve inconsistency" behaviour.
> Also read repairs are the missing bit to make the "read only mailboxPath" 
> optimization viable: development needs to happen on top of 
> https://github.com/linagora/james-project/pull/3635 ` POC Denormalize 
> UidValidity as part of MailboxPath projection` branch
> = Definition Of Done
> Record a video : 
>  - Given a read repair chance of 0.2 (20%)
>  - There is a mailbox inconsistency (no OUTBOX) - (remove the mailbox entry 
> manually in cassandra)
>  - The user does many requests - after some time, the inconsistency is fixed: 
> he has an OUTBOX again!
> As an admin, I should be able to configure (or disable) the 
> read-repair-chance for the mailbox entity



--
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