diff --git a/src/config/common/zkclient.py b/src/config/common/zkclient.py index 2dd4410bdfb..00740377a3b 100644 --- a/src/config/common/zkclient.py +++ b/src/config/common/zkclient.py @@ -210,7 +210,15 @@ def alloc(self, value=None): idx = self._in_use.index(0) self._in_use[idx] = 1 - idx = self._get_zk_index_from_bit(idx) + try: + idx = self._get_zk_index_from_bit(idx) + except ResourceExhaustionError as e: + if self._in_use.all(): + self._in_use.pop(1) + else: + self._in_use[idx] = 0 + raise ResourceExhaustionError(str(e)) + try: # Create a node at path and return its integer value id_str = "%(#)010d" % {'#': idx}