apache / apache/arrow-java

[JDBC] Implement DataSource login timeout

Open
#1,267 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

`ArrowFlightJdbcDataSource.setLoginTimeout(int)` currently throws `SQLFeatureNotSupportedException`, and `getLoginTimeout()` always returns `0`.

Implement the JDBC `DataSource` login-timeout contract:

- Store and return the timeout configured for each `ArrowFlightJdbcDataSource` instance.
- Apply a nonzero timeout to connection establishment through `DataSource.getConnection()`.
- Preserve the JDBC semantics of zero: use the default system timeout if one exists; otherwise, do not impose a timeout.
- 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 for the default value, setter/getter behavior, timeout enforcement, exception type, and resource cleanup.

This is distinct from #494/#495. The existing `connectTimeoutMs` property configures Netty socket connection attempts; the JDBC login timeout applies to the overall database connection attempt exposed by `DataSource.getConnection()`.

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

Related DriverManager work: https://github.com/apache/arrow-java/issues/1268

Contributor guide

Open the contributing guide

Research direction

Start with ArrowFlightJdbcDataSource.setLoginTimeout(int), getLoginTimeout(), and the DataSource.getConnection() path; compare them with the existing connectTimeoutMs behavior. Add coverage for the default, setter/getter, timeout enforcement, SQLTimeoutException, and cleanup of partially created resources. Done means zero preserves default behavior and nonzero login timeouts cancel failed attempts without leaks.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.