Benoit Tellier created JAMES-3407:
-------------------------------------

             Summary: 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
             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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to