Pierangelo Masarati wrote:
I note that in syncprov_op_response(), if slap_get_commit_csn() can't get a maxcsn, opc->sctxcsn would be set to an empty berval, and this would trigger the above cookie. I wonder if this is possible at all, and if setting opc->sctxcsn to a NULL berval would just cure the problem.
I think that will just mask the problem. If you're in an Add operation, there must be a CSN already. So perhaps we should assert() in slap_get_commit_csn and find out why it returned without one.
I'm not saying that's where the error occurred, since I couldn't track what happened. I'm just looking for places where it could have occurred. Note that the add occurred on server 0, while the broken cookie was cooked on server 1 when the two were playing mirrormode. So the one acting as consumer didn't commit anything, and my guess is that for this reason it hadn't any maxcsn available.
I note that test050 tests mirrormode in refreshOnly; is mirrormode supposed to work in refreshAndPersist as well? The test seems to work as expected...
p.
Ing. Pierangelo Masarati OpenLDAP Core Team
SysNet s.r.l. via Dossi, 8 - 27100 Pavia - ITALIA http://www.sys-net.it --------------------------------------- Office: +39 02 23998309 Mobile: +39 333 4963172 Email: pierangelo.masarati@sys-net.it ---------------------------------------