java/sandbox/v1.0.18
pq-yang/MatAnyone2java/sandbox/v1.0.18Aug 6, 2026by ninan-nn
AI Summary
Enhances Kotlin SDK resilience with automatic retries and rolling pool warmups, while improving pool shutdown lifecycle management to prevent resource leaks.
Key Highlights
- Automatic retries enabled by default for non-streaming clients
- Resilient Kotlin transport with configurable retry policies
- Rolling pool warmups to prevent slow creation from stalling refills
Breaking Changes
- Automatic retries are enabled by default; applications requiring previous behavior must configure `.retryPolicy(RetryPolicy.disabled())`
New Features
- Resilient Kotlin transport with bounded exponential backoff
- Rolling pool warmups with immediate capacity reuse
- Safer pool shutdown and restart lifecycle
- Graceful shutdown drains admitted warmups before termination
Full Release Notes
## What's New ### ⚠️ Behavior Changes - **Automatic retries are enabled by default** — Non-streaming Kotlin SDK clients now apply the SDK retry policy automatically. By default, idempotent methods retry `429`, `502`, and `503` responses, while `POST` and `PATCH` status-code retries remain opt-in; pre-send connection failures may still be retried. Applications that require the previous SDK-policy behavior should configure `.retryPolicy(RetryPolicy.disabled())`; this disables SDK-managed retries while retaining OkHttp's pre-existing connection recovery for non-streaming calls. Streaming command and code-execution requests never retry automatically. #1413 ### ✨ Features - **Resilient Kotlin transport** — Added configurable retry policies with bounded exponential backoff, jitter modes, `Retry-After` support, per-attempt timeouts, overall deadlines, and retry callbacks. The public exception hierarchy now distinguishes rate limits, timeouts, and connection failures while exposing retryability, request IDs, retry delays, and raw response bodies consistently across generated and handwritten API paths. #1413 - **Rolling pool warmups** — Sandbox pool replenishment now treats `warmupConcurrency` as a rolling in-flight limit and immediately reuses capacity when each warmup finishes, so one slow creation no longer stalls the rest of the refill wave. Distributed primary heartbeats, ownership fencing, cleanup, and backoff continue while warmups run; public APIs and configuration names remain unchanged. #1427 ### 🐛 Bug Fixes - **Safer pool shutdown and restart lifecycle** — Graceful shutdown now drains admitted warmups before forcing executor termination and reliably cleans up remotely created sandboxes when interruption occurs, closing a resource-leak window. Pool acquire and warmup paths also propagate cancellation correctly, fence work by lifecycle generation, and release resources and counters even for non-`Exception` failures, preventing retired work from leaking into a restarted pool. #1415 #1438 ### 📦 Misc - Published Kotlin/JVM sandbox, code-interpreter, Redis pool, and BOM artifacts at version `1.0.18` under the existing `com.alibaba.opensandbox` coordinates. #1415 ### 👥 Contributors - @Pangjiping - @ninan-nn