fix: separate poller and middleware postgres listeners
This commit is contained in:
parent
5945f9d31b
commit
b98d73cd6e
4 changed files with 64 additions and 36 deletions
|
|
@ -18,7 +18,6 @@ const util = require('util')
|
|||
const db = require('./db')
|
||||
const state = require('./middlewares/state')
|
||||
const processBatches = require('./tx-batching-processing')
|
||||
const { getOperatorId } = require('./operator')
|
||||
|
||||
const INCOMING_TX_INTERVAL = 30 * T.seconds
|
||||
const LIVE_INCOMING_TX_INTERVAL = 5 * T.seconds
|
||||
|
|
@ -85,13 +84,11 @@ db.connect({ direct: true }).then(sco => {
|
|||
switch (parsedData.type) {
|
||||
case 'reload':
|
||||
return reload(parsedData.schema)
|
||||
case 'machineAction':
|
||||
return machineAction(parsedData.action, parsedData.value)
|
||||
default:
|
||||
break
|
||||
}
|
||||
})
|
||||
return sco.none('LISTEN $1:name', 'poller')
|
||||
return sco.none('LISTEN $1:name', 'reload')
|
||||
}).catch(console.error)
|
||||
|
||||
function reload (schema) {
|
||||
|
|
@ -99,40 +96,16 @@ function reload (schema) {
|
|||
store.set('schema', schema)
|
||||
// set asyncLocalStorage so settingsLoader loads settings for the right schema
|
||||
return asyncLocalStorage.run(store, () => {
|
||||
return Promise.all([settingsLoader.loadLatest(), getOperatorId('middleware')])
|
||||
.then(([settings, operatorId]) => {
|
||||
return settingsLoader.loadLatest()
|
||||
.then(settings => {
|
||||
const pi = plugins(settings)
|
||||
cachedVariables.set(schema, { settings, pi, isReloading: false })
|
||||
state.needsSettingsReload[operatorId.operatorId] = true
|
||||
logger.debug(`Settings for schema '${schema}' reloaded in poller`)
|
||||
return updateAndLoadSanctions()
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function machineAction (type, value) {
|
||||
const deviceId = value.deviceId
|
||||
const operatorId = value.operatorId
|
||||
const pid = state.pids?.[operatorId]?.[deviceId]?.pid
|
||||
|
||||
switch (type) {
|
||||
case 'reboot':
|
||||
logger.debug(`Rebooting machine '${deviceId}' from operator ${operatorId}`)
|
||||
state.reboots[operatorId] = { [deviceId]: pid }
|
||||
break
|
||||
case 'shutdown':
|
||||
logger.debug(`Shutting down machine '${deviceId}' from operator ${operatorId}`)
|
||||
state.shutdowns[operatorId] = { [deviceId]: pid }
|
||||
break
|
||||
case 'restartServices':
|
||||
logger.debug(`Restarting services of machine '${deviceId}' from operator ${operatorId}`)
|
||||
state.restartServicesMap[operatorId] = { [deviceId]: pid }
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
function pi () { return cachedVariables.get(asyncLocalStorage.getStore().get('schema')).pi }
|
||||
function settings () { return cachedVariables.get(asyncLocalStorage.getStore().get('schema')).settings }
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue