issue #360: ansible: missing lock around ContextService.put().

This commit is contained in:
David Wilson 2018-09-12 00:34:53 +01:00
parent f8bf780e21
commit 498db57ec8
1 changed files with 9 additions and 5 deletions

View File

@ -139,11 +139,15 @@ class ContextService(mitogen.service.Service):
count reaches zero.
"""
LOG.debug('%r.put(%r)', self, context)
if self._refs_by_context.get(context, 0) == 0:
LOG.warning('%r.put(%r): refcount was 0. shutdown_all called?',
self, context)
return
self._refs_by_context[context] -= 1
self._lock.acquire()
try:
if self._refs_by_context.get(context, 0) == 0:
LOG.warning('%r.put(%r): refcount was 0. shutdown_all called?',
self, context)
return
self._refs_by_context[context] -= 1
finally:
self._lock.release()
def key_from_kwargs(self, **kwargs):
"""