Browse Source

more consistent use of "debug"/utils.logError for logging

fix-133-memory-crash
Dan Janosik 6 years ago
parent
commit
6d8e4b4134
No known key found for this signature in database GPG Key ID: C6F8CE9FFDB2CED2
  1. 60
      app.js
  2. 18
      app/api/coreApi.js
  3. 20
      app/api/rpcApi.js
  4. 3
      app/redisCache.js
  5. 8
      app/utils.js
  6. 27
      routes/baseActionsRouter.js

60
app.js

@ -18,6 +18,8 @@ configPaths.filter(fs.existsSync).forEach(path => {
var debug = require("debug");
debug.enable(process.env.DEBUG);
var debugLog = debug("btcexp:app");
var express = require('express');
var favicon = require('serve-favicon');
var logger = require('morgan');
@ -81,7 +83,7 @@ app.use(session({
app.use(express.static(path.join(__dirname, 'public')));
process.on("unhandledRejection", (reason, p) => {
console.log("Unhandled Rejection at: Promise", p, "reason:", reason, "stack:", (reason != null ? reason.stack : "null"));
debugLog("Unhandled Rejection at: Promise", p, "reason:", reason, "stack:", (reason != null ? reason.stack : "null"));
if (global.influxdb) {
var points = [];
@ -92,7 +94,7 @@ process.on("unhandledRejection", (reason, p) => {
});
global.influxdb.writePoints(points).catch(err => {
console.error(`Error saving data to InfluxDB: ${err.stack}`);
debugLog(`Error saving data to InfluxDB: ${err.stack}`);
});
}
});
@ -112,9 +114,9 @@ function logNetworkStats() {
var miningInfo = promiseResults[1];
var blockchainInfo = promiseResults[2];
//console.log("mempoolInfo: " + JSON.stringify(mempoolInfo));
//console.log("miningInfo: " + JSON.stringify(miningInfo));
//console.log("blockchainInfo: " + JSON.stringify(blockchainInfo));
//debugLog("mempoolInfo: " + JSON.stringify(mempoolInfo));
//debugLog("miningInfo: " + JSON.stringify(miningInfo));
//debugLog("blockchainInfo: " + JSON.stringify(blockchainInfo));
var points = [];
@ -124,8 +126,8 @@ function logNetworkStats() {
if (mempoolMapping[key]) {
points.push({measurement:`${global.coinConfig.name.toLowerCase()}.mempool.${mempoolMapping[key]}`, fields:{value:mempoolInfo[key]}});
}
} catch(err) {
console.error(`Error mapping mempool info for key '${key}': ${err.stack}`);
} catch (err) {
utils.logError("3ourhewe", err, {key:key, desc:"Error mapping mempool info"});
}
}
@ -145,8 +147,8 @@ function logNetworkStats() {
if (miningMapping[key]) {
points.push({measurement:`${global.coinConfig.name.toLowerCase()}.mining.${miningMapping[key].name}`, fields:{value:miningMapping[key].transform(miningInfo[key])}});
}
} catch(err) {
console.error(`Error mapping mining info for key '${key}': ${err.stack}`);
} catch (err) {
utils.logError("weoufbebfde4", err, {key:key, desc:"Error mapping mining info"});
}
}
@ -156,18 +158,18 @@ function logNetworkStats() {
if (blockchainMapping[key]) {
points.push({measurement:`${global.coinConfig.name.toLowerCase()}.blockchain.${blockchainMapping[key]}`, fields:{value:blockchainInfo[key]}});
}
} catch(err) {
console.error(`Error mapping blockchain info for key '${key}': ${err.stack}`);
} catch (err) {
utils.logError("3heuuh4wwds", err, {key:key, desc:"Error mapping blockchain info"});
}
}
//console.log("Points to send to InfluxDB: " + JSON.stringify(points, null, 4));
//debugLog("Points to send to InfluxDB: " + JSON.stringify(points, null, 4));
global.influxdb.writePoints(points).catch(err => {
console.error(`Error saving data to InfluxDB: ${err.stack}`);
utils.logError("w083rhewhee", err, {desc:"Error saving data to InfluxDB"});
});
}).catch(err => {
console.log(`Error logging network stats: ${err}`);
utils.logError("u2h3rfsd", err);
});
}
}
@ -219,16 +221,16 @@ function logBlockStats() {
points.push({measurement:`${global.coinConfig.name.toLowerCase()}.blocks.${key}`, fields:{value:blockInfo[key]}, timestamp:timestamp});
}
//console.log("block: " + block.height + ": " + JSON.stringify(blockInfo, null, 4));
//console.log("points: " + JSON.stringify(points, null, 4));
//debugLog("block: " + block.height + ": " + JSON.stringify(blockInfo, null, 4));
//debugLog("points: " + JSON.stringify(points, null, 4));
}
global.influxdb.writePoints(points).catch(err => {
console.error(`Error saving data to InfluxDB: ${err.stack}`);
utils.logError("3ru032hfudge", err, {desc:"Error saving data to InfluxDB"});
});
});
}).catch(function(err) {
console.log(`Error logging block stats: ${err}`);
utils.logError("23uhsdsgde", err);
});
}
}
@ -240,7 +242,9 @@ function loadMiningPoolConfigs() {
fs.readdir(miningPoolsConfigDir, function(err, files) {
if (err) {
return console.log(`Unable to scan directory: ${err}`);
utils.logError("3ufhwehe", err, {configDir:miningPoolsConfigDir, desc:"Unable to scan directory"});
return;
}
files.forEach(function(file) {
@ -276,7 +280,7 @@ function getSourcecodeProjectMetadata() {
global.sourcecodeProjectMetadata = responseBody;
} else {
console.log(`Error 3208fh3ew7eghfg: ${error}, StatusCode: ${response.statusCode}, Response: ${JSON.stringify(response)}`);
utils.logError("3208fh3ew7eghfg", {error:error, response:response, body:body});
}
});
}
@ -287,10 +291,10 @@ app.runOnStartup = function() {
global.coinConfig = coins[config.coin];
global.coinConfigs = coins;
console.log(`Running RPC Explorer for ${global.coinConfig.name}`);
debugLog(`Running RPC Explorer for ${global.coinConfig.name}`);
var rpcCred = config.credentials.rpc;
console.log(`Connecting via RPC to node at ${rpcCred.host}:${rpcCred.port}`);
debugLog(`Connecting via RPC to node at ${rpcCred.host}:${rpcCred.port}`);
var rpcClientProperties = {
host: rpcCred.host,
@ -305,11 +309,11 @@ app.runOnStartup = function() {
if (config.credentials.influxdb.active) {
global.influxdb = new Influx.InfluxDB(config.credentials.influxdb);
console.log(`Connected to InfluxDB: ${config.credentials.influxdb.host}:${config.credentials.influxdb.port}/${config.credentials.influxdb.database}`);
debugLog(`Connected to InfluxDB: ${config.credentials.influxdb.host}:${config.credentials.influxdb.port}/${config.credentials.influxdb.database}`);
}
coreApi.getNetworkInfo().then(function(getnetworkinfo) {
console.log(`Connected via RPC to node. Basic info: version=${getnetworkinfo.version}, subversion=${getnetworkinfo.subversion}, protocolversion=${getnetworkinfo.protocolversion}, services=${getnetworkinfo.localservices}`);
debugLog(`Connected via RPC to node. Basic info: version=${getnetworkinfo.version}, subversion=${getnetworkinfo.subversion}, protocolversion=${getnetworkinfo.protocolversion}, services=${getnetworkinfo.localservices}`);
if (global.influxdb != null) {
logNetworkStats();
@ -319,7 +323,7 @@ app.runOnStartup = function() {
setInterval(logBlockStats, 5 * 60000);
}
}).catch(function(err) {
console.log("Error 923grf20fge: " + err + ", error json: " + JSON.stringify(err));
utils.logError("32ugegdfsde", err);
});
if (config.donations.addresses) {
@ -384,7 +388,9 @@ app.runOnStartup = function() {
if (global.sourcecodeVersion == null && fs.existsSync('.git')) {
simpleGit(".").log(["-n 1"], function(err, log) {
if (err) {
return console.error(`Error accessing git repo: ${err}`);
utils.logError("3fehge9ee", err, {desc:"Error accessing git repo"});
return;
}
global.sourcecodeVersion = log.all[0].hash.substring(0, 10);
@ -536,7 +542,7 @@ app.use(function(req, res, next) {
});
global.influxdb.writePoints(points).catch(err => {
console.error(`Error saving data to InfluxDB: ${err.stack}`);
utils.logError("3rew08uhfeghd", err, {desc:"Error saving data to InfluxDB"});
});
}
});

18
app/api/coreApi.js

@ -1,4 +1,6 @@
var debug = require("debug")("btcexp:coreApi");
var debug = require("debug");
var debugLog = debug("btcexp:core");
var LRU = require("lru-cache");
var fs = require('fs');
@ -14,7 +16,7 @@ var rpcApi = require("./rpcApi.js");
function onCacheEvent(cacheType, hitOrMiss, cacheKey) {
//console.log(`cache.${cacheType}.${hitOrMiss}: ${cacheKey}`);
//debugLog(`cache.${cacheType}.${hitOrMiss}: ${cacheKey}`);
}
function createMemoryLruCache(cacheObj) {
@ -81,7 +83,7 @@ function getGenesisCoinbaseTransactionId() {
function tryCacheThenRpcApi(cache, cacheKey, cacheMaxAge, rpcApiFunction, cacheConditionFunction) {
//debug("tryCache: " + cacheKey + ", " + cacheMaxAge);
//debugLog("tryCache: " + cacheKey + ", " + cacheMaxAge);
if (cacheConditionFunction == null) {
cacheConditionFunction = function(obj) {
return true;
@ -115,7 +117,7 @@ function tryCacheThenRpcApi(cache, cacheKey, cacheMaxAge, rpcApiFunction, cacheC
finallyFunc();
}).catch(function(err) {
console.log(`Error nds9fc2eg621tf3: key=${cacheKey}, err=${err}`);
utils.logError("nds9fc2eg621tf3", err, {cacheKey:cacheKey});
finallyFunc();
});
@ -537,10 +539,10 @@ function getMempoolStats() {
summary["satoshiPerByteBucketTotalFees"].push(summary["satoshiPerByteBuckets"][i]["totalFees"]);
}
/*debug(JSON.stringify(ageBuckets));
debug(JSON.stringify(ageBucketLabels));
debug(JSON.stringify(sizeBuckets));
debug(JSON.stringify(sizeBucketLabels));*/
/*debugLog(JSON.stringify(ageBuckets));
debugLog(JSON.stringify(ageBucketLabels));
debugLog(JSON.stringify(sizeBuckets));
debugLog(JSON.stringify(sizeBucketLabels));*/
resolve(summary);

20
app/api/rpcApi.js

@ -1,4 +1,6 @@
var debug = require('debug')('btcexp:rpcApi');
var debug = require('debug');
var debugLog = debug("btcexp:rpc");
var async = require("async");
@ -10,13 +12,13 @@ var activeQueueTasks = 0;
var rpcQueue = async.queue(function(task, callback) {
activeQueueTasks++;
//console.log("activeQueueTasks: " + activeQueueTasks);
//debugLog("activeQueueTasks: " + activeQueueTasks);
task.rpcCall(function() {
callback();
activeQueueTasks--;
//console.log("activeQueueTasks: " + activeQueueTasks);
//debugLog("activeQueueTasks: " + activeQueueTasks);
});
}, config.rpcConcurrency);
@ -75,7 +77,7 @@ function getBlockByHeight(blockHeight) {
}
function getBlockByHash(blockHash) {
debug("getBlockByHash: %s", blockHash);
debugLog("getBlockByHash: %s", blockHash);
return new Promise(function(resolve, reject) {
getRpcDataWithParams({method:"getblock", parameters:[blockHash]}).then(function(block) {
@ -100,7 +102,7 @@ function getAddress(address) {
}
function getRawTransaction(txid) {
debug("getRawTransaction: %s", txid);
debugLog("getRawTransaction: %s", txid);
return new Promise(function(resolve, reject) {
if (coins[config.coin].genesisCoinbaseTransactionId && txid == coins[config.coin].genesisCoinbaseTransactionId) {
@ -144,12 +146,12 @@ function getRpcMethodHelp(methodName) {
function getRpcData(cmd) {
return new Promise(function(resolve, reject) {
debug(`RPC: ${cmd}`);
debugLog(`RPC: ${cmd}`);
rpcCall = function(callback) {
client.command(cmd, function(err, result, resHeaders) {
if (err) {
console.log(`Error for RPC command '${cmd}': ${err}`);
utils.logError("32euofeege", err, {cmd:cmd});
reject(err);
@ -170,12 +172,12 @@ function getRpcData(cmd) {
function getRpcDataWithParams(request) {
return new Promise(function(resolve, reject) {
debug(`RPC: ${request}`);
debugLog(`RPC: ${JSON.stringify(request)}`);
rpcCall = function(callback) {
client.command([request], function(err, result, resHeaders) {
if (err != null) {
console.log(`Error for RPC command ${JSON.stringify(request)}: ${err}, headers=${resHeaders}`);
utils.logError("38eh39hdee", err, {result:result, headers:resHeaders});
reject(err);

3
app/redisCache.js

@ -2,6 +2,7 @@ var redis = require("redis");
var bluebird = require("bluebird");
var config = require("./config.js");
var utils = require("./utils.js");
var redisClient = null;
if (config.redisUrl) {
@ -31,7 +32,7 @@ var redisCache = {
resolve(JSON.parse(result));
}).catch(function(err) {
console.log(`Error 328rhwefghsdgsdss: ${err}`);
utils.logError("328rhwefghsdgsdss", err);
reject(err);
});

8
app/utils.js

@ -236,7 +236,7 @@ function logAppStats() {
});
global.influxdb.writePoints(points).catch(err => {
console.error(`Error saving data to InfluxDB: ${err.stack}`);
utils.logError("3ru3hfgde", err, {desc:"Error saving data to InfluxDB"});
});
}
}
@ -257,7 +257,7 @@ function logMemoryUsage() {
var mbTotal = process.memoryUsage().heapTotal / 1024 / 1024;
mbTotal = Math.round(mbTotal * 100) / 100;
//console.log("memoryUsage: heapUsed=" + mbUsed + ", heapTotal=" + mbTotal + ", ratio=" + parseInt(mbUsed / mbTotal * 100));
//debugLog("memoryUsage: heapUsed=" + mbUsed + ", heapTotal=" + mbTotal + ", ratio=" + parseInt(mbUsed / mbTotal * 100));
}
function getMinerFromCoinbaseTx(tx) {
@ -375,10 +375,10 @@ function refreshExchangeRates() {
});
}
//console.log("pts: " + JSON.stringify(points));
//debugLog("pts: " + JSON.stringify(points));
global.influxdb.writePoints(points).catch(err => {
console.error(`Error saving data to InfluxDB: ${err.stack}`)
utils.logError("32o3h9ehf9ed", err, {desc:"Error saving data to InfluxDB"});
});
}

27
routes/baseActionsRouter.js

@ -1,3 +1,6 @@
var debug = require("debug");
var debugLog = debug("btcexp:router");
var express = require('express');
var csurf = require('csurf');
var router = express.Router();
@ -234,7 +237,7 @@ router.post("/connect", function(req, res, next) {
timeout: 30000
});
console.log("created client: " + client);
debugLog("created client: " + client);
global.client = client;
@ -253,7 +256,7 @@ router.get("/disconnect", function(req, res, next) {
req.session.port = "";
req.session.username = "";
console.log("destroyed client.");
debugLog("destroyed client.");
global.client = null;
@ -705,8 +708,8 @@ router.get("/address/:address", function(req, res, next) {
}
}
//console.log("tx: " + JSON.stringify(tx));
//console.log("txInputs: " + JSON.stringify(txInputs));
//debugLog("tx: " + JSON.stringify(tx));
//debugLog("txInputs: " + JSON.stringify(txInputs));
}
resolve();
@ -828,12 +831,12 @@ router.post("/rpc-terminal", function(req, res, next) {
}
client.command([{method:cmd, parameters:parsedParams}], function(err, result, resHeaders) {
console.log("Result[1]: " + JSON.stringify(result, null, 4));
console.log("Error[2]: " + JSON.stringify(err, null, 4));
console.log("Headers[3]: " + JSON.stringify(resHeaders, null, 4));
debugLog("Result[1]: " + JSON.stringify(result, null, 4));
debugLog("Error[2]: " + JSON.stringify(err, null, 4));
debugLog("Headers[3]: " + JSON.stringify(resHeaders, null, 4));
if (err) {
console.log(JSON.stringify(err, null, 4));
debugLog(JSON.stringify(err, null, 4));
res.write(JSON.stringify(err, null, 4), function() {
res.end();
@ -907,7 +910,7 @@ router.get("/rpc-browser", function(req, res, next) {
break;
} else {
console.log(`Unknown argument property: ${argProperties[j]}`);
debugLog(`Unknown argument property: ${argProperties[j]}`);
}
}
}
@ -930,12 +933,14 @@ router.get("/rpc-browser", function(req, res, next) {
return next(err);
}
console.log("Executing RPC '" + req.query.method + "' with params: [" + argValues + "]");
debugLog("Executing RPC '" + req.query.method + "' with params: [" + argValues + "]");
client.command([{method:req.query.method, parameters:argValues}], function(err3, result3, resHeaders3) {
console.log("RPC Response: err=" + err3 + ", result=" + result3 + ", headers=" + resHeaders3);
debugLog("RPC Response: err=" + err3 + ", result=" + result3 + ", headers=" + resHeaders3);
if (err3) {
utils.logError("23roewuhfdghe", err3, {method:req.query.method, params:argValues, result:result3, headers:resHeaders3});
if (result3) {
res.locals.methodResult = {error:("" + err3), result:result3};

Loading…
Cancel
Save