From 96b9321d139c5365048ca317252b848074c427c5 Mon Sep 17 00:00:00 2001 From: Sergey Konovalov Date: Wed, 13 Aug 2025 01:34:16 +0300 Subject: [PATCH] [feature] Allow Oracle DB thick mode --- Common/config/default.json | 1 + .../sources/databaseConnectors/oracleConnector.js | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/Common/config/default.json b/Common/config/default.json index d57ac448..8d572c46 100644 --- a/Common/config/default.json +++ b/Common/config/default.json @@ -409,6 +409,7 @@ "queueTimeout": 60000 }, "oracleExtraOptions": { + "thin": true, "connectTimeout": 60 }, "msSqlExtraOptions": { diff --git a/DocService/sources/databaseConnectors/oracleConnector.js b/DocService/sources/databaseConnectors/oracleConnector.js index 287e4c3b..ff0dcfb4 100644 --- a/DocService/sources/databaseConnectors/oracleConnector.js +++ b/DocService/sources/databaseConnectors/oracleConnector.js @@ -36,6 +36,7 @@ const oracledb = require('oracledb'); const config = require('config'); const connectorUtilities = require('./connectorUtilities'); const utils = require('../../../Common/sources/utils'); +const operationContext = require('../../../Common/sources/operationContext'); const configSql = config.get('services.CoAuthoring.sql'); const cfgTableResult = configSql.get('tableResult'); @@ -55,6 +56,18 @@ const connectionConfiguration = { poolMax: configSql.get('connectionlimit') }; const additionalOptions = config.util.cloneDeep(configSql.get('oracleExtraOptions')); +// Initialize thick mode +if (additionalOptions?.thin === false) { + try { + oracledb.initOracleClient(additionalOptions?.libDir ? { libDir: additionalOptions.libDir } : {}); + } catch (err) { + operationContext.global.logger.error('Failed to initialize thick Oracle client:', err); + } +} +// Remove Oracle client options before creating connection config +delete additionalOptions.thin; +delete additionalOptions.libDir; + const configuration = Object.assign({}, connectionConfiguration, additionalOptions); const forceClosingCountdownMs = 2000; let pool = null;