[JDBC] Honor DriverManager login timeout
- 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