From 9bfc6d376b422757f0c3297ca45740a8e158a453 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Mon, 22 Sep 2014 13:15:19 +0100 Subject: [PATCH] Use module:node name to generate set id --- red/nodes/registry.js | 11 +++++++++++ red/server.js | 7 +++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/red/nodes/registry.js b/red/nodes/registry.js index 19b174c29..413d37dbf 100644 --- a/red/nodes/registry.js +++ b/red/nodes/registry.js @@ -419,7 +419,18 @@ function loadNodesFromModule(moduleDir,pkg) { */ function loadNodeConfig(file,module,name) { var id = crypto.createHash('sha1').update(file).digest("hex"); + if (module && name) { + var newid = crypto.createHash('sha1').update(module+":"+name).digest("hex"); + var existingInfo = registry.getNodeInfo(id); + if (existingInfo) { + // For a brief period, id for modules were calculated incorrectly. + // To prevent false-duplicates, this removes the old id entry + registry.removeNode(id); + registry.saveNodeList(); + } + id = newid; + } var info = registry.getNodeInfo(id); var isEnabled = true; diff --git a/red/server.js b/red/server.js index 9af7413c0..2c5f36270 100644 --- a/red/server.js +++ b/red/server.js @@ -242,7 +242,7 @@ function installModule(module) { if (err) { var lookFor404 = new RegExp(" 404 .*"+module+"$","m"); if (lookFor404.test(stdout)) { - util.log("[red] Installation of module "+module+" failed: not found"); + util.log("[red] Installation of module "+module+" failed: module not found"); var e = new Error(); e.code = 404; reject(e); @@ -324,7 +324,10 @@ function start() { for (i in missingModules) { if (missingModules.hasOwnProperty(i)) { util.log(" - "+i+": "+missingModules[i].join(", ")); - promises.push(installModule(i)); + installModule(i).otherwise(function(err) { + // Error already reported. Need the otherwise handler + // to stop the error propagating any further + }); } }