[JDBC] Implement DataSource login timeout
- Ngôn ngữ chính
- Java
- Star
- 94
- Fork
- 152
- Merge trung bình
- 3 ngày 16 giờ
- Pull request đã merge (30 ngày)
- 11
Mô tả
### 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
Hướng dẫn đóng góp
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- java
- Lĩnh vực
- databases
- Loại issue
- Tính năng
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Sôi nổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 66/100