RetryingHttpClient.executeAsync skips retry handling when delegate throws synchronously
Maintainer thường phản hồi trong vòng 1 ngày
@sylvesterkaczmarek đang làm issue này rồi.
Từ ngày 18/8/2026.
- #891 của @sylvesterkaczmarek — đang mở
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 78/100
Hướng nghiên cứu
Bắt đầu từ RetryingHttpClient.executeAsync() và kiểm tra đường dẫn retry hiện có của handleAsync xung quanh lệnh gọi delegate. Chạy các bài kiểm thử hiện tại liên quan đến retry, sau đó bổ sung coverage hồi quy cho các lỗi đồng bộ có thể retry và không thể retry, đồng thời xác minh rằng các header về số lần retry vẫn chính xác; công việc được hoàn tất khi các lỗi đồng bộ tuân theo cùng chính sách với các future bất thường.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Description
RetryingHttpClient.executeAsync() calls the delegate before it has a CompletableFuture to attach its retry policy to:
val responseFuture = httpClient.executeAsync(requestWithRetryCount, requestOptions)
A custom HttpClient implementation is allowed by the SDK surface and can throw synchronously from executeAsync() instead of returning an exceptionally completed future.
When that happens, the exception escapes RetryingHttpClient.executeAsync() immediately. The existing handleAsync branch never sees it, so even retryable synchronous failures such as IOException, OpenAIIoException, or OpenAIRetryableException bypass the configured retry policy.
Expected behavior
Synchronous failures from the async delegate should enter the same retry decision path as exceptionally completed futures. Retryable failures should retry up to maxRetries; non-retryable failures should surface through the returned future.
Suggested fix
Wrap the delegate call and convert a synchronous throwable into an exceptionally completed CompletableFuture<HttpResponse> before applying the existing retry handler.
Add regression coverage for:
- a synchronous
OpenAIRetryableExceptionfollowed by a successful async response; - a synchronous non-retryable exception completing the returned future exceptionally without a retry;
- retry-count headers remaining correct across the synchronous-failure retry.
- Ngôn ngữ chính
- Kotlin
- Star
- 1.5k
- Fork
- 266
- Merge trung bình
- 10 giờ 11 phút
- Pull request đã merge (30 ngày)
- 141
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của openai/openai-java
-
HttpRequest.url() logs spaces in path segments as literal plus signsCó thể đã có người làm @sylvesterkaczmarek đã nhận 55 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
openai/openai-java#886 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Make diarized transcription duration and task optionalCó thể đã có người làm @wskr00 đã nhận 86 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
openai/openai-java#802 · 2 bình luận · 3 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 3/5 Nửa ngày Mức phù hợp với người mới 42/100
openai/openai-java#1160 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
AsyncStreamResponse can hang when the subscriber executor rejects workCó thể đã có người làm @sylvesterkaczmarek đã nhận 39 ngày trước. Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 74/100
openai/openai-java#973 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
openai/openai-java#956 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của openai/openai-java
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 83/100
Kotlin/kotlin-lsp#288 ·
-
needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
chrisbanes/haze#1536 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Cassiopeia drops the `präsentiert von` credit printed in the event bodyCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởafk-ok area:data-quality importer size:S
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
enorm-labs/event-junkie#3166 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
rajpreetcodes/Skills_MCP_Server#25 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
com-lihaoyi/mill#7776 ·
Maintainer thường phản hồi trong vòng 1 ngày