@@ -87,6 +87,7 @@ def __init__(self, client, path, identifier=None):
8787 # some data is written to the node. this can be queried via
8888 # contenders() to see who is contending for the lock
8989 self .data = str (identifier or "" ).encode ('utf-8' )
90+ self .node = None
9091
9192 self .wake_event = client .handler .event_object ()
9293
@@ -160,8 +161,7 @@ def _acquire_lock():
160161 gotten = retry (self ._inner_acquire ,
161162 blocking = blocking , timeout = timeout )
162163 except RetryFailedError :
163- if not already_acquired :
164- self ._best_effort_cleanup ()
164+ pass
165165 except KazooException :
166166 # if we did ultimately fail, attempt to clean up
167167 exc_info = sys .exc_info ()
@@ -172,7 +172,7 @@ def _acquire_lock():
172172 if gotten :
173173 self .is_acquired = gotten
174174 if not gotten and not already_acquired :
175- self ._delete_node ( self . node )
175+ self ._best_effort_cleanup ( )
176176 return gotten
177177 finally :
178178 self ._lock .release ()
@@ -268,7 +268,7 @@ def _delete_node(self, node):
268268
269269 def _best_effort_cleanup (self ):
270270 try :
271- node = self ._find_node ()
271+ node = self .node or self . _find_node ()
272272 if node :
273273 self ._delete_node (node )
274274 except KazooException : # pragma: nocover
0 commit comments