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]