Hello Raphael. You mention risk of cancelling a legitimate action that could have been taken as an inconsistency.
To prevent that, a strategy based on delays could be effective as well: - Detect all the inconsistencies - Wait long enough to be sure ongoing operations are finished. 2 times the Cassandra driver time out should be enough. - Confirm the inconsistency - Then fix it. (night is generally of good advice) On 19/02/2020 23:27, Raphaël Ouazana-Sustowski wrote: > Hello, > > My main concern is that trying to solve some inconsistencies, we risk to > introduce some incorrectness. > > Your proposal is probably reducing the window of error, but it > potentially adds errors where we had only inconsistencies. Do we accept > that trade-off? An inconsistency is an error in itself, so I am. Regards, Benoit > > Regards, > > Raphaël. > > Le 19/02/2020 à 09:10, Tellier Benoit a écrit : >> 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 >> >> > > --------------------------------------------------------------------- > 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