Skip to content

Commit 49bfcf1

Browse files
committed
Fix http timeout
1 parent f2d5a76 commit 49bfcf1

File tree

5 files changed

+15
-12
lines changed

5 files changed

+15
-12
lines changed

golem-worker-executor-base/src/durable_host/http/types.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use http::{HeaderName, HeaderValue};
66

77
use std::collections::HashMap;
88
use std::str::FromStr;
9+
use tracing::info;
910

1011
use wasmtime::component::Resource;
1112
use wasmtime_wasi::preview2::subscribe;
@@ -251,6 +252,7 @@ impl<Ctx: WorkerCtx> HostRequestOptions for DurableWorkerCtx<Ctx> {
251252
ms: Option<Duration>,
252253
) -> anyhow::Result<Result<(), ()>> {
253254
record_host_function_call("http::types::request_options", "set_connect_timeout_ms");
255+
info!("set_connect_timeout {ms:?}");
254256
HostRequestOptions::set_connect_timeout(&mut self.as_wasi_http_view(), self_, ms)
255257
}
256258

golem-worker-executor-base/tests/wasi.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,7 @@ async fn http_client() {
349349
let template_id = executor.store_template(Path::new("../test-templates/http-client.wasm"));
350350
let mut env = HashMap::new();
351351
env.insert("PORT".to_string(), host_http_port.to_string());
352+
env.insert("RUST_BACKTRACE".to_string(), "full".to_string());
352353

353354
let worker_id = executor
354355
.try_start_worker_versioned(&template_id, 0, "http-client-1", vec![], env)

test-templates/http-client.wasm

12 Bytes
Binary file not shown.

test-templates/http-client/src/lib.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ fn send_request() -> types::FutureIncomingResponse {
8282
types::OutgoingBody::finish(request_body, None).unwrap();
8383

8484
let options = types::RequestOptions::new();
85-
options.set_connect_timeout(Some(10000)).unwrap();
86-
options.set_first_byte_timeout(Some(10000)).unwrap();
87-
options.set_between_bytes_timeout(Some(10000)).unwrap();
85+
options.set_connect_timeout(Some(5000000000)).unwrap(); // 5s
86+
options.set_first_byte_timeout(Some(5000000000)).unwrap(); // 5s
87+
options.set_between_bytes_timeout(Some(5000000000)).unwrap(); // 5s
8888

8989
let future_incoming_response = outgoing_handler::handle(request, Some(options)).unwrap();
9090

@@ -136,9 +136,9 @@ fn send_restart_request() {
136136
types::OutgoingBody::finish(request_body, None).unwrap();
137137

138138
let options = types::RequestOptions::new();
139-
options.set_connect_timeout(Some(10000)).unwrap();
140-
options.set_first_byte_timeout(Some(10000)).unwrap();
141-
options.set_between_bytes_timeout(Some(10000)).unwrap();
139+
options.set_connect_timeout(Some(5000000000)).unwrap(); // 5s
140+
options.set_first_byte_timeout(Some(5000000000)).unwrap(); // 5s
141+
options.set_between_bytes_timeout(Some(5000000000)).unwrap(); // 5s
142142

143143
let future_incoming_response = outgoing_handler::handle(request, Some(options)).unwrap();
144144
let _ = get_incoming_response(&future_incoming_response);

test-templates/tinygo-wasi-http/roundtrip/roundtrip.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,13 @@ func (t WasiHttpTransport) RoundTrip(request *http.Request) (*http.Response, err
123123
}
124124

125125
// TODO: timeouts
126-
connectTimeoutMs := go_wasi_http.None[uint64]()
127-
firstByteTimeoutMs := go_wasi_http.None[uint64]()
128-
betweenBytesTimeoutMs := go_wasi_http.None[uint64]()
126+
connectTimeoutNanos := go_wasi_http.None[uint64]()
127+
firstByteTimeoutNanos := go_wasi_http.None[uint64]()
128+
betweenBytesTimeoutNanos := go_wasi_http.None[uint64]()
129129
options := go_wasi_http.NewRequestOptions()
130-
options.SetConnectTimeout(connectTimeoutMs)
131-
options.SetFirstByteTimeout(firstByteTimeoutMs)
132-
options.SetBetweenBytesTimeout(betweenBytesTimeoutMs)
130+
options.SetConnectTimeout(connectTimeoutNanos)
131+
options.SetFirstByteTimeout(firstByteTimeoutNanos)
132+
options.SetBetweenBytesTimeout(betweenBytesTimeoutNanos)
133133

134134
futureResult := go_wasi_http.WasiHttp0_2_0_OutgoingHandlerHandle(requestHandle, go_wasi_http.Some(options))
135135
if futureResult.IsErr() {

0 commit comments

Comments
 (0)