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

James Cone <>
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
or
   - with application knowledge, is still impossible

Regards,
James.

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
> 
> http://www.erlang.org/mailman/listinfo/erlang-questions
> 



More information about the erlang-questions mailing list