fix: prevent loop in case of logs with db down
This commit is contained in:
parent
dda217a29e
commit
b9b532a633
2 changed files with 31 additions and 20 deletions
|
|
@ -25,6 +25,7 @@ logger.info('Version: %s', version)
|
||||||
function run () {
|
function run () {
|
||||||
const store = defaultStore()
|
const store = defaultStore()
|
||||||
return asyncLocalStorage.run(store, () => {
|
return asyncLocalStorage.run(store, () => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
let count = 0
|
let count = 0
|
||||||
let handler
|
let handler
|
||||||
|
|
||||||
|
|
@ -34,17 +35,20 @@ function run () {
|
||||||
logger.error('[%d] Retrying in 10s...', count)
|
logger.error('[%d] Retrying in 10s...', count)
|
||||||
}
|
}
|
||||||
|
|
||||||
const runner = () =>
|
const runner = () => {
|
||||||
settingsLoader.loadLatest()
|
settingsLoader.loadLatest()
|
||||||
.then(settings => {
|
.then(settings => {
|
||||||
clearInterval(handler)
|
clearInterval(handler)
|
||||||
return loadSanctions(settings)
|
return loadSanctions(settings)
|
||||||
.then(() => startServer(settings))
|
.then(() => startServer(settings))
|
||||||
|
.then(resolve)
|
||||||
})
|
})
|
||||||
.catch(errorHandler)
|
.catch(errorHandler)
|
||||||
|
}
|
||||||
|
|
||||||
|
runner()
|
||||||
handler = setInterval(runner, 10000)
|
handler = setInterval(runner, 10000)
|
||||||
return runner()
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
13
lib/db.js
13
lib/db.js
|
|
@ -7,6 +7,8 @@ const logger = require('./logger')
|
||||||
const eventBus = require('./event-bus')
|
const eventBus = require('./event-bus')
|
||||||
const { asyncLocalStorage, defaultStore } = require('./async-storage')
|
const { asyncLocalStorage, defaultStore } = require('./async-storage')
|
||||||
|
|
||||||
|
const DATABASE_NOT_REACHABLE = 'Database not reachable.'
|
||||||
|
|
||||||
const stripDefaultDbFuncs = dbCtx => {
|
const stripDefaultDbFuncs = dbCtx => {
|
||||||
return {
|
return {
|
||||||
ctx: dbCtx.ctx,
|
ctx: dbCtx.ctx,
|
||||||
|
|
@ -78,12 +80,12 @@ const pgp = Pgp({
|
||||||
obj.$task = (opts, cb) => typeof opts === 'function' ? _task(obj, {}, opts) : _task(obj, opts, cb)
|
obj.$task = (opts, cb) => typeof opts === 'function' ? _task(obj, {}, opts) : _task(obj, opts, cb)
|
||||||
},
|
},
|
||||||
error: (err, e) => {
|
error: (err, e) => {
|
||||||
if (e.cn) logger.error('Database not reachable.')
|
if (e.cn) logger.error(DATABASE_NOT_REACHABLE)
|
||||||
if (e.query) {
|
else if (e.query) {
|
||||||
logger.error(e.query)
|
logger.error(e.query)
|
||||||
e.params && logger.error(e.params)
|
e.params && logger.error(e.params)
|
||||||
}
|
}
|
||||||
logger.error(err)
|
else logger.error(err)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -93,6 +95,10 @@ eventBus.subscribe('log', args => {
|
||||||
if (process.env.SKIP_SERVER_LOGS) return
|
if (process.env.SKIP_SERVER_LOGS) return
|
||||||
|
|
||||||
const { level, message, meta } = args
|
const { level, message, meta } = args
|
||||||
|
|
||||||
|
// prevent loop if database is not reachable
|
||||||
|
if (message === DATABASE_NOT_REACHABLE) return
|
||||||
|
|
||||||
const msgToSave = message || _.get('message', meta)
|
const msgToSave = message || _.get('message', meta)
|
||||||
|
|
||||||
const sql = `insert into server_logs
|
const sql = `insert into server_logs
|
||||||
|
|
@ -103,6 +109,7 @@ eventBus.subscribe('log', args => {
|
||||||
asyncLocalStorage.run(store, () => {
|
asyncLocalStorage.run(store, () => {
|
||||||
db.one(sql, [uuid.v4(), '', msgToSave, level, meta])
|
db.one(sql, [uuid.v4(), '', msgToSave, level, meta])
|
||||||
.then(_.mapKeys(_.camelCase))
|
.then(_.mapKeys(_.camelCase))
|
||||||
|
.catch(_.noop)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue