Hello Raphael,

The simple fix could be :

 - 1. Iterating the in memory list of record
 - 2. For each record, refresh it (re read it from DB to be sure to have
the latest version of it)
 - 3. Then detect inconsistencies (reading the associated
denormalization table)

Step 2., currently not implemented in [1], could be a way to mitigate
these risks.

[1] Solving mailbox inconsistencies:
   https://github.com/linagora/james-project/pull/3110

That way you decrease the concurrency window to the maximum.

Cheers,

Benoit

On 18/02/2020 23:50, Raphaël Ouazana-Sustowski wrote:
> Hello,
> 
> Is there a way to solve inconsistencies while not adding new ones?
> 
> When you solve inconsistencies, you have a view of data in memory and
> try to fix it. If the data change between the moment you take this view
> and the moment you try to fix the inconsistency, you risk to add an
> other inconsistency, or worst to cancel a legitimate action.
> 
> Do you see a way to mitigate this risk?
> 
> Regards,
> 
> Raphaël.
> 
> Le 14/02/2020 à 11:06, Đức Trần Tiến a écrit :
>> Hello people,
>>
>> In recent days, James had been recieved a report about the strage
>> *MailboxNotFoundException*. There were some investigation to find the
>> cause
>> of the issue.
>> We found that there are some inconsistent between mailbox and
>> mailboxPathV2
>> tables. The issue is considered critical and it and bother/annoying users
>> to creates, rename, delete mailboxes.
>> I had open a PR for demonstrate this problem in unit test
>> https://github.com/linagora/james-project/pull/3100. There are some taken
>> actions to be resolving the mailbox inconsistencies.
>>
>> But look back to the bigger picture, there're many tables have close
>> relationships, mailbox and mailboxPathV2 is just an example. There are
>> several proposals to prevent inconsistent but some have not been
>> discussed
>> further than an idea:
>>
>>   - Introducing a *transaction* bounded with cassandra (it can
>> systematically resolve the issue)
>>   - Re write the MailboxManager by *EventSourcing*
>>   - Having tools to fix the already existing inconsistent
>>
>> *Having tools to fix the already existing inconsistent*
>>
>> We have:
>>   - Webadmin Task for solving inconsistent cassandra mappings
>>   - A self healing MessageFastViewProjections
>>
>> In developement:
>>   - Webadmin Task for solving inconsistent mailbox & mailboxPath
>>   - Retrying on failed mailbox creation/deletion
>>
>> I want to bring this conversation to the mailling list and hope that
>> we can
>> contribute solutions, enrich the proposals in order to reduce/fix the
>> cassandra inconsistencies.
>>
>> Thank you!
>>
>> Tran Tien Duc
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
> For additional commands, e-mail: server-dev-h...@james.apache.org
> 

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