Skip to content

Commit ed89b7c

Browse files
committed
Release v0.2.0: complete platform hardening, autoscale/keep-alive robustness, logging overhaul, and drop-in compatibility fixes
1 parent 0fd495d commit ed89b7c

28 files changed

+1905
-214
lines changed

.env.example

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ URT_PORT=80
2222
# Fallback: OPR_EXECUTOR_SECRET
2323
URT_SECRET=your-secret-key-here
2424

25+
# Enable Prometheus metrics endpoint at /metrics
26+
# Values: true/false, 1/0, yes/no, on/off, enabled/disabled
27+
# Default: false
28+
# Fallback: OPR_EXECUTOR_METRICS
29+
URT_METRICS=false
30+
2531
# =============================================================================
2632
# RESOURCE OVERRIDES
2733
# =============================================================================
@@ -64,13 +70,36 @@ URT_INACTIVE_THRESHOLD=60
6470
# Fallback: OPR_EXECUTOR_MAINTENANCE_INTERVAL
6571
URT_MAINTENANCE_INTERVAL=3600
6672

73+
# Autoscale mode (recommended for multi-replica deployments)
74+
# Enables adaptive concurrency guards to smooth burst traffic.
75+
# Fallback: OPR_EXECUTOR_AUTOSCALE
76+
URT_AUTOSCALE=false
77+
78+
# Optional hard limit for concurrent executions when autoscale is enabled.
79+
# Set to 0 or leave empty for adaptive default.
80+
# Fallback: OPR_EXECUTOR_MAX_CONCURRENT_EXECUTIONS
81+
URT_MAX_CONCURRENT_EXECUTIONS=
82+
83+
# Optional hard limit for concurrent runtime creations when autoscale is enabled.
84+
# Set to 0 or leave empty for adaptive default.
85+
# Fallback: OPR_EXECUTOR_MAX_CONCURRENT_RUNTIME_CREATES
86+
URT_MAX_CONCURRENT_RUNTIME_CREATES=
87+
88+
# Max milliseconds to wait for an execution queue slot before fast-failing.
89+
# Fallback: OPR_EXECUTOR_EXECUTION_QUEUE_WAIT_MS
90+
URT_EXECUTION_QUEUE_WAIT_MS=2000
91+
92+
# Max milliseconds to wait for a runtime-create queue slot before fast-failing.
93+
# Fallback: OPR_EXECUTOR_RUNTIME_CREATE_QUEUE_WAIT_MS
94+
URT_RUNTIME_CREATE_QUEUE_WAIT_MS=5000
95+
6796
# =============================================================================
6897
# DOCKER CONFIGURATION
6998
# =============================================================================
7099

71100
# Docker network name(s) for runtime containers (comma-separated)
72101
# Fallback: OPR_EXECUTOR_NETWORK
73-
URT_NETWORK=executor_runtimes
102+
URT_NETWORK=openruntimes-runtimes
74103

75104
# Enable/disable auto-pulling images on startup
76105
# Set to "disabled" to skip image pulls
@@ -79,7 +108,7 @@ URT_IMAGE_PULL=enabled
79108

80109
# Comma-separated list of allowed runtime images
81110
# Leave empty to allow all images
82-
# Fallback: OPR_EXECUTOR_RUNTIMES
111+
# Fallbacks: OPR_EXECUTOR_RUNTIMES, OPR_EXECUTOR_IMAGES
83112
URT_RUNTIMES=
84113

85114
# Supported runtime versions (comma-separated)
@@ -120,3 +149,7 @@ URT_RETRY_DELAY_MS=500
120149

121150
# Log level: trace, debug, info, warn, error
122151
RUST_LOG=info
152+
153+
# Optional: clean local storage cache on shutdown.
154+
# Default false preserves warm-cache artifacts between restarts.
155+
URT_CACHE_CLEANUP_ON_SHUTDOWN=false

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,27 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [Unreleased]
6+
7+
## [0.2.0] - 2026-02-25
8+
9+
### Changed
10+
- **Autoscale controls**: Added `URT_AUTOSCALE`, `URT_MAX_CONCURRENT_EXECUTIONS`, and `URT_MAX_CONCURRENT_RUNTIME_CREATES` to enable adaptive runtime/execution concurrency limiting without API schema changes.
11+
- **Load shedding and queue control**: Added bounded queue wait controls via `URT_EXECUTION_QUEUE_WAIT_MS` and `URT_RUNTIME_CREATE_QUEUE_WAIT_MS`, returning fast overload responses (`429`/`503`) under sustained saturation.
12+
- **Transient retry hardening**: Added jittered exponential backoff with transient/non-transient error classification for runtime source downloads, runtime container creation, build artifact uploads, and runtime execution protocol calls.
13+
- **Metrics expansion**: `/metrics` now exports persistent counters/histograms for queue wait/depth, execution/runtime-create latency, retries, keep-alive transfer and cleanup outcomes, active executions, and error classes.
14+
- **Keep-alive replacement serialization**: Added per-`keepAliveId` async locking to serialize ownership transfer, replacement cleanup, deletion, and maintenance reconciliation paths.
15+
- **Keep-alive generation labels**: New runtime containers include `urt.keep_alive_generation` and cleanup uses owner/generation guards to avoid removing the active replacement.
16+
- **Prometheus exporter support**: Added optional `/metrics` endpoint for Prometheus/Grafana, toggled by `URT_METRICS` (with `OPR_EXECUTOR_METRICS` fallback), and protected by bearer auth when `URT_SECRET` is configured.
17+
- **Request log correlation**: Added structured request logging with propagated/generated `x-request-id` response headers.
18+
- **Startup/warmup noise reduction**: Runtime/network allowlists are deduplicated and startup network attach now skips unresolved executor container names instead of emitting repeated missing-container warnings.
19+
- **Cache lifecycle behavior**: Added `URT_CACHE_CLEANUP_ON_SHUTDOWN` (default `false`) so warm cache can persist across restarts for lower cold-start latency.
20+
- **Drop-in startup compatibility**: `URT_NETWORK` now defaults to `openruntimes-runtimes` and runtime warmup/allowlist accepts legacy `OPR_EXECUTOR_IMAGES` when `*_RUNTIMES` is not set.
21+
- **Drop-in server compatibility**: `/v1/health` now returns plain-text `OK` (reference behavior), while enhanced JSON stats moved to `/v1/health/stats`.
22+
- **API response parity**: Runtime delete now responds `200 OK` (instead of `204`) to match executor-main semantics.
23+
- **Response header parity**: All responses now include `Server: Executor`, matching executor-main startup request handling.
24+
- **Storage startup compatibility**: When `*_STORAGE_DEVICE` is unset, executor now honors `URT_CONNECTION_STORAGE` / `OPR_EXECUTOR_CONNECTION_STORAGE` DSN during storage initialization.
25+
526
## [0.1.5] - 2026-02-25
627

728
### Fixed

Cargo.lock

Lines changed: 83 additions & 27 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ members = [
66
]
77

88
[workspace.package]
9-
version = "0.1.5"
9+
version = "0.2.0"
1010
edition = "2021"
1111
authors = ["Unified Runtimes Contributors"]
1212
license = "MIT"

0 commit comments

Comments
 (0)