diff --git a/.changeset/allow_concurrent_database_reads.md b/.changeset/allow_concurrent_database_reads.md deleted file mode 100644 index e9bbb51a..00000000 --- a/.changeset/allow_concurrent_database_reads.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -# Allow concurrent database reads diff --git a/.changeset/fix_slow_sector_pruning_scan.md b/.changeset/fix_slow_sector_pruning_scan.md deleted file mode 100644 index 804c1953..00000000 --- a/.changeset/fix_slow_sector_pruning_scan.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -# Fix high CPU usage during sector pruning diff --git a/.changeset/fix_stored_sectors_table_bloat.md b/.changeset/fix_stored_sectors_table_bloat.md deleted file mode 100644 index f12ebe73..00000000 --- a/.changeset/fix_stored_sectors_table_bloat.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -default: patch ---- - -# Fix the merkle cache bloating the stored sectors table - -The cache kept 32 KiB of subtree roots inline on every sector row, which slowed -sector reads, pruning and contract root lookups. Cached roots are discarded on -upgrade and rebuilt on the next read. - -This database migration will take a long time on large hosts. Plan accordingly. \ No newline at end of file diff --git a/.changeset/index_unreferenced_sectors.md b/.changeset/index_unreferenced_sectors.md deleted file mode 100644 index b21c2b4c..00000000 --- a/.changeset/index_unreferenced_sectors.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -default: minor ---- - -# Index unreferenced sectors for pruning - -Sectors now track how many contract and temp storage references they have, and -a location holds a lock while a sector is being written to it. The prune sweep -reads unreferenced sectors from an index instead of scanning every stored -sector, which on a 100 TiB host held the database for about six seconds every -five minutes. The last access timestamp is removed. The upgrade computes the -counts for existing sectors and rewrites the sector table, which takes about a -minute at that size. diff --git a/.changeset/migrate_outside_write_lock.md b/.changeset/migrate_outside_write_lock.md deleted file mode 100644 index c4bf0b37..00000000 --- a/.changeset/migrate_outside_write_lock.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -# Sector migration no longer holds the database lock while copying data diff --git a/.changeset/release_cached_sector_roots.md b/.changeset/release_cached_sector_roots.md deleted file mode 100644 index 28fa7169..00000000 --- a/.changeset/release_cached_sector_roots.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -default: patch ---- - -# Release cached sector roots of resolved and rejected contracts - -Fixes a memory leak where the in-memory sector root cache kept the roots of every resolved, renewed, and rejected contract for the lifetime of the process. diff --git a/.changeset/remove_sector_cache.md b/.changeset/remove_sector_cache.md deleted file mode 100644 index 9a4653e0..00000000 --- a/.changeset/remove_sector_cache.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -# Removed the in-memory sector cache, the sectorCacheSize setting is now ignored diff --git a/.changeset/reverted_back_to_encodingjson_from_sonic.md b/.changeset/reverted_back_to_encodingjson_from_sonic.md deleted file mode 100644 index 4c4be350..00000000 --- a/.changeset/reverted_back_to_encodingjson_from_sonic.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -# Reverted back to encoding/json from sonic. diff --git a/.changeset/the_ui_now_requires_all_prices_or_none_to_be_pinned.md b/.changeset/the_ui_now_requires_all_prices_or_none_to_be_pinned.md deleted file mode 100644 index 1c44209f..00000000 --- a/.changeset/the_ui_now_requires_all_prices_or_none_to_be_pinned.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -# The UI now requires all prices or none to be pinned diff --git a/.changeset/update_gosiatechcoreutils_to_v0241.md b/.changeset/update_gosiatechcoreutils_to_v0241.md deleted file mode 100644 index ec247f79..00000000 --- a/.changeset/update_gosiatechcoreutils_to_v0241.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -# Update go.sia.tech/coreutils to v0.24.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 066a4388..73d126d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,39 @@ +## 2.11.0 (2026-09-17) + +### Features + +#### Index unreferenced sectors for pruning + +Sectors now track how many contract and temp storage references they have, and +a location holds a lock while a sector is being written to it. The prune sweep +reads unreferenced sectors from an index instead of scanning every stored +sector, which on a 100 TiB host held the database for about six seconds every +five minutes. The last access timestamp is removed. The upgrade computes the +counts for existing sectors and rewrites the sector table, which takes about a +minute at that size. + +### Fixes + +- Allow concurrent database reads +- Fix high CPU usage during sector pruning +- Sector migration no longer holds the database lock while copying data +- Removed the in-memory sector cache, the sectorCacheSize setting is now ignored +- Reverted back to encoding/json from sonic. +- The UI now requires all prices or none to be pinned +- Update go.sia.tech/coreutils to v0.24.1 + +#### Fix the merkle cache bloating the stored sectors table + +The cache kept 32 KiB of subtree roots inline on every sector row, which slowed +sector reads, pruning and contract root lookups. Cached roots are discarded on +upgrade and rebuilt on the next read. + +This database migration will take a long time on large hosts. Plan accordingly. + +#### Release cached sector roots of resolved and rejected contracts + +Fixes a memory leak where the in-memory sector root cache kept the roots of every resolved, renewed, and rejected contract for the lifetime of the process. + ## 2.10.3 (2026-09-01) ### Fixes diff --git a/go.mod b/go.mod index f458eb12..f3b7c235 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module go.sia.tech/hostd/v2 // v2.10.3 +module go.sia.tech/hostd/v2 // v2.11.0 go 1.27.0