[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
(ITS#5433) syncprov in a glue'ed environment write contextCSN to random subordinate DB
Full_Name: Rein Tollevik
Version: 2.4.8
OS:
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (84.215.2.34)
syncprov_checkpoint() writes the contextCSN attribute to the suffix of the
backend DB that is currently being written when it is triggered. When syncprov
is stacked on top of a set of glue'ed databases this can be any of the
subordinate backend DBs. The attached patch fixes this problem.
Rein Tollevik
Basefarm AS
Index: OpenLDAP/servers/slapd/overlays/syncprov.c
diff -u OpenLDAP/servers/slapd/overlays/syncprov.c:1.1.1.11
OpenLDAP/servers/slapd/overlays/syncprov.c:1.5
--- OpenLDAP/servers/slapd/overlays/syncprov.c:1.1.1.11 Thu Feb 21 14:55:36
2008
+++ OpenLDAP/servers/slapd/overlays/syncprov.c Fri Mar 14 16:23:48 2008
@@ -1301,6 +1301,7 @@
Operation opm;
SlapReply rsm = { 0 };
slap_callback cb = {0};
+ BackendInfo *bi = on->on_info->oi_origdb->bd_info;
mod.sml_numvals = si->si_numcsns;
mod.sml_values = si->si_ctxcsn;
@@ -1316,8 +1317,9 @@
opm.o_callback = &cb;
opm.orm_modlist = &mod;
opm.orm_no_opattrs = 1;
- opm.o_req_dn = op->o_bd->be_suffix[0];
- opm.o_req_ndn = op->o_bd->be_nsuffix[0];
+ opm.o_bd = on->on_info->oi_origdb;
+ opm.o_req_dn = opm.o_bd->be_suffix[0];
+ opm.o_req_ndn = opm.o_bd->be_nsuffix[0];
opm.o_bd->bd_info = on->on_info->oi_orig;
opm.o_managedsait = SLAP_CONTROL_NONCRITICAL;
opm.o_no_schema_check = 1;
@@ -1326,6 +1328,7 @@
slap_mods_free( mod.sml_next, 1 );
}
opm.orm_no_opattrs = 0;
+ opm.o_bd->bd_info = bi;
}
static void