expose more debugging information from rpc errors

This commit is contained in:
ansuz 2017-06-13 11:14:01 +02:00
parent c9725af508
commit 977faee40b
1 changed files with 37 additions and 30 deletions

67
rpc.js
View File

@ -17,6 +17,15 @@ var Store = require("./storage/file");
var DEFAULT_LIMIT = 50 * 1024 * 1024;
var SESSION_EXPIRATION_TIME = 60 * 1000;
var SUPPRESS_RPC_ERRORS = false;
var WARN = function (e, output) {
if (!SUPPRESS_RPC_ERRORS) {
console.error(new Date().toISOString() + ' [' + e + ']', output);
console.error(new Error(e).stack);
console.error();
}
};
var isValidId = function (chan) {
return chan && chan.length && /^[a-fA-F0-9]/.test(chan) ||
@ -237,11 +246,10 @@ var loadUserPins = function (Env, publicKey, cb) {
}
break;
default:
console.error('invalid message read from store');
WARN('invalid message read from store', msg);
}
} catch (e) {
console.log('invalid message read from store');
console.error(e);
WARN('invalid message read from store', e);
}
}, function () {
// no more messages
@ -328,7 +336,7 @@ var getMultipleFileSize = function (Env, channels, cb) {
channels.forEach(function (channel) {
getFileSize(Env, channel, function (e, size) {
if (e) {
console.error(e);
WARN('getFileSize', e);
counts[channel] = -1;
return done();
}
@ -504,7 +512,7 @@ var pinChannel = function (Env, publicKey, channels, cb) {
getFreeSpace(Env, publicKey, function (e, free) {
if (e) {
console.error(e);
WARN('getFreeSpace', e);
return void cb(e);
}
if (pinSize > free) { return void cb('E_OVER_LIMIT'); }
@ -573,7 +581,7 @@ var resetUserPins = function (Env, publicKey, channelList, cb) {
getFreeSpace(Env, publicKey, function (e, free) {
if (e) {
console.error(e);
WARN('getFreeSpace', e);
return void cb(e);
}
@ -646,6 +654,9 @@ var makeFileStream = function (root, id, cb) {
stream.on('open', function () {
cb(void 0, stream);
});
stream.on('error', function (e) {
WARN('stream error', e);
});
} catch (err) {
cb('BAD_STREAM');
}
@ -737,14 +748,12 @@ var upload_complete = function (Env, publicKey, cb) {
safeMkdir(Path.join(paths.blob, prefix), function (e) {
if (e) {
console.error('[safeMkdir]');
console.error(e);
console.log();
WARN('safeMkdir', e);
return void cb('RENAME_ERR');
}
isFile(newPath, function (e, yes) {
if (e) {
console.error(e);
WARN('isFile', e);
return void cb(e);
}
if (yes) {
@ -770,7 +779,7 @@ var upload_complete = function (Env, publicKey, cb) {
// lol wut handle ur errors
Fs.rename(oldPath, newPath, function (e) {
if (e) {
console.error(e);
WARN('rename', e);
if (retries--) {
return setTimeout(function () {
@ -803,7 +812,7 @@ var upload_status = function (Env, publicKey, filesize, cb) {
if (filesize >= free) { return cb('NOT_ENOUGH_SPACE'); }
isFile(filePath, function (e, yes) {
if (e) {
console.error("uploadError: [%s]", e);
WARN('upload', e);
return cb('UNNOWN_ERROR');
}
cb(e, yes);
@ -834,11 +843,7 @@ RPC.create = function (config /*:typeof(ConfigType)*/, cb /*:(?Error, ?Function)
// load pin-store...
console.log('loading rpc module...');
var warn = function (e, output) {
if (e && !config.suppressRPCErrors) {
console.error(new Date().toISOString() + ' [' + e + ']', output);
}
};
if (config.suppressRPCErrors) { SUPPRESS_RPC_ERRORS = true; }
var keyOrDefaultString = function (key, def) {
return typeof(config[key]) === 'string'? config[key]: def;
@ -937,41 +942,41 @@ RPC.create = function (config /*:typeof(ConfigType)*/, cb /*:(?Error, ?Function)
case 'COOKIE': return void Respond(void 0);
case 'RESET':
return resetUserPins(Env, safeKey, msg[1], function (e, hash) {
//warn(e, hash);
//WARN(e, hash);
return void Respond(e, hash);
});
case 'PIN':
return pinChannel(Env, safeKey, msg[1], function (e, hash) {
warn(e, hash);
WARN(e, hash);
Respond(e, hash);
});
case 'UNPIN':
return unpinChannel(Env, safeKey, msg[1], function (e, hash) {
warn(e, hash);
WARN(e, hash);
Respond(e, hash);
});
case 'GET_HASH':
return void getHash(Env, safeKey, function (e, hash) {
warn(e, hash);
WARN(e, hash);
Respond(e, hash);
});
case 'GET_TOTAL_SIZE': // TODO cache this, since it will get called quite a bit
return getTotalSize(Env, safeKey, function (e, size) {
if (e) {
warn(e, safeKey);
WARN(e, safeKey);
return void Respond(e);
}
Respond(e, size);
});
case 'GET_FILE_SIZE':
return void getFileSize(Env, msg[1], function (e, size) {
warn(e, msg[1]);
WARN(e, msg[1]);
Respond(e, size);
});
case 'UPDATE_LIMITS':
return void updateLimits(config, safeKey, function (e, limit) {
if (e) {
warn(e, limit);
WARN(e, limit);
return void Respond(e);
}
Respond(void 0, limit);
@ -979,7 +984,7 @@ RPC.create = function (config /*:typeof(ConfigType)*/, cb /*:(?Error, ?Function)
case 'GET_LIMIT':
return void getLimit(Env, safeKey, function (e, limit) {
if (e) {
warn(e, limit);
WARN(e, limit);
return void Respond(e);
}
Respond(void 0, limit);
@ -987,7 +992,7 @@ RPC.create = function (config /*:typeof(ConfigType)*/, cb /*:(?Error, ?Function)
case 'GET_MULTIPLE_FILE_SIZE':
return void getMultipleFileSize(Env, msg[1], function (e, dict) {
if (e) {
warn(e, dict);
WARN(e, dict);
return void Respond(e);
}
Respond(void 0, dict);
@ -997,7 +1002,7 @@ RPC.create = function (config /*:typeof(ConfigType)*/, cb /*:(?Error, ?Function)
case 'UPLOAD':
if (!privileged) { return deny(); }
return void upload(Env, safeKey, msg[1], function (e, len) {
warn(e, len);
WARN(e, len);
Respond(e, len);
});
case 'UPLOAD_STATUS':
@ -1015,13 +1020,13 @@ RPC.create = function (config /*:typeof(ConfigType)*/, cb /*:(?Error, ?Function)
case 'UPLOAD_COMPLETE':
if (!privileged) { return deny(); }
return void upload_complete(Env, safeKey, function (e, hash) {
warn(e, hash);
WARN(e, hash);
Respond(e, hash);
});
case 'UPLOAD_CANCEL':
if (!privileged) { return deny(); }
return void upload_cancel(Env, safeKey, function (e) {
warn(e);
WARN(e);
Respond(e);
});
default:
@ -1054,7 +1059,9 @@ RPC.create = function (config /*:typeof(ConfigType)*/, cb /*:(?Error, ?Function)
var updateLimitDaily = function () {
updateLimits(config, undefined, function (e) {
if (e) { console.error('Error updating the storage limits', e); }
if (e) {
WARN('limitUpdate', e);
}
});
};
updateLimitDaily();