Emmanuel Lecharny (JIRA) wrote:
[
https://issues.apache.org/jira/browse/DIRSERVER-1651?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13094820#comment-13094820
]
Emmanuel Lecharny commented on DIRSERVER-1651:
----------------------------------------------
Absolutely.
As we are currently working on this part, I think we are going to make the
cookie compatinle.
That's probably the easiest thing to do. Sorry for this; OpenLDAP clearly
deviated from the intention of RFC4533 here. I.e., the cookie was meant to be
an opaque value that is not interpreted by the consumers. I believe in the
usual case, a consumer that needed to "know" the replication state was
supposed to generate its own private state, independent of the cookie that the
provider sent.
Unfortunately this intention simply doesn't work in the real world. The view
of entities as being only providers or only consumers is too simplistic. Even
when syncrepl was first being developed, we had the notion of cascaded
replication, where a consumer was itself a provider to other downstream
consumers. When you have multiple entities participating in replication, it's
important to be able to see that each one's notion of the replication state
agrees with everyone else's. It's also important to be able to determine this
without knowing in advance whether an entity is a provider or a consumer.
Particularly since in cascading or multi-master replication, the entity is both.
So in OpenLDAP we abandoned the notion that consumers could just stash the
provider's cookie without peeking inside, and could generate their own cookies
independently if they were going to serve as providers to other servers.
I believe we could have made it work correctly, with each server generating
its own state and leaving received cookies as opaque values, but then it would
have been impossible to do a simple query to see if two entities are in sync.
Thanks for the JIRA !
rfc 4533 implementation differences between openldap and apacheDS
-----------------------------------------------------------------
Key: DIRSERVER-1651
URL: https://issues.apache.org/jira/browse/DIRSERVER-1651
Project: Directory ApacheDS
Issue Type: Bug
Components: ldap
Affects Versions: 2.0.0-M2
Reporter: Hajo Kliemeck
Labels: 4533, openldap, syncrepl
Tthere is an incompatibility between the RFC 4533 implementation of apacheDS
and openldap.
openldap uses the cookie structure "rid=<replicaId>" (initial) or "rid=<replicaId>,csn=<Csn value>"
(update) while apacheDS is using NULL for the initial state and the structure"<replicaId>;<Csn value>" for the update
state. in the RFC its said:
{quote}
The absence of a cookie or an initialized synchronization state in a cookie
indicates a request for initial content.....
{quote}
first is apacheDS like, second is openldap like
It should be possible to adapt the structure or the behavior.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/