fix: add config reload flags to the state middleware

This commit is contained in:
Sérgio Salgado 2022-01-19 02:13:02 +00:00
parent cfb360ab4e
commit 5945f9d31b
3 changed files with 20 additions and 14 deletions

View file

@ -1,11 +1,12 @@
const _ = require('lodash/fp')
const state = require('./state')
const newSettingsLoader = require('../new-settings-loader')
const helpers = require('../route-helpers')
const logger = require('../logger')
const { settingsCache } = state
const populateSettings = function (req, res, next) {
const { needsSettingsReload, settingsCache } = state
const operatorId = res.locals.operatorId
const versionId = req.headers['config-version']
if (versionId !== state.oldVersionId) {
@ -14,20 +15,21 @@ const populateSettings = function (req, res, next) {
try {
const operatorSettings = settingsCache.get(operatorId)
if (!versionId && operatorSettings) {
req.settings = operatorSettings
return next()
}
if (!versionId && !operatorSettings) {
if (!versionId && (!operatorSettings || !!needsSettingsReload[operatorId])) {
return newSettingsLoader.loadLatest()
.then(settings => {
settingsCache.set(operatorId, settings)
delete needsSettingsReload[operatorId]
req.settings = settings
})
.then(() => next())
.catch(next)
}
if (!versionId && operatorSettings) {
req.settings = operatorSettings
return next()
}
} catch (e) {
logger.error(e)
}