rein@OpenLDAP.org wrote:
Full_Name: Rein Tollevik Version: CVS head OS: linux and solaris URL: ftp://ftp.openldap.org/incoming/rein-serverID.patch Submission from: (NULL) (81.93.160.250) Submitted by: rein
Syncrepl includes the serverID in the syncCookie in multi-master mode only, but there are other configuration that would benefit from it as well.
A case I have is where a consumer replicates a glue'ed database, with the exception of one subordinate backend where the consumer is the master. The subordinate backend is replicated back to the master of the glue'ed database. With the current code the master would send the content of the subordinate db back to its master.
Understood. In fact, having multiple sources of data in a glued tree is really a form of multi-master. (The separate glued branches cannot cause inconsistencies with each other, but still their contextCSNs must be managed individually.)
A patch that fixes this is at the referenced URL. As I am not sure of the consequences if a defaulted serverID=0 value was included in the syncCookie the patch changes the internal default slap_serverID value to -1 to make it possible to differentiate between a configured and defaulted serverID=0.
Btw, there are potential problems with using serverID=0, so it would be best if that value was reserved for the default unconfigured case. I.e, a default serverID=0 value could be chosen be slapadd when the two-argument form of serverID is used in the config, as resolving the URL needs the listener argument to slapd to succeed.
You mean the three-argument form? The two-argument form only allows a single serverID to be configured anyway, so there is no ambiguity there. But you're right, in tool mode when multiple serverIDs are configured, there's no way for it to choose the right serverID. That's a problem regardless of whether the default is 0 or -1 though.
For now I think this is a doc issue; we could simply recommend that slapadd always be performed on the node with ID 0, and you manually change the serverID config if you need to slapadd on some other node.