What's new in v0.2.0
Released 2026-09-17. Full changelog.
Iceberg table maintenance
Background compaction, snapshot expiry, and orphan file cleanup for Iceberg
tables — the issue #96
feature. Enabled per-table via sink.maintenance in the pipeline spec:
sink:
maintenance:
enabled: true
compaction:
interval: 5m
targetFileSize: 512Mi
minInputFiles: 5
snapshotExpiry:
interval: 10m
retainLast: 1
maxAge: 168h
orphanCleanup:
interval: 1h
olderThan: 72h
Each sub-block is independently optional. Maintenance runs in its own ephemeral worker Pod (distributed mode) or in-process (single-process mode) — never in the coordinator itself.
See Sinks: Table maintenance for the full reference, including safety windows and conflict handling.
Key details:
- Compaction uses
iceberg-go's bin-pack planner to merge small files intotargetFileSize-sized outputs. - Snapshot expiry's
maxAgeis a safety window, not just retention — it must cover your longest tolerable downtime. - Orphan cleanup removes files no longer referenced by any snapshot, after
a configurable
olderThandelay. - Each operation has its own Prometheus metrics (see Monitoring).
Coordinator dashboard
An embedded monitoring UI served from the coordinator's HTTP server — issue #97. No CDN, no external dependencies: Alpine.js + Chart.js compiled into the binary.
urutau run -f pipeline.yaml --metrics-addr :9090
# Open http://localhost:9090
Views:
- Overview — pipeline status, worker count, uptime
- Streams — per-table position, lag, throughput charts, commit latency, maintenance stats
- Workers — phase, epoch, assigned tables, last ack, inflight bytes
- Events — color-coded operational log with filters
- Logs — coordinator structured log tail with level filter
Actions: Cancel pipeline, restart worker (with confirmation dialogs).
Real-time updates via Server-Sent Events — no polling.
See Dashboard for the full guide and Dashboard API for the REST/SSE reference.
Worker metrics reporting
Workers now report their per-table metrics (rows written, commit latency, equality deletes, snapshot progress) back to the coordinator over gRPC. The coordinator aggregates them for the dashboard and Prometheus endpoints.
This is transparent — no spec changes needed. Worker Prometheus endpoints
(--metrics-addr on the worker) continue to work independently.
Commit mode validation
sink.commitMode is now rejected on non-Couchbase sinks at validation
time (#99). Previously,
setting commitMode: atomic on an Iceberg or ClickHouse sink was silently
ignored, which could mislead operators into thinking they had stronger
atomicity guarantees than the sink provides.
Bug fixes
- Maintenance worker lifecycle — maintenance workers now run as
ephemeral Pods (
restartPolicy: Never) instead of Deployments, and idle workers are dismissed after their pass completes. - Worker metrics in Kubernetes — metrics reporting was disabled by default in Kubernetes; now enabled and scoped via RBAC.
- Dashboard polish — SSE stream keep-alive, chart window selector, light theme button visibility, copy-to-clipboard, and drawer lag chart all fixed post-launch.