java/sandbox/v1.0.17

opensandbox-group/OpenSandboxjava/sandbox/v1.0.17Jul 24, 2026by ninan-nn

AI Summary

The Java/Kotlin SDKs feature retrying pool acquire policies and runtime isolation fixes for serialization conflicts and UID/GID handling.

Key Highlights

  • Retrying pool acquire policies to skip stale idle candidates
  • Serialization runtime isolation for kotlinx.serialization
  • Attach to isolated sessions for stateless workers

New Features

  • Retrying pool acquire policies
  • Sandbox create metrics
  • Client IP header detection
  • Attach to isolated sessions
  • UID mode availability probing
  • Exact snapshot name filtering
  • Serialization runtime isolation
  • Isolated UID/GID range fix

Full Release Notes

## What's New

### ✨ Features

- **Retrying pool acquire policies** — Kotlin/Java sandbox pools now support `RETRY_NEXT_IDLE` and `RETRY_NEXT_IDLE_THEN_CREATE`, allowing acquire to skip stale idle candidates before failing or falling back to direct create. Existing policies keep their current behavior; `maxAcquireRetries` defaults to 3. #1347
- **Sandbox create metrics** — `Sandbox.create` now reports fire-and-forget `sandbox.create` latency events to the lifecycle server. Reporting never blocks callers and can be disabled with `OPENSANDBOX_DISABLE_METRICS=1` or `disableMetrics`. #1341
- **Client IP header** — the SDK now best-effort detects the host intranet IPv4 and sends it as `OPEN-SANDBOX-CLIENT-IP` through the OkHttp transport. User-provided headers are never overwritten. #1326
- **Attach to isolated sessions** — `isolation.attach(sessionId)` lets stateless workers rebuild a handle for an existing execd isolated session while that in-memory session is still alive. #1295
- **UID mode availability** — isolated session responses now expose per-mode `setpriv` / `userns` availability, and unavailable requested modes fail with `503 NOT_SUPPORTED`. #1320
- **Exact snapshot name filtering** — snapshot listing now supports an exact `name` filter. #1301

### 🐛 Bug Fixes

- **Serialization runtime isolation** — SDK artifacts now shade `kotlinx.serialization` into the OpenSandbox namespace and remove it from published POM/BOM dependencies, avoiding runtime ABI conflicts when applications force older serialization runtimes. #1344
- **Isolated UID/GID range fix** — isolated session UID/GID fields now use a wider integer type so values in the execd `uint32` range deserialize and serialize correctly above `Int32.MAX_VALUE`. #1298

### 📦 Misc

- Kotlin code-interpreter now lives under the sandbox Kotlin Gradle build while preserving the published `com.alibaba.opensandbox:code-interpreter` artifact. The sandbox BOM manages sandbox and code-interpreter artifacts together. #1293
- Bumped Kotlin/Java SDK package versions and default User-Agent strings for this release. #1384

### 👥 Contributors

- @FAUST-BENCHOU
- @Pangjiping
- @jianpingpei
- @ninan-nn
- @ruirui6946