Properly handle cold restart with empty storage

Change-Id: Ia7dcaaf32a96fd1db345ff8ec4fc5aec007297bd
This commit is contained in:
Ilya Shakhat 2015-08-21 12:13:41 +03:00
parent 79b1ebba89
commit fd3eccafdc
3 changed files with 7 additions and 9 deletions

View File

@ -17,6 +17,7 @@ import re
import flask
import memcache
from oslo_config import cfg
from oslo_log import log as logging
@ -62,17 +63,11 @@ def get_vault():
vault = getattr(flask.current_app, 'driverlog_vault', None)
if not vault:
try:
if 'CONF' not in flask.current_app.config:
LOG.critical('Configure environment variable DRIVERLOG_CONF '
'with path to config file')
flask.abort(500)
vault = {}
conf = flask.current_app.config['CONF']
MEMCACHED_URI_PREFIX = r'^memcached:\/\/'
stripped = re.sub(MEMCACHED_URI_PREFIX, '',
conf.runtime_storage_uri)
cfg.CONF.runtime_storage_uri)
memcached_uri = stripped.split(',')
memcached = memcache.Client(memcached_uri)
@ -90,7 +85,7 @@ def get_vault():
memcached = vault['memcached']
update_time = memcached.get('driverlog:update_time')
if vault.get('update_time') != update_time:
if update_time is None or vault.get('update_time') != update_time:
vault['update_time'] = update_time
default_data = memcached.get('driverlog:default_data')

View File

@ -42,7 +42,6 @@ def main():
if conf_file and os.path.isfile(conf_file):
conf(default_config_files=[conf_file])
app.config['DEBUG'] = cfg.CONF.debug
app.config['CONF'] = cfg.CONF
LOG.info('DriverLog.dashboard is configured via "%s"', conf_file)
else:
conf(project='driverlog')

View File

@ -160,6 +160,10 @@ def process(memcached_inst, default_data, force_update):
if (new_dd_hash != old_dd_hash) or force_update:
transform_default_data(default_data)
need_update = True
if old_dd_hash is None:
LOG.info('Memcached is empty, pre-fill it with defaults')
memcached_inst.set('driverlog:default_data', default_data)
else:
default_data = memcached_inst.get('driverlog:default_data')