[Date Prev][Date Next]
(ITS#8649) Issue when fetching the backend that will receive the contextCSN when we have glued databases
- To: openldap-its@OpenLDAP.org
- Subject: (ITS#8649) Issue when fetching the backend that will receive the contextCSN when we have glued databases
- From: firstname.lastname@example.org
- Date: Fri, 28 Apr 2017 18:00:56 +0000
- Auto-submitted: auto-generated (OpenLDAP-ITS)
Full_Name: Emmanuel L.charny
Submission from: (NULL) (22.214.171.124)
When syncrepl is started, it first searches which backend will host the
contextCSN. There are two factors in play :
- do we have a syncprov overlay
- do we have parent backends.
If the local DB is a subordinate, then we have to look in its parents to see if
one of them has a syncprov overlay. If so, then this backend will be the one
receiving the contextCSN. Otherwise, the local DB will.
Now, if we have a hierarchy of backends (ie, 3 or more subordinates in a chain),
with the syncprov overlay present in an intermediate backend, then the
contextCSN will not be attached to it, but to the local DB.
This is because the select_backend( &backend->be_nsuffix, 1 ) function tries
to fetch the top level backend, regardless the presence of the syncprov overlay
in intermediary subordinates.
IMO, instead of calling select_backend with the parameter 1 (is, subs), we
should call it recursively up to the point we reach the top level or we find a
backend with the syncprov overlay.