Full_Name: Emmanuel L.charny
Submission from: (NULL) (220.127.116.11)
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.