<quote who="hyc@OpenLDAP.org">
Update of /repo/OpenLDAP/pkg/ldap/tests/scripts
Modified Files: test050-syncrepl-multimaster 1.2 -> 1.3
Log Message: Additional syncrepl timeouts needed
CVS Web URLs: http://www.openldap.org/devel/cvsweb.cgi/tests/scripts/ http://www.openldap.org/devel/cvsweb.cgi/tests/scripts/test050-syncrepl-mult...
Nice!
But I'm confused. I thought we didn't use the multimaster name, but MirrorMode instead?
Gavin.
Gavin Henry wrote:
Nice!
But I'm confused. I thought we didn't use the multimaster name, but MirrorMode instead?
I guess you haven't been following the syncrepl thread on -devel. After I figured out that the fix for ITS#4703 and #4623 was going to be half-way to multimaster anyway, it seemed silly to stop there. I spent this weekend coding up the remainder.
With the recent hubbub on the -software list about it I decided to keep quiet for a bit. Talking about it before it's done smacks of vaporware; it needs to be tested more before we start talking about it more broadly.
All that aside, it's working fine for regular syncrepl with both refreshOnly and refreshAndPersist. I don't really see delta-syncrepl supporting it; right now I just don't feel like writing the code to parse the accesslog to do the necessary conflict resolution. Of course, anyone else could take that on.
I'm still tinkering with it a bit. Not entirely happy with the whole rid vs sid / cookie concept. I'd like to take a different approach, but right now we're still backward compatible, so it will probably stay this way.
<quote who="Howard Chu">
Gavin Henry wrote:
Nice!
But I'm confused. I thought we didn't use the multimaster name, but MirrorMode instead?
I guess you haven't been following the syncrepl thread on -devel. After I figured out that the fix for ITS#4703 and #4623 was going to be half-way to multimaster anyway, it seemed silly to stop there. I spent this weekend coding up the remainder.
Excellent. Just found the e-mails. I did read them, but I just didn't *read* them, if you get me.
http://www.openldap.org/lists/openldap-devel/200702/msg00011.html http://www.openldap.org/lists/openldap-devel/200702/msg00015.html
"So - no one can say OpenLDAP doesn't have multimaster replication any more." !!!
With the recent hubbub on the -software list about it I decided to keep quiet for a bit. Talking about it before it's done smacks of vaporware; it needs to be tested more before we start talking about it more broadly.
Sure. I might take a pop at the latest devel and make test?
All that aside, it's working fine for regular syncrepl with both refreshOnly and refreshAndPersist. I don't really see delta-syncrepl supporting it; right now I just don't feel like writing the code to parse the accesslog to do the necessary conflict resolution. Of course, anyone else could take that on.
Understood. I wish I could help.
I'm still tinkering with it a bit. Not entirely happy with the whole rid vs sid / cookie concept. I'd like to take a different approach, but right now we're still backward compatible, so it will probably stay this way.
Thanks for the update. I need to pull -devel out into a seperate IMAP folder ;-)
Gavin.
-- -- Howard Chu Chief Architect, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc Chief Architect, OpenLDAP http://www.openldap.org/project/
Howard Chu wrote:
With the recent hubbub on the -software list about it I decided to keep quiet for a bit. Talking about it before it's done smacks of vaporware; it needs to be tested more before we start talking about it more broadly.
And on that note... Here are some scenarios that need to be tested:
single DB with multiple consumers: this isn't what most people think of re: multimaster. The server is a pure slave, all of its data comes from other providers. Since it is not multimaster, local writes are disallowed, same as the old single DB / single consumer scenario.
pair of peer servers: this is 2-way multimaster, like mirrormode. Each server has a provider, and a consumer pointed at the other. Local writes are allowed. This is what test050 sets up, but the script doesn't actually test anything after the DBs are populated. I've been poking and prodding it manually. Will probably want to use slapd-tester here.
N-way multimaster: this could take two basic approaches - sparse connection, or full connections. Currently the code does not support the sparse approach. (We need to add support for multiple URLs in a single consumer.)
For the fully connected approach, each server has a separate consumer pointed at each other server. The provider would only propagate locally-generated changes; changes received via a consumer would just stop there because it's assumed that all of the servers are receiving the changes at the same time.
At the moment it doesn't work that way - any change is always propagated, so in Persist mode there's some excess traffic.
For the sparse approach, each server would have a single consumer configured with multiple URLs. This means there would only be one active consumer session at a time, and it would only switch away from the active URL if that server went down. The most obvious implementation would be to treat the list of URLs as a ring. Each server would find its own listenerURL in the list, and connect to the next server in the list first. (Again, I'm assuming that all of the servers are replicating their configs as well as their main data, thus a single consumer config would list the URLs of all of the participating servers.) Any change that arrived anywhere would have to be propagated onward. The advantage here is fewer open connections; a disadvantage is the long propagation delay for updates traversing the ring.
Of course you could do some combination of the two approaches - configure more than one consumer, but fewer than the total number of servers. In each consumer you would configure URLs for a subset of all the servers.
... For any of the multimaster configurations, we should also set up a couple of regular consumers to verify that cascading still works.