Skip to content

Commit f8b09f0

Browse files
fix(client): fully respect max retries
fix(client): send retry count header for max retries 0 chore(internal): depend on packages directly in example
1 parent 77009b1 commit f8b09f0

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

stagehand-java-client-okhttp/src/main/kotlin/com/browserbase/api/client/okhttp/OkHttpClient.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,8 @@ private constructor(@JvmSynthetic internal val okHttpClient: okhttp3.OkHttpClien
234234
fun build(): OkHttpClient =
235235
OkHttpClient(
236236
okhttp3.OkHttpClient.Builder()
237+
// `RetryingHttpClient` handles retries if the user enabled them.
238+
.retryOnConnectionFailure(false)
237239
.connectTimeout(timeout.connect())
238240
.readTimeout(timeout.read())
239241
.writeTimeout(timeout.write())

stagehand-java-core/src/main/kotlin/com/browserbase/api/core/http/RetryingHttpClient.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@ private constructor(
3131
) : HttpClient {
3232

3333
override fun execute(request: HttpRequest, requestOptions: RequestOptions): HttpResponse {
34-
if (!isRetryable(request) || maxRetries <= 0) {
35-
return httpClient.execute(request, requestOptions)
36-
}
37-
3834
var modifiedRequest = maybeAddIdempotencyHeader(request)
3935

4036
// Don't send the current retry count in the headers if the caller set their own value.
@@ -48,6 +44,10 @@ private constructor(
4844
modifiedRequest = setRetryCountHeader(modifiedRequest, retries)
4945
}
5046

47+
if (!isRetryable(modifiedRequest)) {
48+
return httpClient.execute(modifiedRequest, requestOptions)
49+
}
50+
5151
val response =
5252
try {
5353
val response = httpClient.execute(modifiedRequest, requestOptions)
@@ -75,10 +75,6 @@ private constructor(
7575
request: HttpRequest,
7676
requestOptions: RequestOptions,
7777
): CompletableFuture<HttpResponse> {
78-
if (!isRetryable(request) || maxRetries <= 0) {
79-
return httpClient.executeAsync(request, requestOptions)
80-
}
81-
8278
val modifiedRequest = maybeAddIdempotencyHeader(request)
8379

8480
// Don't send the current retry count in the headers if the caller set their own value.
@@ -94,8 +90,12 @@ private constructor(
9490
val requestWithRetryCount =
9591
if (shouldSendRetryCount) setRetryCountHeader(request, retries) else request
9692

97-
return httpClient
98-
.executeAsync(requestWithRetryCount, requestOptions)
93+
val responseFuture = httpClient.executeAsync(requestWithRetryCount, requestOptions)
94+
if (!isRetryable(requestWithRetryCount)) {
95+
return responseFuture
96+
}
97+
98+
return responseFuture
9999
.handleAsync(
100100
fun(
101101
response: HttpResponse?,

0 commit comments

Comments
 (0)