Nick, Believe it or not I did get around to reviewing this last night here are my comments:
1) I think documentation should start with 2 node scenario and then move to 3 node. 2) You discuss node failure, however I feel like network failure is more common. In particular I am currious what takes place with 2 node multi master when the network goes down between them (split brain) 3) If I understand correctly (and I may not) each node consists of an h2 database, and a user defined TransportServer. Essentially the h2 database acts like a client to the TransportServer. What happens when the TransportServer goes down but the database is still accepting clients? 4) If I was to expand upon this to do master-slave replication I would need to implement two different TransportServers one that runs in the master database node, and a different one that runs in the slave database node. Am I correct? Overall, I think this is a very good start to adding "real" replication to H2, and should be considered for inclusion. Jacob On Jun 27, 5:13 am, nick betteridge <nick.betteri...@googlemail.com> wrote: > Hi > > I have written a Transport Server which permits any form of transport to > used between client and server. The TransportServer can also be set up > to perform master-master replication with database recovery should a > node go down, a db update occur and then the failed node restarts. > > The default transport is java.net.Socket and java.net.ServerSocket. I > have also enclosed the transport for grizzly, although there is still a > bug somewhere - I've run out of time to spend on this so if anyone is > interested and has time to look into this I would be very grateful. I've > spent a lot of time with the grizzly guy who is writing grizzy 2 and the > latest version (in the trunk) is stable for blocking mode. > > If you want to add your own transport, look at both the default > implemention (org.h2.engine.Transport*) and the test_h2_socket and > test_h2_grizzly (in the enclosed zip), and of course > org.h2.server.Transport*. Most of it is boilerplate. > > The test_h2_socket demonstrates the master-master replication - 3 > servers and 3 clients. Start the servers first, then the clients. You > will need to change the ip address in the 3 server classes to your local > address or 127.0.0.1 - my ubuntu has issues with 127.0.0.1 for some > reason. Update a value -> string = integer in the client. > > If I have left anything out of the enclosed documentation then please > mail me and tell me. > > This should be a good starting point for both enhancing what I've > already done and including other forms of replication, master-slave etc. > > It would be great if this could eventually be included in the trunk. > > Nick > > h2_transportserver.zip > 99KViewDownload > > TransportServer.pdf > 312KViewDownload > > h2.patch > 55KViewDownload --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "H2 Database" group. To post to this group, send email to h2-database@googlegroups.com To unsubscribe from this group, send email to h2-database+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/h2-database?hl=en -~----------~----~----~----~------~----~------~--~---