From 9d01d65c2b2d3921f1d0b5db462b9ef0663f6aa4 Mon Sep 17 00:00:00 2001 From: Linsted Date: Mon, 16 Mar 2026 16:19:45 +0100 Subject: [PATCH 1/2] HCK-15365: add logging and error handling --- reverse_engineering/api.js | 17 +++++++++++++---- reverse_engineering/neo4jHelper.js | 21 ++++++++++++++++----- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/reverse_engineering/api.js b/reverse_engineering/api.js index cfd2bfc..451ce05 100644 --- a/reverse_engineering/api.js +++ b/reverse_engineering/api.js @@ -19,9 +19,18 @@ module.exports = { () => { logger.log('info', 'Successfully connected to the database instance', 'Connection'); - neo4j.getRawDbVersion().then(dbVersion => { - logger.log('info', `Database version ${dbVersion}`); - }); + neo4j + .getRawDbVersion() + .then(dbVersion => { + logger.log('info', `Database version ${dbVersion}`); + }) + .catch(error => { + logger.log( + 'warn', + `Could not retrieve Database version at connect phase: ${error.message}`, + 'Connection', + ); + }); cb(); }, @@ -143,7 +152,7 @@ module.exports = { logger.log('info', '', 'Start Reverse Engineering Neo4j'); const isMultiDb = await neo4j.supportsMultiDb(); - const dbVersion = await neo4j.getDbVersion(); + const dbVersion = await neo4j.getDbVersion(logger); logger.log('info', `Version: ${dbVersion}`, 'Database info'); const modelProps = { dbVersion, diff --git a/reverse_engineering/neo4jHelper.js b/reverse_engineering/neo4jHelper.js index 756c6a8..afc344a 100644 --- a/reverse_engineering/neo4jHelper.js +++ b/reverse_engineering/neo4jHelper.js @@ -313,13 +313,23 @@ const getSSLConfig = info => { }; const getRawDbVersion = async () => { - const versionResponse = await execute( - 'call dbms.components() yield versions unwind versions as version return version', - ); - return _.head(versionResponse)?.version; + try { + const versionResponse = await execute( + 'call dbms.components() yield versions unwind versions as version return version', + ); + const version = _.head(versionResponse)?.version; + + if (!version) { + throw new Error('Neo4j version is empty or undefined.'); + } + return version; + } catch (error) { + error.step = 'Error in getRawDbVersion detecting Neo4j database version.'; + throw error; + } }; -const getDbVersion = async () => { +const getDbVersion = async logger => { try { const version = await getRawDbVersion(); const [major, minor] = version.split('.'); @@ -337,6 +347,7 @@ const getDbVersion = async () => { } return '3.x'; } catch (err) { + logger?.log('warn', `Error in getDbVersion ${err.message || err}`); return '3.x'; } }; From 1f23dbbbd690c173fa307412218424502d4ea1d6 Mon Sep 17 00:00:00 2001 From: ivan-m-dev Date: Mon, 16 Mar 2026 17:52:42 +0100 Subject: [PATCH 2/2] HCK-15365: enhance logging --- reverse_engineering/api.js | 5 ++++- reverse_engineering/neo4jHelper.js | 17 ++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/reverse_engineering/api.js b/reverse_engineering/api.js index 451ce05..7112827 100644 --- a/reverse_engineering/api.js +++ b/reverse_engineering/api.js @@ -27,7 +27,10 @@ module.exports = { .catch(error => { logger.log( 'warn', - `Could not retrieve Database version at connect phase: ${error.message}`, + { + message: error.step || 'Could not retrieve Database version at connect phase', + error: prepareError(error), + }, 'Connection', ); }); diff --git a/reverse_engineering/neo4jHelper.js b/reverse_engineering/neo4jHelper.js index afc344a..e324ef8 100644 --- a/reverse_engineering/neo4jHelper.js +++ b/reverse_engineering/neo4jHelper.js @@ -319,9 +319,12 @@ const getRawDbVersion = async () => { ); const version = _.head(versionResponse)?.version; - if (!version) { - throw new Error('Neo4j version is empty or undefined.'); + if (!version || typeof version !== 'string') { + throw new Error( + `Expected Neo4j version to be a string, but got "${typeof version}" with value: ${JSON.stringify(version)}`, + ); } + return version; } catch (error) { error.step = 'Error in getRawDbVersion detecting Neo4j database version.'; @@ -347,7 +350,15 @@ const getDbVersion = async logger => { } return '3.x'; } catch (err) { - logger?.log('warn', `Error in getDbVersion ${err.message || err}`); + const errorObj = err instanceof Error ? { message: err.message, stack: err.stack, step: err.step } : err; + logger?.log( + 'warn', + { + message: 'Error in getDbVersion', + error: errorObj, + }, + 'Database info', + ); return '3.x'; } };