Skip to content

Unexpected message type error connecting to Oracle 12c DB in thin mode #1589

@GeorgeDewar

Description

@GeorgeDewar
  1. What versions are you using?

I am using Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production.

process.platform: darwin
process.version: v16.20.0
process.arch: x64
require('oracledb').versionString: 6.0.3
require('oracledb').oracleClientVersionString: NJS-089: getting the Oracle Client version is not supported by node-oracledb in Thin mode

  1. Is it an error or a hang or a crash?

It's an error.

  1. What error(s) or behavior you are seeing?
$ node oracle_error.js

/Users/myname/code/appname/node_modules/oracledb/lib/errors.js:592
  throw (getErr(...arguments));
         ^

Error: NJS-103: unexpected message type 0 received at position 450 of packet 12
    at Object.throwErr (/Users/myname/code/appname/node_modules/oracledb/lib/errors.js:592:10)
    at AuthMessage.processMessage (/Users/myname/code/appname/node_modules/oracledb/lib/thin/protocol/messages/base.js:222:14)
    at AuthMessage.process (/Users/myname/code/appname/node_modules/oracledb/lib/thin/protocol/messages/base.js:200:12)
    at AuthMessage.decode (/Users/myname/code/appname/node_modules/oracledb/lib/thin/protocol/messages/base.js:190:10)
    at Protocol._decodeMessage (/Users/myname/code/appname/node_modules/oracledb/lib/thin/protocol/protocol.js:80:17)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Protocol._processMessage (/Users/myname/code/appname/node_modules/oracledb/lib/thin/protocol/protocol.js:155:9)
    at async ThinConnectionImpl.connect (/Users/myname/code/appname/node_modules/oracledb/lib/thin/connection.js:546:7)
    at async Object.getConnection (/Users/myname/code/appname/node_modules/oracledb/lib/oracledb.js:628:3)
    at async runApp (/Users/myname/code/appname/oracle_error.js:11:5) {
  code: 'NJS-103'
}
  1. Include a runnable Node.js script that shows the problem.

oracle_error.js:

const oracledb = require('oracledb');

async function runApp() {
    let dbConfig = {
        user: '<redacted>',
        password: '<redacted>',
        connectString: '<redacted>:44901/<redacted>',
    };

    // Get a standalone Oracle Database connection
    await oracledb.getConnection(dbConfig);
    console.log('Connection was successful!');
}

runApp();

I did a little bit of debugging by adding console.log statements to node-oracledb locally, with the following results:

message.decode(this.readBuf); // pkt: 8, pos: 10
message.decode(this.readBuf); // pkt: 10, pos: 10
base.js decode, pos: 10, packet 10
base.js process, pos: 10, packet 10
hasMoreData? bytes left: 0, flushOutBinds: false
message.decode(this.readBuf); // pkt: 12, pos: 10
base.js decode, pos: 10, packet 12
base.js process, pos: 10, packet 12
Message type 8, pos: 11, packet 12
hasMoreData? bytes left: 180, flushOutBinds: false
Message type 23, pos: 304, packet 12
hasMoreData? bytes left: 34, flushOutBinds: false
Message type 0, pos: 450, packet 12

I have a packet trace and can provide details if needed, but won't share the whole thing here in case I inadvertently reveal something sensitive. Here's a screenshot though that shows Wireshark's interpretation of the packet in question, decoded as TNS:

image

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