Hi all,
in my javascript service, I’ve an async function that should write a log in a table when finished execution, both on then and catch block. i.e.
//insert "INIT" record on backendless table
myAsyncFunction()
.then((value) => {
// insert "Success End" record on backendless table
})
.catch((error) => {
// insert "Error End" record on backendless table
});
if I debug with coderunner on VSCode, both initial record and the one in then block are inserted
if I run the service without debugging it, only initial record is inserted, not the one in the then or catch block
Marina.Kan
(Marina Kan)
September 20, 2022, 7:56am
2
Hi, @Elena_Aralla
Please take a look at this doc. I think it may be useful for your case: Troubleshooting - Developing Backendless Server Code with node.js
Regards,
Marina
Hi @Marina.Kan ,
I read the doc you suggest and done some check; these are the result:
If I run coderunner on VS Code and then call the API from backend, nothing was written in files->logging-> but in debug console of VSCode I read:
19:01:07.070 [master] [C48B29B2-B924-1801-FFCA-A378FC218700] New task arrived!
node_modules/backendless-coderunner/lib/util/logger.js:110
19:01:07.071 [master] [C48B29B2-B924-1801-FFCA-A378FC218700] [INVOKE SERVICE] services.TestService.HelloWorldAsync
node_modules/backendless-coderunner/lib/util/logger.js:110
19:01:07.071 [master] console.log - HelloWorldASync - INIT
node_modules/backendless-coderunner/lib/util/logger.js:110
19:01:07.074 [master] console.log - HelloWorldASync - END
node_modules/backendless-coderunner/lib/util/logger.js:110
19:01:07.075 [master] [C48B29B2-B924-1801-FFCA-A378FC218700] Processing finished
node_modules/backendless-coderunner/lib/util/logger.js:110
19:01:12.077 [master] console.log - HelloWorldASync - The Promise is resolved; it return: done!
if I call the api from backend without coderunner on VSCode, the log file is written and this is it’s content:
19:2:37.388 | SERVER_CODE | INFO | [5345] Building ServerCode Model for path (/opt/backendless/repo/853476f7-1565-cba3-ff64-81d8a9303300/files/servercode/JS/default/PRODUCTION)
19:2:37.389 | SERVER_CODE | INFO | [5345] ServerCode Model built in 5ms
19:2:37.390 | SERVER_CODE | INFO | [5345] Reading services/TestService.js...
19:2:37.391 | SERVER_CODE | INFO | [5345] ServerCode Model extended in 2ms
19:2:37.393 | SERVER_CODE | INFO | [5345] [60650598-B921-A0B7-FF68-4277D7C0EE00] [INVOKE SERVICE] services.TestService.HelloWorldAsync
19:2:37.396 | SERVER_CODE | INFO | [5345] console.log - HelloWorldASync - INIT
19:2:37.396 | TestService | INFO | logger.info - HelloWorldASync - INIT
19:2:37.397 | TestService | INFO | start
19:2:37.397 | SERVER_CODE | INFO | [5345] console.log - HelloWorldASync - END
19:2:37.397 | TestService | INFO | logger.info - HelloWorldASync - END
19:2:37.398 | SERVER_CODE | INFO | [5345] Processing finished in 19.823ms
19:2:37.398 | SERVER_CODE | INFO | [5345] Task results sent
19:2:37.398 | SERVER_CODE | INFO | [5345] Flushing logs
in the debug console of VS Code I can see the log:
console.log - HelloWorldASync - The Promise is resolved; it return: done!
that I can’t find in log file!
In the second case, I don’t know if my async function (MyFunction) finished with success or not!
Thank you,
Elena.
Dima
(Dima Vak)
September 21, 2022, 2:12pm
4
Hello @Elena_Aralla
That was caused because your code doesn’t wait for resolving myAsyncFunction
and the process was killed before you resolved your promise. When you use local debug it works because the process is not stopped.
https://backendless.com/docs/bl-js/bl_troubleshooting.html#servercode-works-well-in-the-debug-mode-but-does-not-when-deployed-to-the-cloud
Try to rewrite your logic with await for your async
function. Or return a promise where your end log will be in finally construction.
Regards, Dima