Hello
I still work on slapo-supann, an overlay that generates attributes
from user-supplied attributes.
On a successful modify or add operation, I start an internal modify
operation to add the generated attributes. It works fine, except
that syncrepl sometimes miss this second operation: it only catch
the first one. If I modify the entry again, it will get the
missed second modification.
This is because my internal modify operation does not update
entryCSN. syncrepl has no way to know there was a second update.
But why entryCSN fails to be updated?
If I add op2.orm_no_opattrs = 0 and call slap_get_csn(), all
operative attributes are updated. This probably fixes my problem,
but modifiersName is changed to root, I preferd when I had the
original user of the fist modify operation.
If I do not set op2.orm_no_opattrs = 0, but I call slap_get_csn() and
I perform a Modification like fhis, then only entryCSN is updated.
mods->sml_op = LDAP_MOD_REPLACE;
mods->sml_flags = SLAP_MOD_INTERNAL;
mods->sml_desc = slap_schema.si_ad_entryCSN;
mods->sml_numvals = 1;
mods->sml_values = csn;
I was happy about it, but the discovered that syncrepl consumer still
misses the second modification, even if the master still has a more
recent entryCSN than the replica. There must be a mising bit somewhere.
Any hint?
--
Emmanuel Dreyfus
manu(a)netbsd.org