Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## [Unreleased]

## [1.24.0] - 2026-10-25

- KV puts persist content-addressed blobs before taking the per-space sequence lock, and committed `kv/sync` cursors stay ordered. A preparatory transaction authorizes the write and claims every distinct blob under a durable attempt, committing all claims or none; on PostgreSQL each claim statement also checks that the invocation's spaces are hosted. Uploads hold no pooled database connection, transaction or lock. Protected legacy meeting writes keep their pre-upload freeze barrier, which waits for commit or abort and fails after 30 seconds if stalled (TC-1260).
Failed attempts move their last unreferenced hash fence to `deleting`; a new writer cannot deduplicate or upload until confirmed physical absence removes the fence, and known failures refund once after deletion. A 60-second collector reclaims crash leftovers after a five-minute database-time grace when no same-hash writer remains, including lost delete responses; it closes, without deleting, a fence whose blob a committed write references. S3 startup reconstructs pending refunds from the same physical listing as its quota count. Quota stays conservative and per process, not a durable global ledger. A lost connection during registration retries the preparatory transaction with the same attempt ID; neither an upload nor a committed write is replayed on an uncertain outcome.
First uploads keep the bare hash key (generation zero); an upload after orphan deletion uses a generation-scoped key `hash@N`, so a delayed delete cannot remove newly committed bytes. Reads take the generation from the KV lookup. A binary without this change cannot read generation-above-zero records, so a fault after such records exist is recovered by a forward fix (`docs/kv-sync.md`). Migration `m20261023_010000_kv_orphan_candidates` adds the `generation` columns and the claim tables and can be applied again over its own tables on PostgreSQL and SQLite.
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/m1-realdata-e2e/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/w5-policy-runtime-node-e2e/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion tinycloud-node-server/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "tinycloud-node"
build = "build.rs"
version = "1.23.0"
version = "1.24.0"
authors = ["TinyCloud Protocol"]
edition = "2021"
description = "TinyCloud Protocol Node"
Expand Down
Loading