Skip to content

Commit d57425a

Browse files
committed
Fix node enable/disable over restart - load configs after settings init
1 parent a457c06 commit d57425a

3 files changed

Lines changed: 20 additions & 8 deletions

File tree

red/runtime/nodes/registry/index.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,12 @@ function init(runtime) {
2929
settings = runtime.settings;
3030
installer.init(runtime.settings);
3131
loader.init(runtime);
32-
registry.init(runtime.settings,loader);
32+
registry.init(settings,loader);
33+
}
34+
35+
function load() {
36+
registry.load();
37+
return loader.load();
3338
}
3439

3540
function addModule(module) {
@@ -52,7 +57,7 @@ function enableNodeSet(typeOrId) {
5257

5358
module.exports = {
5459
init:init,
55-
load:loader.load,
60+
load:load,
5661
clear: registry.clear,
5762
registerType: registry.registerNodeConstructor,
5863

red/runtime/nodes/registry/registry.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,6 @@ var moduleNodes = {};
3535
function init(_settings,_loader) {
3636
settings = _settings;
3737
loader = _loader;
38-
if (settings.available()) {
39-
moduleConfigs = loadNodeConfigs();
40-
} else {
41-
moduleConfigs = {};
42-
}
4338
moduleNodes = {};
4439
nodeTypeToId = {};
4540
nodeConstructors = {};
@@ -48,6 +43,14 @@ function init(_settings,_loader) {
4843
Node = require("../Node");
4944
}
5045

46+
function load() {
47+
if (settings.available()) {
48+
moduleConfigs = loadNodeConfigs();
49+
} else {
50+
moduleConfigs = {};
51+
}
52+
}
53+
5154
function filterNodeInfo(n) {
5255
var r = {
5356
id: n.id||n.module+"/"+n.name,
@@ -535,6 +538,7 @@ function cleanModuleList() {
535538

536539
var registry = module.exports = {
537540
init: init,
541+
load: load,
538542
clear: clear,
539543

540544
registerNodeConstructor: registerNodeConstructor,

test/red/runtime/nodes/registry/registry_spec.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,11 @@ describe("red/nodes/registry/registry",function() {
7575

7676

7777

78-
describe('#init', function() {
78+
describe('#init/load', function() {
7979
it('loads initial config', function(done) {
8080
typeRegistry.init(settingsWithStorageAndInitialConfig);
81+
typeRegistry.getNodeList().should.have.lengthOf(0);
82+
typeRegistry.load();
8183
typeRegistry.getNodeList().should.have.lengthOf(1);
8284
done();
8385
});
@@ -113,6 +115,7 @@ describe("red/nodes/registry/registry",function() {
113115
};
114116
var expected = JSON.parse('{"node-red":{"name":"node-red","nodes":{"sentiment":{"name":"sentiment","types":["sentiment"],"enabled":true,"module":"node-red"},"inject":{"name":"inject","types":["inject"],"enabled":true,"module":"node-red"}}},"testModule":{"name":"testModule","nodes":{"a-module.js":{"name":"a-module.js","types":["example"],"enabled":true,"module":"testModule"}}}}');
115117
typeRegistry.init(legacySettings);
118+
typeRegistry.load();
116119
legacySettings.set.calledOnce.should.be.true;
117120
legacySettings.set.args[0][1].should.eql(expected);
118121
done();

0 commit comments

Comments
 (0)