[erlang-questions] Mnesia, versioning and recovering from network splits

James Cone jcone@REDACTED
Thu Jan 3 03:25:31 CET 2008

Hi Joel,

You haven't given us a plan about which data you're going to throw away.

Suppose one side of the split does a transaction that affects rows A & 
B, and the other side does a transaction that affects rows B & C.

If one side is going to be thrown away, because it's being restored from 
backup, then one whole transaction will be thrown away.

If you go row-by-row, presumably you will keep the changes to both row A 
and row C, so you have to decide what to do about row B, and making it 
consistent with both transactions either:
   - needs application knowledge
   - with application knowledge, is still impossible


Joel Reymont wrote:
> Folks,
> I think there's a reasonably straightforward way for Mnesia to recover  
> from network splits. I also think that it would be much faster to  
> merge databases in this scenario than drop a database and reload it  
> form backups.
> I believe merging databases would require versioning of Mnesia records  
> (simple integer should do) and the addition of a merging mechanism.  
> Record versions would be shipped around and the latest version of the  
> record would then be pulled by the server that has fallen behind.
> What are the flaws in my thinking?
> 	Thanks, Joel
> --
> http://wagerlabs.com
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions

More information about the erlang-questions mailing list