apache / apache/arrow-java

[JDBC] Honor DriverManager login timeout

Ouverte
#1,268 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Java
Étoiles
94
Forks
152
Merge moyen
3 j 16 h
PR mergées (30 j)
11

Description

### 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

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Le point d’entrée est ArrowFlightJdbcDriver.connect(); commencez par lire son chemin de connexion actuel et la gestion existante de connectTimeoutMs. Ajoutez des tests qui définissent et restaurent le délai d’attente global de DriverManager, vérifient le comportement avec un délai nul et un délai non nul, SQLTimeoutException, ainsi que le nettoyage de allocator, channel et client lorsque la tentative globale est annulée ou expire.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
backend, database
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
55/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.