diff --git a/changelog b/changelog index 3cddca7822186195afbc96eb6e8ea757a0639d48..b39b9219ce6ba4949f9781811f6058b420b7a2fc 100644 --- a/changelog +++ b/changelog @@ -38,3 +38,4 @@ 0.21: added parsing of 'logical-systems' (DBOARD3-150) 0.22: return a skeleton response for unknown interfaces (DBOARD3-169) 0.23: use redis pipelines where possible +0.24: optimization, don't do aggressive checking when deleting during rebuilding diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index 1ac375df5ea1464db6c31ba3aa424d88e285c5f8..35ad30ce65dcbcde6298d682edcef52ba9007947 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -277,15 +277,18 @@ def _refresh_peers(hostname, key_base, peers): logger.debug( 'removing cached %s for %r' % (key_base, hostname)) r = get_next_redis(InventoryTask.config) - for k in r.scan_iter(key_base + ':*'): - # potential race condition: another proc could have - # delete this element between the time we read the - # keys and the next statement ... check for None below - value = r.get(k.decode('utf-8')) - if value: - value = json.loads(value.decode('utf-8')) - if value['router'] == hostname: - r.delete(k) + # WARNING (optimization): this is an expensive query if + # the redis connection is slow, and we currently only + # call this method during a full refresh + # for k in r.scan_iter(key_base + ':*'): + # # potential race condition: another proc could have + # # delete this element between the time we read the + # # keys and the next statement ... check for None below + # value = r.get(k.decode('utf-8')) + # if value: + # value = json.loads(value.decode('utf-8')) + # if value['router'] == hostname: + # r.delete(k) rp = r.pipeline() for peer in peers: diff --git a/setup.py b/setup.py index 3216093a9577d8285409787da633dd3d675832b0..ba6857781fdd0c7bfb4b05f257d5d2966e60f89d 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name='inventory-provider', - version="0.23", + version="0.24", author='GEANT', author_email='swd@geant.org', description='Dashboard inventory provider',