From 82bb9fc7aca8abf02bfa78aeac0f54f547050075 Mon Sep 17 00:00:00 2001 From: dryrun Date: Tue, 20 Oct 2026 01:57:40 +0000 Subject: [PATCH] chore(release): 1.21.5 --- CHANGELOG.md | 9 +++++++++ Cargo.lock | 2 +- test/m1-realdata-e2e/Cargo.lock | 2 +- test/w5-policy-runtime-node-e2e/Cargo.lock | 2 +- tinycloud-node-server/Cargo.toml | 2 +- 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 48856c00..6ead2b10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ ## [Unreleased] +## [1.21.5] - 2026-10-20 + +### Release notes + +- **Fix (TC-1578, #387):** a hosted space that was empty at boot (no blocks and no SQL or DuckDB bytes) was dropped from the block store's size map, so its first write after a restart answered `404 space not found`. On production this affected 2,000 of 3,988 spaces (741 accounts) at about 01:2xZ on 2026-10-20. Boot now gives every row of the `space` table a size entry before the node serves. **A database error at that step fails startup.** +- **Fix:** re-hosting a space that has data no longer resets its metered block usage to zero (it was a quota bypass). `init_size` is atomic and never lowers an existing entry. +- No database migrations. +- Rollback is the 1.21.4 image (digest b4953184), with no database step. + ### Changes - Fixed hosted spaces with no blocks and no SQL/DuckDB bytes becoming unwritable after a node restart when a storage limit is configured (TC-1578). The write path answered 404 "space not found" because the S3 block store only sizes spaces that have objects at boot. A write to a hosted space the block store has no size for now initialises its entry from the `space` table and is then checked against the limit as usual; only a space absent from the table is 404. Boot also gives every space in the table a size entry. SQL/DuckDB bytes are still counted through the SQL size mirror, not the block store. diff --git a/Cargo.lock b/Cargo.lock index 2168f951..4a91dd43 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9931,7 +9931,7 @@ dependencies = [ [[package]] name = "tinycloud-node" -version = "1.21.4" +version = "1.21.5" dependencies = [ "aes-gcm", "anyhow", diff --git a/test/m1-realdata-e2e/Cargo.lock b/test/m1-realdata-e2e/Cargo.lock index 69504dcb..f4dade64 100644 --- a/test/m1-realdata-e2e/Cargo.lock +++ b/test/m1-realdata-e2e/Cargo.lock @@ -8017,7 +8017,7 @@ dependencies = [ [[package]] name = "tinycloud-node" -version = "1.21.4" +version = "1.21.5" dependencies = [ "aes-gcm", "anyhow", diff --git a/test/w5-policy-runtime-node-e2e/Cargo.lock b/test/w5-policy-runtime-node-e2e/Cargo.lock index abb46484..a4b92c73 100644 --- a/test/w5-policy-runtime-node-e2e/Cargo.lock +++ b/test/w5-policy-runtime-node-e2e/Cargo.lock @@ -8465,7 +8465,7 @@ dependencies = [ [[package]] name = "tinycloud-node" -version = "1.21.4" +version = "1.21.5" dependencies = [ "aes-gcm", "anyhow", diff --git a/tinycloud-node-server/Cargo.toml b/tinycloud-node-server/Cargo.toml index 58aa42b2..9db398dd 100644 --- a/tinycloud-node-server/Cargo.toml +++ b/tinycloud-node-server/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "tinycloud-node" build = "build.rs" -version = "1.21.4" +version = "1.21.5" authors = ["TinyCloud Protocol"] edition = "2021" description = "TinyCloud Protocol Node"