From 8e64c2d3944a75bd6f62a670ea519527ea52e465 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Fri, 19 Jul 2019 10:24:17 +0200 Subject: [PATCH] save & restore latch after flushing db --- inventory_provider/tasks/common.py | 2 +- inventory_provider/tasks/worker.py | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/inventory_provider/tasks/common.py b/inventory_provider/tasks/common.py index df62f1f8..1ded6cfe 100644 --- a/inventory_provider/tasks/common.py +++ b/inventory_provider/tasks/common.py @@ -131,7 +131,7 @@ def get_next_redis(config): next_id = latch['next'] else: db_ids = sorted(set(config['redis-databases'])) - next_id = db_ids[0] if len(db_ids) == 1 else db_ids[1] + next_id = db_ids[1 % len(db_ids)] logger.debug( 'get_next_redis[3], next db not configured, ' 'derived next id: {}'.format(next_id)) diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index 1c075b3f..0cd6fcdb 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -12,7 +12,8 @@ from lxml import etree import jsonschema from inventory_provider.tasks.app import app -from inventory_provider.tasks.common import get_next_redis, latch_db +from inventory_provider.tasks.common \ + import get_next_redis, latch_db, get_latch, set_latch from inventory_provider import config from inventory_provider import environment from inventory_provider.db import db, opsdb @@ -438,6 +439,16 @@ def _derive_router_hostnames(config): return junosspace_equipment & opsdb_equipment +def _erase_next_db(config): + r = get_next_redis(config) + saved_latch = get_latch(r) + r.flushdb() + if saved_latch: + set_latch( + config, + new_current=saved_latch['current'], + new_next=saved_latch['next']) + def launch_refresh_cache_all(config): """ utility function intended to be called outside of the worker process @@ -446,8 +457,7 @@ def launch_refresh_cache_all(config): """ logger = logging.getLogger(__name__) - r = get_next_redis(config) - r.flushdb() + _erase_next_db(config) # first batch of subtasks: refresh cached opsdb data subtasks = [ -- GitLab