apache / apache/arrow-java

[JDBC] Honor DriverManager login timeout

Open
#1,268 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
94
Forks
152
Avg merge
3d 16h
Merged PRs (30d)
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

Contributor guide

Open the contributing guide

Research direction

The entry point is ArrowFlightJdbcDriver.connect(); first read its current connection path and the existing connectTimeoutMs handling. Add coverage that sets and restores DriverManager's global timeout, checks zero and nonzero timeout behavior, SQLTimeoutException, and allocator, channel, and client cleanup when the overall attempt is cancelled or times out.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend, database
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.