[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#6555) Syncprov (refreshAndPersist) loses deletes

ralf@OpenLDAP.org wrote:
> Am Freitag 21 Mai 2010 05:52:31 schrieb Howard Chu:
>> Ralf Haferkamp wrote:
>>> A fix is now in syncprov.c r1.312. Would be great if someone could
>>> review it if it makes sense. Testing results look good so far.
>> Not sure why this makes the difference. After all, mincsn will be set
>> to the consumer's cookie, and any writes that occur during the
>> refresh phase will naturally have an entryCSN greater than mincsn and
>> still be queued.
> That doesn't seem to be true for deletes of entries that have an entryCSN
> less than the value from the cookie. What I did to reproduce the problem
> was:
> 1. load provider with about 100 entries
> 2. start consumer wait for it to get synced.
> 3. stop consumer
> 4. load more entries in to the provider (in my test case about 1000)
> 5. restart consumer (the consumer will start a ldapsync session with a
> cookie)
> 6. use ldapdelete to delete in an entry for the initial 100 entries.
> (those that have an entryCSN<  csn provide in the cookie). This ldap
> delete as to happened during the refresh part of the ldapsync session
> (when the 1000 new entries are sent)
> 7. watch it fail
> What happens is that when syncprov_op_mod() calls syncprov_matchops() it
> tests the to be deleted entry against the syncrepl filter (which has the
> entryCSN>=cookie filter prepended currently as we are in refresh). That
> test fails because of the older entryCSN value. Because of that the
> syncoperation will not be inserted into the smatches queue of the
> opcookie and the delete will not get synched in the syncprov_op_response
> callback (as the smatches queue is empty).
> (As a side note: Modification that happen during the refresh phase will
> get synched as LDAP_SYNC_ADD instead of LDAP_SYNC_MODIFY for the above
> reasons. This doesn't cause any failure AFAICS but seemed wrong as well.)

OK, that explanation makes sense. Just wanted to make sure we didn't regress 
on ITS#4622, which seems to be the last time these filters were tweaked.

   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/