mirror of
https://github.com/lancedb/lancedb.git
synced 2026-01-07 12:22:59 +00:00
feat: add overall timeout parameter to remote client (#2550)
## Summary - Adds an overall `timeout` parameter to `TimeoutConfig` that limits the total time for the entire request - Can be set via config or `LANCE_CLIENT_TIMEOUT` environment variable - Exposed in Python and Node.js bindings - Includes comprehensive tests ## Test plan - [x] Unit tests for Rust TimeoutConfig - [x] Integration tests for Python bindings - [x] Integration tests for Node.js bindings - [x] All existing tests pass 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -42,6 +42,28 @@ describe("remote connection", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("should accept overall timeout configuration", async () => {
|
||||
await connect("db://test", {
|
||||
apiKey: "fake",
|
||||
clientConfig: {
|
||||
timeoutConfig: { timeout: 30 },
|
||||
},
|
||||
});
|
||||
|
||||
// Test with all timeout parameters
|
||||
await connect("db://test", {
|
||||
apiKey: "fake",
|
||||
clientConfig: {
|
||||
timeoutConfig: {
|
||||
timeout: 60,
|
||||
connectTimeout: 10,
|
||||
readTimeout: 20,
|
||||
poolIdleTimeout: 300,
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("should pass down apiKey and userAgent", async () => {
|
||||
await withMockDatabase(
|
||||
(req, res) => {
|
||||
|
||||
@@ -9,6 +9,12 @@ use napi_derive::*;
|
||||
#[napi(object)]
|
||||
#[derive(Debug)]
|
||||
pub struct TimeoutConfig {
|
||||
/// The overall timeout for the entire request in seconds. This includes
|
||||
/// connection, send, and read time. If the entire request doesn't complete
|
||||
/// within this time, it will fail. Default is None (no overall timeout).
|
||||
/// This can also be set via the environment variable `LANCE_CLIENT_TIMEOUT`,
|
||||
/// as an integer number of seconds.
|
||||
pub timeout: Option<f64>,
|
||||
/// The timeout for establishing a connection in seconds. Default is 120
|
||||
/// seconds (2 minutes). This can also be set via the environment variable
|
||||
/// `LANCE_CLIENT_CONNECT_TIMEOUT`, as an integer number of seconds.
|
||||
@@ -75,6 +81,7 @@ pub struct ClientConfig {
|
||||
impl From<TimeoutConfig> for lancedb::remote::TimeoutConfig {
|
||||
fn from(config: TimeoutConfig) -> Self {
|
||||
Self {
|
||||
timeout: config.timeout.map(std::time::Duration::from_secs_f64),
|
||||
connect_timeout: config
|
||||
.connect_timeout
|
||||
.map(std::time::Duration::from_secs_f64),
|
||||
|
||||
Reference in New Issue
Block a user