Repository navigation
fix(plugin-oracle): connect when the password is about to expire - #3407
Merged
Merged
Conversation
An Oracle login whose password is in its grace period hung for 30 seconds: the server sends ORA-28002 (ORA-28098 on 26ai) as a warning message, and oracle-nio read it with the wrong field widths and waited for bytes that never came. Repin oracle-nio to TableProApp/oracle-nio#15, which decodes it and exposes the warning a login raised. The warning reaches the user through a new PluginKit requirement, connectionWarning (kit 38, default nil), which the adapter reads when a connect is adopted. The connection window shows it in a dismissible banner and Test Connection shows it next to its buttons. A login that finishes after its connect was canceled now closes its session instead of leaving it open on the server.
…erver Closing logs off and waits for the server's answer, so a server that stops answering after a canceled login held up the canceled connect, and a redial holding the query gate. The close now runs on its own, like the other closes.
This was referenced Oct 13, 2026
Signed-off-by: Dat Ngo Quoc <datlechin@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
An Oracle user whose password is about to expire could not connect: Test Connection and Connect failed after 30 seconds with a timeout. Oracle sends ORA-28002 (ORA-28098 on 26ai) as a warning message before the login reply. oracle-nio read that message with the wrong field widths, decided the packet was incomplete, and waited for bytes the server never sends.
Change
connectionWarning(kit 38, defaultnil), carries it from the driver.Verified
Against Oracle 23.26 Free with a user in its grace period: the old pin times out in the authentication phase, this branch connects in 54 ms and reports ORA-28098 (
scripts/probes/check-oracle-login-warning.sh). No UI test: the Oracle plugin is registry-only and a test build cannot load it; the shots are a Debug build with the plugin side-loaded.Screenshots
Not in this PR
Fixes #3401