Skip to content

Prepare 0.3.0: durable crash recovery, runtime fixes and release validation - #1

Merged
wangcch merged 31 commits into
mainfrom
dev
Sep 9, 2026
Merged

wangcch merged 31 commits into
mainfrom
dev

Conversation

@wangcch

@wangcch wangcch commented Sep 9, 2026

Copy link
Copy Markdown
Owner

This prepares 0.3.0 with durable-task recovery, runtime improvements and release tooling updates.

  • Add active durable-task crash recovery, execution fencing, admission and signal idempotency keys, and retained-result inspection and cleanup.
  • Fix HTTP deadlines and shutdown draining, byte preservation, URL handling and stream backpressure; extend Streams, encoding and Response APIs.
  • Cache durable export metadata and wake the local scheduler after signal commits.
  • Improve project initialization, type synchronization and structured diagnostics; synchronize English and Chinese documentation.
  • Align versions to 0.3.0 and maintain a changelog with automatic release-note validation and extraction.

Upgrade notes

  • Opening a store migrates durable log v1/v2 to v3. Stop all old writers and back up the complete store first; rollback requires the pre-upgrade snapshot.
  • Legacy orphan tasks without wakeup or execution records are not automatically recovered. External writes still require provider idempotency or reconciliation.
  • Application outboxes do not share a transaction with the runtime database; admission retries across deployments require the original bundle. Cleanup removes idempotency records, so retention must exceed the retry horizon.

Local Rust tests, live database tests, all 24 Release crash gates and packaging checks passed; the full release matrix is validated separately.


本次准备 0.3.0,完善持久任务恢复、运行时行为及发布流程。

  • 支持活跃持久任务崩溃恢复、执行租约隔离、准入与信号幂等键,以及完成结果查询和清理。
  • 修复 HTTP 截止时间与关闭排空、字节保真、URL 处理和流背压问题,扩展 Streams、编码及 Response API。
  • 缓存 durable 导出元数据,信号提交后唤醒本地调度器。
  • 改进项目初始化、类型同步和结构化诊断,同步中英文文档。
  • 统一版本为 0.3.0,维护 changelog,并自动校验、提取 Release 说明。

升级注意

  • Durable log v1/v2 在打开时迁移到 v3。升级前停止所有旧写入者并备份完整存储;回滚需要升级前快照。
  • 缺少唤醒及执行记录的旧孤儿任务不会自动恢复。外部写入仍需提供方幂等或结果核对。
  • 应用 outbox 不与运行时数据库共享事务;跨版本准入重试需使用原 bundle。清理会删除幂等记录,保留期应长于重试窗口。

本地 Rust 测试、真实数据库测试、24/24 Release 崩溃门禁及打包检查通过;完整发布矩阵另行验证。

Use byte-preserving request and response bodies, account HTTP chunks in the QuickJS heap, and normalize response chunk views with independent snapshots.

Avoid intermediate UTF-8 string copies and add memory-limit, binary roundtrip, chunk lifecycle, and throughput coverage.
Add checked streaming response completion, bounded writes and disconnect cleanup. Preserve body consumption state, live Headers iteration, incremental decoding and abort dependency cleanup, with regression tests and an opt-in profile harness.
Keep empty path segments and normalize default ports across URL mutations. Decode malformed form queries with replacement semantics and scalar normalization; cover the behavior with differential fixtures, QuickJS and Hono regressions.
Update English and reviewed Chinese references for Streams, body lifecycle, Headers, encoding, abort composition and URL semantics. Keep durable compatibility and benchmark instructions without committing iteration reports or local measurement artifacts.
Propagate deadlines and cancellation through worker queues and isolated IPC. Add a worker watchdog, avoid replaying uncertain HTTP writes, hide production exception details, and drain HTTP/1, HTTP/2 and WebSocket connections.

Include queue, cancellation, shutdown and packaged-service regressions with operational documentation. Validation: cargo check --locked for CLI, runtime, isolate and QuickJS, all targets.
Add SQLite and PostgreSQL completion records, active quota accounting, bounded retention cleanup and CLI result inspection. Retry retained outcomes without replaying handlers, release consumed history, preserve partial-batch notifications, and expose scheduler health to service owners.

Include lifecycle, recovery and administration regressions plus operational guidance. Active-crash recovery and cross-store admission remain open. Validation: cargo check --locked for CLI, runtime, durable and QuickJS, all targets.
Pass lease deadlines into SQLite and PostgreSQL completion transactions. Check fresh time after acquiring locks and before commit, rolling back result and quota changes on expiry while preserving identical committed-result acknowledgements.

Add SQLite session integration and PostgreSQL task/quota lock-wait regressions. Validation: all-target compile check; final source tree retains the previously validated 302 passing tests and Clippy results.
@wangcch
wangcch merged commit 4c33c4e into main Sep 9, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant