diff --git a/lib/commands/pin-rpc.js b/lib/commands/pin-rpc.js index 4aaeb7aaf..cda482d6b 100644 --- a/lib/commands/pin-rpc.js +++ b/lib/commands/pin-rpc.js @@ -547,8 +547,9 @@ const deferResponse = function (Env, channel, cb) { }; */ +// FIXME this will be removed from the client Pinning.isChannelPinned = function (Env, channel, cb) { - return void cb(void 0, true); // XXX + return void cb(void 0, true); /* // if the pins are fully loaded then you can answer yes/no definitively if (Env.pinsLoaded) { diff --git a/lib/compute-index.js b/lib/compute-index.js index 7a146e060..b246b0c9c 100644 --- a/lib/compute-index.js +++ b/lib/compute-index.js @@ -15,18 +15,15 @@ const init = function (config, cb) { return void cb('E_INVALID_CONFIG'); } - Store.create(config, function (_store) { + Store.create(config, function (err, _store) { + if (err) { return void cb(err); } store = _store; cb(); }); }; const tryParse = function (Env, str) { - try { - return JSON.parse(str); - } catch (err) { - // XXX - } + try { return JSON.parse(str); } catch (err) { } }; /* computeIndex diff --git a/lib/historyKeeper.js b/lib/historyKeeper.js index 23dbf5fd1..2f6043dfd 100644 --- a/lib/historyKeeper.js +++ b/lib/historyKeeper.js @@ -215,12 +215,14 @@ module.exports.create = function (config, cb) { // create a pin store Store.create({ filePath: pinPath, - }, w(function (s) { + }, w(function (err, s) { + if (err) { throw err; } Env.pinStore = s; })); // create a channel store - Store.create(config, w(function (_store) { + Store.create(config, w(function (err, _store) { + if (err) { throw err; } config.store = _store; Env.msgStore = _store; // API used by rpc Env.store = _store; // API used by historyKeeper diff --git a/lib/hk-util.js b/lib/hk-util.js index 97e5c3014..bfc9883c1 100644 --- a/lib/hk-util.js +++ b/lib/hk-util.js @@ -835,7 +835,14 @@ HK.initializeIndexWorkers = function (Env, config, _cb) { worker.on('message', function (res) { if (!res || !res.txid) { return; } //console.log(res); - response.handle(res.txid, [res.error, res.value]); + try { + response.handle(res.txid, [res.error, res.value]); + } catch (err) { + Env.Log.error("INDEX_WORKER", { + error: err, + response: res, + }); + } }); worker.on('exit', function () { var idx = workers.indexOf(worker); diff --git a/lib/log.js b/lib/log.js index 756da8734..0e0567a69 100644 --- a/lib/log.js +++ b/lib/log.js @@ -96,12 +96,17 @@ Logger.create = function (config, cb) { if (!config.logPath) { console.log("No logPath configured. Logging to file disabled"); - return void cb(Object.freeze(createMethods(ctx))); + var logger = createMethods(ctx); + logger.shutdown = noop; + return void cb(Object.freeze(logger)); } Store.create({ filePath: config.logPath, - }, function (store) { + }, function (err, store) { + if (err) { + throw err; + } ctx.store = store; var logger = createMethods(ctx); logger.shutdown = function () { diff --git a/lib/rpc.js b/lib/rpc.js index 241f77d41..df9deab8c 100644 --- a/lib/rpc.js +++ b/lib/rpc.js @@ -17,7 +17,7 @@ const UNAUTHENTICATED_CALLS = { GET_FILE_SIZE: Pinning.getFileSize, GET_MULTIPLE_FILE_SIZE: Pinning.getMultipleFileSize, GET_DELETED_PADS: Pinning.getDeletedPads, - IS_CHANNEL_PINNED: Pinning.isChannelPinned, + IS_CHANNEL_PINNED: Pinning.isChannelPinned, // FIXME drop this RPC IS_NEW_CHANNEL: Channel.isNewChannel, WRITE_PRIVATE_MESSAGE: Channel.writePrivateMessage, GET_METADATA: Metadata.getMetadata, @@ -198,8 +198,6 @@ RPC.create = function (Env, cb) { updateLimitDaily(); Env.intervals.dailyLimitUpdate = setInterval(updateLimitDaily, 24*3600*1000); - //Pinning.loadChannelPins(Env); // XXX - // expire old sessions once per minute Env.intervals.sessionExpirationInterval = setInterval(function () { Core.expireSessions(Sessions); diff --git a/lib/storage/file.js b/lib/storage/file.js index 25ff021f0..e040bf807 100644 --- a/lib/storage/file.js +++ b/lib/storage/file.js @@ -951,7 +951,9 @@ var trimChannel = function (env, channelName, hash, _cb) { }); }; -module.exports.create = function (conf, cb) { +module.exports.create = function (conf, _cb) { + var cb = Util.once(Util.mkAsync(_cb)); + var env = { root: conf.filePath || './datastore', archiveRoot: conf.archivePath || './data/archive', @@ -984,18 +986,19 @@ module.exports.create = function (conf, cb) { // make sure the store's directory exists Fse.mkdirp(env.root, PERMISSIVE, w(function (err) { if (err && err.code !== 'EEXIST') { - throw err; // XXX + w.abort(); + return void cb(err); } })); // make sure the cold storage directory exists Fse.mkdirp(env.archiveRoot, PERMISSIVE, w(function (err) { if (err && err.code !== 'EEXIST') { - throw err; // XXX + w.abort(); + return void cb(err); } })); }).nThen(function () { - // XXX leave a place for an error - cb({ + cb(void 0, { // OLDER METHODS // write a new message to a log message: function (channelName, content, cb) { diff --git a/scripts/diagnose-archive-conflicts.js b/scripts/diagnose-archive-conflicts.js index 0e75f4abe..7e5ee92bc 100644 --- a/scripts/diagnose-archive-conflicts.js +++ b/scripts/diagnose-archive-conflicts.js @@ -8,7 +8,11 @@ var Log; nThen(function (w) { // load the store which will be used for iterating over channels // and performing operations like archival and deletion - Store.create(config, w(function (_) { + Store.create(config, w(function (err, _) { + if (err) { + w.abort(); + throw err; + } store = _; })); diff --git a/scripts/evict-inactive.js b/scripts/evict-inactive.js index 18730fd1e..a3a595ca4 100644 --- a/scripts/evict-inactive.js +++ b/scripts/evict-inactive.js @@ -34,7 +34,11 @@ var msSinceStart = function () { nThen(function (w) { // load the store which will be used for iterating over channels // and performing operations like archival and deletion - Store.create(config, w(function (_) { + Store.create(config, w(function (err, _) { + if (err) { + w.abort(); + throw err; + } store = _; })); // load the list of pinned files so you know which files // should not be archived or deleted diff --git a/scripts/restore-archived.js b/scripts/restore-archived.js index 3f68b607e..4ee01c02f 100644 --- a/scripts/restore-archived.js +++ b/scripts/restore-archived.js @@ -8,7 +8,8 @@ var Log; nThen(function (w) { // load the store which will be used for iterating over channels // and performing operations like archival and deletion - Store.create(config, w(function (_) { + Store.create(config, w(function (err, _) { + if (err) { throw err; } store = _; }));