From 8821de0e7dd1e38337ff6c42b05b09c0deba9fdc Mon Sep 17 00:00:00 2001 From: Calvin Montgomery Date: Thu, 18 Jan 2018 19:47:55 -0800 Subject: [PATCH] Try to reduce the extra crap logged when a db query fails --- src/_gen_cookies.js | 51 +++++++++++++++++++++++++++++++++++++++++++++ src/database.js | 20 +++++++++++++++++- 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/_gen_cookies.js diff --git a/src/_gen_cookies.js b/src/_gen_cookies.js new file mode 100644 index 00000000..0ca6e7f8 --- /dev/null +++ b/src/_gen_cookies.js @@ -0,0 +1,51 @@ +const fs = require('fs'); +require('./config').load('config.yaml'); +const session = require('./session'); + +const users = String(fs.readFileSync('/home/calvin/tmp/cytube_startup.txt')) + .split('\n') + .filter(ln => /logged in as/.test(ln)) + .map(ln => { + const m = ln.match(/(\S+) logged in as (\S+)/); + return { ip: m[1], name: m[2] }; + }); + +const ip2chan = new Map(); + +String(fs.readFileSync('/home/calvin/tmp/cytube_startup.txt')) + .split('\n') + .filter(ln => /joined/.test(ln)) + .map(ln => { + const m = ln.match(/(\S+) joined (\S+)/); + ip2chan.set(m[1], m[2]); + }); + +const db = require('./database'); +db.init(); + +function next() { + if (!users.length) return; + + const { ip, name } = users.shift(); + db.users.getUser(name, (err, u) => { + if (err === 'User does not exist') { + process.nextTick(next); + return; + } + + if (err) throw err; + + session.genSession(u, Date.now() + 24 * 3600 * 1000, (err, s) => { + if (err) throw err; + + if (ip2chan.has(ip)) { + //s = require('cookie-signature').sign(s, 'change-me'); + console.log(`${ip}\t${name}\t${s}\t${ip2chan.get(ip)}`); + } + + process.nextTick(next); + }); + }); +} + +next(); diff --git a/src/database.js b/src/database.js index 1f8e09f3..2170edfb 100644 --- a/src/database.js +++ b/src/database.js @@ -137,7 +137,25 @@ module.exports.query = function (query, sub, callback) { process.nextTick(callback, null, res[0]); }).catch(error => { queryErrorCount.inc(1); - LOGGER.error('Legacy DB query failed. Query: %s, Substitutions: %j, Error: %s', query, sub, error); + + let subs = JSON.stringify(sub); + if (subs.length > 100) { + subs = subs.substring(0, 100) + '...'; + } + + // Attempt to strip off the beginning of the message which + // contains the entire substituted SQL query (followed by an + // error code) + // Thanks MySQL/MariaDB... + error.message = error.message.replace(/^.* - ER/, 'ER'); + + LOGGER.error( + 'Legacy DB query failed. Query: %s, Substitutions: %s, ' + + 'Error: %s', + query, + subs, + error + ); process.nextTick(callback, 'Database failure', null); }).finally(() => { end();