From 04a7c9dbf72227a11a0782384e0344358b18e3e0 Mon Sep 17 00:00:00 2001 From: Steve Walsh Date: Mon, 13 Nov 2023 10:25:50 +0000 Subject: [PATCH 1/3] undefined fix, plus extra cater for error now --- nodes/core/core/80-function.js | 38 +++++++++++++++++++++------------- package-lock.json | 2 +- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/nodes/core/core/80-function.js b/nodes/core/core/80-function.js index d74d0ef9f..3e16172e5 100644 --- a/nodes/core/core/80-function.js +++ b/nodes/core/core/80-function.js @@ -233,7 +233,7 @@ module.exports = function (RED) { const result = vm2Instance.run(functionText); const afterVm2 = process.hrtime(beforeVm2); payloadValidator.verify(result); - sendResults(this, msg._msgid, result); + sendResults(this, msg._msgid, msg); const logger = clone(msg.logger); let lambdaRequestId; let { @@ -252,28 +252,26 @@ module.exports = function (RED) { } = RED; if (codefile) { + workerId = workerId.split(":::")[0]; + const nodeId = this.id.split(`${organization}-${workerId}-`)[1]; try { const messageToSend = clone(msg); delete messageToSend.logger; const beforeCodefile = process.hrtime(); const { - result: { - Result: { msg: responseMessage }, + payload: { + result, + error }, - } = await codefile.run({ srcCode: this.func, context: { msg } }); + requestId + } = await codefile.run({ srcCode: this.func, context: { msg } }); + const afterCodefile = process.hrtime(beforeCodefile); - responseMessage.logger = logger; - payloadValidator.verify(responseMessage); - // to make function node return result from code file uncomment this line, and comment out the sendResults above - // sendResults(this,msg._msgid, responseMessage); - - workerId = workerId.split(":::")[0]; - const nodeId = this.id.split(`${organization}-${workerId}-`)[1]; - lambdaRequestId = responseMessage.lambdaRequestId; const metrics = { lambdaRequestId: requestId, + action:'codefile-success', organization, workerId: workerId, nodeId: nodeId, @@ -287,12 +285,24 @@ module.exports = function (RED) { ) / 100 }ms`, }; + if(result){ + // not required right now since we dont go via this path + // const responseMessage = result.msg + // responseMessage.logger = logger; + // payloadValidator.verify(responseMessage); + // sendResults(this,msg._msgid, responseMessage); + } + else{ + metrics.error = error; + metrics.action = 'codefile-error'; + } logger.info(JSON.stringify(metrics, null, 2)); } catch (e) { + logger.error(e) logger.error({ message: "Error running codefile", - error: e, - lambdaRequestId, + action:'codefile-error', + error: e.message, organization, workerId: workerId, nodeId: nodeId, diff --git a/package-lock.json b/package-lock.json index d30a928d8..8a828aab7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@servisbot/node-red", - "version": "0.18.7-patch-11", + "version": "0.18.7-patch-12", "lockfileVersion": 1, "requires": true, "dependencies": { From 328ebbf4ce17b2e1c2fdff1e2c18ee21530fd5fa Mon Sep 17 00:00:00 2001 From: Steve Walsh Date: Mon, 13 Nov 2023 10:26:59 +0000 Subject: [PATCH 2/3] readme update --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index c4515ee62..11b7d5a5b 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,10 @@ To make a change to the node-red runtime being used by K4 avalanche: When doing dev work dont try to link into k4/k5 it just causes issue, instead just go into the node-modules of k4/k5 and make your changes in there # CHANGE-LOG +## 0.18.7-patch-13 +2023-11-13 +- Small fix for codefile logic + ## 0.18.7-patch-12 2023-11-09 - Added code file as an alternative to vm for function nodes From e8a142079c02da58090d36d0e06ebe9a19c1ba3f Mon Sep 17 00:00:00 2001 From: Steve Walsh Date: Mon, 13 Nov 2023 10:27:38 +0000 Subject: [PATCH 3/3] . --- nodes/core/core/80-function.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/core/core/80-function.js b/nodes/core/core/80-function.js index 3e16172e5..d6f674fe9 100644 --- a/nodes/core/core/80-function.js +++ b/nodes/core/core/80-function.js @@ -233,7 +233,7 @@ module.exports = function (RED) { const result = vm2Instance.run(functionText); const afterVm2 = process.hrtime(beforeVm2); payloadValidator.verify(result); - sendResults(this, msg._msgid, msg); + sendResults(this, msg._msgid, result); const logger = clone(msg.logger); let lambdaRequestId; let {