Skip to content

fix(plugin-oracle): Oracle connections no longer crash on a server error under network encryption (#483)#1625

Merged
datlechin merged 2 commits into
mainfrom
fix/483-oracle-nne-break
Jun 8, 2026
Merged

fix(plugin-oracle): Oracle connections no longer crash on a server error under network encryption (#483)#1625
datlechin merged 2 commits into
mainfrom
fix/483-oracle-nne-break

Conversation

@datlechin

Copy link
Copy Markdown
Member

Closes #483

Problem

After the native network encryption work shipped (plugin v1.2.10), Oracle connections using encryption crashed whenever a query hit a server error such as a missing table or a permission error. Reported in #483 with a crash in OracleBackendMessageDecoder.decode.

The cause is in the oracle-nio driver: a server error delivered via an in-band break left the crypto-checksum keystream out of sync, so the error packet failed its integrity check, and the connection then crashed instead of surfacing the error. Full root cause and fix are in TableProApp/oracle-nio#4.

Change

Bumps the oracle-nio pin to the fix and adds the changelog entry. No PluginKit ABI change.

Depends on

TableProApp/oracle-nio#4 (the driver fix). The pin points at that branch commit; once #4 merges via a merge commit it stays reachable, or re-point the pin to the resulting tablepro-main SHA.

After merge

Re-release the Oracle plugin (registry-only) so installed users pick up the fix.

Verification

Against Oracle 23ai with encryption and checksum required: error queries now surface the real ORA-00942 / 00936 / 01476 / 00904 and the connection keeps working; 110k-row queries run before and after errors; 0 crashes. 173 driver unit tests pass, including new coverage for the keystream reset and the no-crash error path.

@datlechin datlechin merged commit 5c71172 into main Jun 8, 2026
4 checks passed
@datlechin datlechin deleted the fix/483-oracle-nne-break branch June 8, 2026 10:37

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1ef4b23d91

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"location" : "https://github.com/TableProApp/oracle-nio",
"state" : {
"revision" : "04a4e5967bf4d96cadf66081ea5a22133fe403ea"
"revision" : "18a4872b16f6fb6919833f7897e75b0ea4d19428"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Fix coalesced marker/data handling before pinning

This pinned oracle-nio revision still performs the reset too late for a common packetization case: in the dependency, OracleBackendMessageDecoder.decodeMessage drains complete packets and decrypts .data packets before the OracleChannelHandler can process the .marker and run .resetNetworkSecurity. When TCP coalesces the second reset marker and the following encrypted ORA error packet into one read, that error packet is decoded with the old checksum keystream, so native-encryption connections can still fail instead of surfacing the ORA error. Please pin a driver revision that stops after the reset marker or resets before decoding the next packet.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Oracle connection fails with uncleanShutdown on non-TLS server

1 participant