Skip to content

Commit 930b32e

Browse files
committed
better error handling for amqp
1 parent 62518de commit 930b32e

6 files changed

Lines changed: 63 additions & 19 deletions

File tree

OpenFlowNodeRED/src/amqp_consumer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export class amqp_consumer {
2121
this.noAck = noAck;
2222
var me: amqp_consumer = this;
2323
this.conn = await amqplib.connect(this.connectionstring);
24-
this.conn.on("error", () => null);
24+
this.conn.on("error", (error) => this._logger.error(error));
2525
this.channel = await this.conn.createChannel();
2626
this._ok = await this.channel.assertQueue(this.queue, { durable: false });
2727
await this.channel.consume(this.queue, (msg) => { this._OnMessage(me, msg); }, { noAck: noAck });

OpenFlowNodeRED/src/node-red-contrib-openflow-storage.ts

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -132,24 +132,32 @@ export class noderedcontribopenflowstorage {
132132
console.error(error);
133133
}
134134
}
135+
private firstrun: boolean = true;
135136
public async _getSettings(): Promise<any> {
136137
try {
137138
this._logger.silly("noderedcontribopenflowstorage::_getSettings");
138139
var result = await NoderedUtil.Query("nodered", { _type: "setting", nodered_id: Config.nodered_id }, null, null, 1, 0, null);
139140
if (result.length === 0) { return {}; }
140141

141142
var settings = JSON.parse(result[0].settings);
142-
var child_process = require("child_process");
143-
var keys = Object.keys(settings.nodes);
144-
for (var i = 0; i < keys.length; i++) {
145-
var key = keys[i];
146-
var val = settings.nodes[key];
147-
if (["node-red", "node-red-node-email", "node-red-node-feedparser", "node-red-node-rbe",
148-
"node-red-node-sentiment", "node-red-node-tail", "node-red-node-twitter"].indexOf(key) === -1) {
149-
var pname = val.name + "@" + val.version;
150-
this._logger.info("Installing " + pname);
151-
child_process.execSync("npm install " + pname, { stdio: [0, 1, 2], cwd: this.settings.userDir });
143+
if (this.firstrun) {
144+
var child_process = require("child_process");
145+
var keys = Object.keys(settings.nodes);
146+
var modules = "";
147+
for (var i = 0; i < keys.length; i++) {
148+
var key = keys[i];
149+
var val = settings.nodes[key];
150+
if (["node-red", "node-red-node-email", "node-red-node-feedparser", "node-red-node-rbe",
151+
"node-red-node-sentiment", "node-red-node-tail", "node-red-node-twitter"].indexOf(key) === -1) {
152+
var pname = val.name + "@" + val.version;
153+
// this._logger.info("Installing " + pname);
154+
// child_process.execSync("npm install " + pname, { stdio: [0, 1, 2], cwd: this.settings.userDir });
155+
modules += (" " + pname);
156+
}
152157
}
158+
this._logger.info("Installing " + modules);
159+
child_process.execSync("npm install " + modules, { stdio: [0, 1, 2], cwd: this.settings.userDir });
160+
this.firstrun = false;
153161
}
154162
this._logger.silly("noderedcontribopenflowstorage::_getSettings: return result");
155163
return settings;

OpenFlowNodeRED/src/nodered/nodes/amqp_nodes.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,13 @@ export class amqp_consumer_node {
107107
}
108108
onclose() {
109109
if (!NoderedUtil.IsNullUndefinded(this.con)) {
110-
this.con.close();
110+
try {
111+
this.con.close().catch((error) => {
112+
Logger.instanse.error(error);
113+
});
114+
} catch (error) {
115+
Logger.instanse.error(error);
116+
}
111117
}
112118
}
113119
}
@@ -205,7 +211,13 @@ export class amqp_publisher_node {
205211
}
206212
onclose() {
207213
if (!NoderedUtil.IsNullUndefinded(this.con)) {
208-
this.con.close();
214+
try {
215+
this.con.close().catch((error) => {
216+
Logger.instanse.error(error);
217+
});
218+
} catch (error) {
219+
Logger.instanse.error(error);
220+
}
209221
}
210222
}
211223
}

OpenFlowNodeRED/src/nodered/nodes/rpa_nodes.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,13 @@ export class rpa_detector_node {
5757
}
5858
onclose() {
5959
if (!NoderedUtil.IsNullUndefinded(this.con)) {
60-
this.con.close();
60+
try {
61+
this.con.close().catch((error) => {
62+
Logger.instanse.error(error);
63+
});
64+
} catch (error) {
65+
Logger.instanse.error(error);
66+
}
6167
}
6268
}
6369
}
@@ -149,7 +155,13 @@ export class rpa_workflow_node {
149155
}
150156
onclose() {
151157
if (!NoderedUtil.IsNullUndefinded(this.con)) {
152-
this.con.close();
158+
try {
159+
this.con.close().catch((error) => {
160+
Logger.instanse.error(error);
161+
});
162+
} catch (error) {
163+
Logger.instanse.error(error);
164+
}
153165
}
154166
}
155167
}

OpenFlowNodeRED/src/nodered/nodes/workflow_nodes.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,19 @@ export class workflow_in_node {
146146
data.payload._id = msg._id;
147147
ack(JSON.stringify(data));
148148
} catch (error) {
149-
149+
Logger.instanse.error(error);
150150
}
151151
}
152152
}
153153
onclose() {
154154
if (!NoderedUtil.IsNullUndefinded(this.con)) {
155-
this.con.close();
155+
try {
156+
this.con.close().catch((error) => {
157+
Logger.instanse.error(error);
158+
});
159+
} catch (error) {
160+
Logger.instanse.error(error);
161+
}
156162
}
157163
}
158164
}
@@ -190,7 +196,13 @@ export class workflow_out_node {
190196
}
191197
var data: any = {};
192198
data.state = msg.state;
193-
data.error = msg.error;
199+
if (msg.error) {
200+
data.error = "error";
201+
if (msg.error.message) {
202+
data.error = msg.error.message;
203+
}
204+
}
205+
//data.error = msg.error;
194206
data.payload = msg.payload;
195207
data.jwt = msg.jwt;
196208
data.payload._id = msg._id;

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.0.255
1+
0.0.256

0 commit comments

Comments
 (0)