Skip to content

On OCI ADB-23ai with >=oracle-node-6.5.* connection gets NJS-521: connection to host x.x.x.x port 1522 received end-of-file on communication channel. #1697

@ChaosEngine

Description

@ChaosEngine

Driver mode: thin

  1. What versions are you using?
    >=oracledb-6.5.0 - problem exists with establishing connection
    <=oracledb-6.4.0 - connection is established
  process.platform: win32 and linux
  process.version: v20.18.0
  process.arch: x64
  require('oracledb').versionString: 6.6.0
  require('oracledb').oracleClientVersionString: undefined
  1. Is it an error or a hang or a crash?
    Error when trying to establish connection to Oracle OPCI ADB 23ai with mTLS wallet connection.

  2. What error(s) or behavior you are seeing?

Error on Linux:

Error: NJS-500: connection to the Oracle Database was broken
NJS-521: connection to host 138.1.3.227 port 1522 received end-of-file on communication channel. (CONNECTION_ID=oZD/yfgrKj5yUjTpiIh3KA==)
    at NTTCP.checkErr (/home/node/node_modules/.pnpm/[email protected]/node_modules/oracledb/lib/thin/sqlnet/ntTcp.js:327:29)
    at NTTCP.receive (/home/node/node_modules/.pnpm/[email protected]/node_modules/oracledb/lib/thin/sqlnet/ntTcp.js:463:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async NetworkSession._recvPacket (/home/node/node_modules/.pnpm/[email protected]/node_modules/oracledb/lib/thin/sqlnet/networkSession.js:390:22)
    at async NetworkSession.recvPacket (/home/node/node_modules/.pnpm/[email protected]/node_modules/oracledb/lib/thin/sqlnet/networkSession.js:455:12)
    at async ReadPacket.waitForPackets (/home/node/node_modules/.pnpm/[email protected]/node_modules/oracledb/lib/thin/protocol/packet.js:324:18)
    at async Protocol._decodeMessage (/home/node/node_modules/.pnpm/[email protected]/node_modules/oracledb/lib/thin/protocol/protocol.js:70:5)
    at async Protocol._processMessage (/home/node/node_modules/.pnpm/[email protected]/node_modules/oracledb/lib/thin/protocol/protocol.js:153:9)
    at async ThinConnectionImpl.connect (/home/node/node_modules/.pnpm/[email protected]/node_modules/oracledb/lib/thin/connection.js:696:9)
    at async ThinPoolImpl.bgThreadFunc (/home/node/node_modules/.pnpm/[email protected]/node_modules/oracledb/lib/thin/pool.js:437:11) {
  code: 'NJS-500'
}

Error on Windows:

Error: NJS-500: connection to the Oracle Database was broken
NJS-521: connection to host 138.1.3.227 port 1522 received end-of-file on communication channel. (CONNECTION_ID=zvjqbkKtow3Zi2v0rcaOSw==)
    at NTTCP.checkErr (C:\Users\Andrzej\source\repos\ChaosEngine\serverless-scaleway-apollo-typescript\node_modules\.pnpm\[email protected]\node_modules
\oracledb\lib\thin\sqlnet\ntTcp.js:327:29)
    at NTTCP.receive (C:\Users\Andrzej\source\repos\ChaosEngine\serverless-scaleway-apollo-typescript\node_modules\.pnpm\[email protected]\node_modules\
oracledb\lib\thin\sqlnet\ntTcp.js:463:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async NetworkSession._recvPacket (C:\Users\Andrzej\source\repos\ChaosEngine\serverless-scaleway-apollo-typescript\node_modules\.pnpm\oracledb@
6.5.0\node_modules\oracledb\lib\thin\sqlnet\networkSession.js:390:22)
    at async NetworkSession.recvPacket (C:\Users\Andrzej\source\repos\ChaosEngine\serverless-scaleway-apollo-typescript\node_modules\.pnpm\oracledb@6
.5.0\node_modules\oracledb\lib\thin\sqlnet\networkSession.js:455:12)
    at async ReadPacket.waitForPackets (C:\Users\Andrzej\source\repos\ChaosEngine\serverless-scaleway-apollo-typescript\node_modules\.pnpm\oracledb@6
.5.0\node_modules\oracledb\lib\thin\protocol\packet.js:324:18)
    at async Protocol._decodeMessage (C:\Users\Andrzej\source\repos\ChaosEngine\serverless-scaleway-apollo-typescript\node_modules\.pnpm\[email protected]
.0\node_modules\oracledb\lib\thin\protocol\protocol.js:70:5)
    at async Protocol._processMessage (C:\Users\Andrzej\source\repos\ChaosEngine\serverless-scaleway-apollo-typescript\node_modules\.pnpm\oracledb@6.
5.0\node_modules\oracledb\lib\thin\protocol\protocol.js:153:9)
    at async ThinConnectionImpl.connect (C:\Users\Andrzej\source\repos\ChaosEngine\serverless-scaleway-apollo-typescript\node_modules\.pnpm\oracledb@
6.5.0\node_modules\oracledb\lib\thin\connection.js:696:9)
    at async ThinPoolImpl.bgThreadFunc (C:\Users\Andrzej\source\repos\ChaosEngine\serverless-scaleway-apollo-typescript\node_modules\.pnpm\oracledb@6
.5.0\node_modules\oracledb\lib\thin\pool.js:437:11) {
  code: 'NJS-500'
}
  1. Include a runnable Node.js script that shows the problem.

Repro using https://github.com/ChaosEngine/serverless-scaleway-apollo-typescript.git project on oracle branch
and ADB with mTLS wallet with some password:

git clone --branch=oracle https://github.com/ChaosEngine/serverless-scaleway-apollo-typescript.git
cd serverless-scaleway-apollo-typescript/
mkdir -p credentials/wallet

#execute content of db.sql on ADB database, user adb_test_user  is created with some password and schema

cat << EOF > credentials/oracle-creds.env
NODE_ORACLEDB_USER=adb_test_user
NODE_ORACLEDB_PASSWORD=adb_Password443^2
NODE_ORACLEDB_CONNECTIONSTRING=dataplayground2_medium
NODE_ORACLEDB_WALLET_PASSWORD=123456WalPAs!s
EOF


#obtain wallet.zip with password (if needed) and unzip it under credentials/wallet/
unzip -d credentials/wallet/ wallet.zip
docker build -t oracledb-test .
docker run -it --rm -p 8081:8081 --env-file credentials/oracle-creds.env oracledb-test

Verification - open browser to http://localhost:8081/ and execute following graphql

	query ExampleQuery {
	  dogs {
		id
		name
	  }
	  owners {
		firstname
		lastname
	  }
	}

This should work returning some results

Now breaking it by updating to newest oracldb-6.6.0 (or >oracldb-6.4.0) version

sed  -i 's/"oracledb": "6.4.0"/"oracledb": "6.6.0"/' package.json

#building and running the same
docker build -t oracledb-test .
docker run -it --rm -p 8081:8081 --env-file credentials/oracle-creds.env oracledb-test

Now it does not work giving Error: NJS-500: connection to the Oracle Database was broken

Solution:
As suggested here patching solves the issue with oracledb-6.6.0

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions