Skip to content

Commit

Permalink
Different approach for syncrepl refresh done
Browse files Browse the repository at this point in the history
  • Loading branch information
stroeder committed Sep 26, 2014
1 parent 8cc2bc0 commit 2fb024d
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 11 deletions.
4 changes: 2 additions & 2 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Changes since 2.4.16:

Lib/
* New hook syncrepl_refreshdone() in ldap.syncrepl.SyncReplConsumer
(thanks to Petr Spacek)
(thanks to Petr Spacek and Chris Mikkelson)

Modules/
* Added support for getting file descriptor of connection
Expand Down Expand Up @@ -1123,4 +1123,4 @@ Released 2.0.0pre02 2002-02-01
----------------------------------------------------------------
Released 1.10alpha3 2000-09-19

$Id: CHANGES,v 1.327 2014/09/25 16:31:00 stroeder Exp $
$Id: CHANGES,v 1.328 2014/09/26 12:18:05 stroeder Exp $
16 changes: 7 additions & 9 deletions Lib/ldap/syncrepl.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
See http://www.python-ldap.org/ for project details.
$Id: syncrepl.py,v 1.4 2014/09/25 16:31:00 stroeder Exp $
$Id: syncrepl.py,v 1.5 2014/09/26 12:18:05 stroeder Exp $
"""

#__all__ = [
Expand Down Expand Up @@ -330,12 +330,6 @@ def syncrepl_search(self, base, scope, mode='refreshOnly', cookie=None, **search
self.__refreshDone = False
return self.search_ext(base, scope, **search_args)

def _syncrepl_update_refreshdone(self, newvalue):
callback = newvalue and not self.__refreshDone
self.__refreshDone = newvalue
if callback:
self.syncrepl_refreshdone()

def syncrepl_poll(self, msgid=-1, timeout=None, all=0):
"""
polls for and processes responses to the syncrepl_search() operation.
Expand Down Expand Up @@ -399,12 +393,16 @@ def syncrepl_poll(self, msgid=-1, timeout=None, all=0):
self.syncrepl_present(None, refreshDeletes=False)
if 'cookie' in sim.refreshPresent:
self.syncrepl_set_cookie(sim.refreshPresent['cookie'])
self._syncrepl_update_refreshdone(sim.refreshPresent['refreshDone'])
if sim.refreshPresent['refreshDone']:
self.__refreshDone = True
self.syncrepl_refreshdone()
elif sim.refreshDelete is not None:
self.syncrepl_present(None, refreshDeletes=True)
if 'cookie' in sim.refreshDelete:
self.syncrepl_set_cookie(sim.refreshDelete['cookie'])
self._syncrepl_update_refreshdone(sim.refreshDelete['refreshDone'])
if sim.refreshDelete['refreshDone']:
self.__refreshDone = True
self.syncrepl_refreshdone()
elif sim.syncIdSet is not None:
if sim.syncIdSet['refreshDeletes'] is True:
self.syncrepl_delete(sim.syncIdSet['syncUUIDs'])
Expand Down

0 comments on commit 2fb024d

Please sign in to comment.