From 556fb7e453a338738638cb02d1d823f1ac0fe974 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Thu, 3 Oct 2019 15:14:01 +0200
Subject: [PATCH] optimization - avoid expensive deletes during refresh

---
 inventory_provider/tasks/worker.py | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index 1ac375df..35ad30ce 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:
-- 
GitLab