fix(plugin-oracle): Oracle connections no longer crash on a server error under network encryption (#483)#1625
Conversation
Signed-off-by: Ngô Quốc Đạt <datlechin@gmail.com>
There was a problem hiding this comment.
💡 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" |
There was a problem hiding this comment.
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 👍 / 👎.
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-mainSHA.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 / 00904and 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.