From f7729c6a9f1501c9f504035dec77f0dfa8f8550a Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 12 Jan 2023 14:51:57 +0200 Subject: [PATCH 1/2] Improve error handling for internal calls --- workers/loc.api/responder/index.js | 37 +++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/workers/loc.api/responder/index.js b/workers/loc.api/responder/index.js index fa934bae..fb7b9017 100644 --- a/workers/loc.api/responder/index.js +++ b/workers/loc.api/responder/index.js @@ -114,13 +114,26 @@ const _getErrorMetadata = (args, err) => { return { code, message, data, error } } -const _logError = (logger, args, err, name) => { +const _logError = (loggerArgs, err) => { + const { + logger, + args, + name, + isInternalRequest + } = loggerArgs ?? {} + const shouldNotBeLoggedToStdErrorStream = ( + isInternalRequest && + !!args?.shouldNotBeLoggedToStdErrorStream + ) const { code, error } = _getErrorMetadata(args, err) - if (code !== 500) { + if ( + code !== 500 || + shouldNotBeLoggedToStdErrorStream + ) { logger.debug(_prepareErrorData(error, name)) return @@ -176,14 +189,22 @@ module.exports = ( args, cb ) => { + const isInternalRequest = !cb + const loggerArgs = { + logger, + args, + name, + isInternalRequest + } + try { const resFn = handler(container, args) if (resFn instanceof Promise) { - if (!cb) { + if (isInternalRequest) { return resFn .catch((err) => { - _logError(logger, args, err, name) + _logError(loggerArgs, err) return Promise.reject(err) }) @@ -192,7 +213,7 @@ module.exports = ( resFn .then((res) => cb(null, _makeJsonRpcResponse(args, res))) .catch((err) => { - _logError(logger, args, err, name) + _logError(loggerArgs, err) cb(null, _makeJsonRpcResponse(args, err)) }) @@ -200,12 +221,12 @@ module.exports = ( return } - if (!cb) return resFn + if (isInternalRequest) return resFn cb(null, _makeJsonRpcResponse(args, resFn)) } catch (err) { - _logError(logger, args, err, name) + _logError(loggerArgs, err) - if (!cb) throw err + if (isInternalRequest) throw err cb(null, _makeJsonRpcResponse(args, err)) } } From 808ca0cb77a7068101e28290ab149957bc543e99 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 12 Jan 2023 14:52:22 +0200 Subject: [PATCH 2/2] Dont be logged to std error stream when making internal call --- workers/loc.api/helpers/get-data-from-api.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/workers/loc.api/helpers/get-data-from-api.js b/workers/loc.api/helpers/get-data-from-api.js index c7251631..b98245bd 100644 --- a/workers/loc.api/helpers/get-data-from-api.js +++ b/workers/loc.api/helpers/get-data-from-api.js @@ -79,6 +79,13 @@ module.exports = ( try { const _args = cloneDeep(args) + /* + * API request should not be logged to std error stream + * when making an internal call and can have some attempts + * due to an internet connection issue + */ + _args.shouldNotBeLoggedToStdErrorStream = true + if ( typeof getData === 'string' && typeof middleware === 'function'