Skip to content

[JDBC] Honor DriverManager login timeout #1268

Description

@ennuite

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.

Related DataSource work: #1267

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions