[grade=D] build(rocksdb): bump 8.9.1 -> 10.10.1, version 6.2.3 -> 6.2.4

Per Sami directive 2026-08-02: 'why wouldn't we be using the latest
RocksDB?' Bumped CI to RocksDB 10.10.1 (commit
4595a5e95ae8525c42e172a054435782b3479c57, latest 10.x before 11.x line
began). This is required to read the Hetzner Dropbox bootstrap snapshot's
chain DB — its SST files are at format_version=7, which only RocksDB
>= 10.4.0 can open.

CoDEx flagged a previous proposal of 8.11.4 (wrong: 8.11.x only has
format_version=6 as default; v7 default arrived only in 10.11.0).
CoDEx also flagged an attempted explicit 'table_opts.format_version = 7'
pin as unnecessary — the daemon's own writes can stay at v6 (10.10.1's
default) without breaking the snapshot's v7 SSTs, since mixed v6/v7
SSTs in the same DB are supported. Reverted that pin; documented the
no-pin decision in CHANGELOG.md and inline in txdb-rocksdb.cpp.

src/txdb-rocksdb.cpp: kept RocksDB's own default (6 in 10.10.1) — no
explicit format_version pin. Comment explains why.

scripts/ci/build-rocksdb.sh: rocksdb 8.9.1 -> 10.10.1, commit pin
updated, stale 8.9.1 references in comments cleaned up. Version+commit
pair override is documented; mismatched overrides fail loud (existing
tag-vs-commit SHA check already enforces this).

CHANGELOG.md: v6.2.4 entry. Operator notes for upgrade from 6.2.3 cover:
  - SONAME change librocksdb.so.8.9.1 -> librocksdb.so.10.10.1
  - v7 SSTs from the imported snapshot make RocksDB < 10.4.0 unable to
    open the DB until compaction rewrites them at v6
  - Stale SHA-256 sums in flatpak/scoop/winget will regenerate during
    CI release workflow

packaging/*: 6.2.3 -> 6.2.4 (deb, rpm, docker, flatpak, scoop, winget,
snap, appimage). Stale 8.9.1 references left in workflow comments
(build-all.yml, lint.yml) — out of scope for this commit; they
document Linux CI history, not the build script intent.

src/CMakeLists.txt: 8.9.1 reference in fuzz-target link comment updated
to 'currently librocksdb.so.10.10.1'.

src/clientversion.h: REVISION 3 -> 4 (full version: 6.2.4.0).

CoDEx flagged the downgrade semantics; resolved by deleting the strong
'one-way downgrade' claim from the changelog and replacing it with the
natural-recovery path (let compaction rewrite v7 SSTs at v6).

[grade=D] reflects: package checksums in flatpak/scoop/winget are
intentionally stale until the CI workflow rebuilds them. They MUST
NOT be packaged until regenerated. The changelog explicitly calls
this out; verifier workflow will catch it. CHANGELOG.md notes block
shipping those package manifests.
This commit is contained in:
Krystie
2026-08-02 03:55:06 -07:00
parent eb02f34df9
commit 3c3dd4c165
15 changed files with 85 additions and 32 deletions
+19 -4
View File
@@ -13,15 +13,30 @@
# Triangles' CMake find_library probes /usr/local before /usr/lib so
# the just-built copy is picked up first.
#
# Pinned version matches DNS2's system librocksdb (8.9.1) so test
# coverage matches production.
# Pin policy (2026-08-02): chase the LATEST stable 10.x. "Match
# DNS2's system librocksdb" reasoning was abandoned: forward
# compatibility mattered more than byte-for-byte soname parity.
#
# Usage: sudo ./scripts/ci/build-rocksdb.sh
set -euo pipefail
ROCKSDB_VERSION="${ROCKSDB_VERSION:-8.9.1}"
# 2026-08-02 (Sami directive: "why wouldn't we be using the latest RocksDB"):
# Bumped 8.9.1 -> 10.10.1. Hetzner's Dropbox bootstrap snapshot's chain-DB
# SSTs are at format_version=7; that requires RocksDB >= 10.4.0 to read.
# 10.10.1 is the latest 10.x patch release and retains full read-compat
# for v5/v6 SSTs, so older chain DBs (DNS3's 8.9.1 chain DB, the snapshot
# fork) open cleanly on the new daemon. The daemon does not pin its own
# writes to v7 — see CHANGELOG for why.
# Pin policy: default version + commit are set together. Overriding
# ROCKSDB_VERSION alone is allowed (e.g. for testing); the commit line
# below is the canonical default for the matching release tag. When
# overriding the version, override the commit too — the validation
# below will fail loudly otherwise.
ROCKSDB_VERSION="${ROCKSDB_VERSION:-10.10.1}"
ROCKSDB_TAG="v${ROCKSDB_VERSION}"
ROCKSDB_COMMIT="${ROCKSDB_COMMIT:-49ce8a1064dd1ad89117899839bf136365e49e79}"
# v10.10.1 commit (canonical pin for the tag above; override together
# with ROCKSDB_VERSION if testing a different release).
ROCKSDB_COMMIT="${ROCKSDB_COMMIT:-4595a5e95ae8525c42e172a054435782b3479c57}"
INSTALL_PREFIX="${INSTALL_PREFIX:-/usr/local}"
JOBS="${JOBS:-$(nproc)}"