apache / apache/arrow-java

[JDBC] Honor DriverManager login timeout

Offen
#1,268 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
94
Forks
152
Ø Merge
3 T. 16 Std.
Gemergte PRs (30 T.)
11

Beschreibung

### Describe the enhancement requested

`ArrowFlightJdbcDriver.connect()` does not currently honor the timeout configured through `DriverManager.setLoginTimeout(int)`.

Implement support for the `DriverManager` login timeout:

- Read the value exposed by `DriverManager.getLoginTimeout()` when establishing a connection selected by `DriverManager`.
- Preserve the JDBC semantics of zero: do not impose a login timeout.
- Apply a nonzero timeout to the overall connection attempt, not only the underlying Netty socket connection.
- If the timeout expires, attempt to cancel the connection attempt and throw `SQLTimeoutException`.
- Clean up any allocator, channel, or partially constructed client when the attempt is cancelled or times out.
- Add tests that set and restore the global `DriverManager` timeout and verify timeout enforcement, exception type, and resource cleanup.

This is distinct from #494/#495. The existing `connectTimeoutMs` property configures Netty socket connection attempts and does not consume the timeout configured through `DriverManager`.

Context: #1027 and [the follow-up discussion](https://github.com/apache/arrow-java/pull/1027#issuecomment-5447203124).

Related DataSource work: https://github.com/apache/arrow-java/issues/1267

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Der Einstiegspunkt ist ArrowFlightJdbcDriver.connect(); lies zunächst dessen aktuellen Verbindungspfad und die bestehende Behandlung von connectTimeoutMs. Füge Tests hinzu, die das globale Timeout von DriverManager setzen und wiederherstellen, das Verhalten bei einem Timeout von null und einem von null verschiedenen Timeout sowie SQLTimeoutException prüfen und die Bereinigung von allocator, channel und client abdecken, wenn der gesamte Versuch abgebrochen wird oder eine Zeitüberschreitung auftritt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
backend, database
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Aktiv
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
55/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.