Skip to content

v1.1.0

Choose a tag to compare

@jazware jazware released this 11 Oct 00:36
· 35 commits to main since this release

Image: ghcr.io/jazware/vlpds:1.1.0 (linux/amd64 and linux/arm64)

Upgrading: docs/operations/upgrades.md

47 commits since v1.0.0: v1.0.0...v1.1.0

Changes

  • vlpds, vlrelay: a fat-LTO dist profile for published releases (518d4af)
  • vlpds: rustfmt cluster.rs; test-vlpds and test-vlrelay check formatting (8cc3e5b)
  • vlpds: repo node bytes exact: each MST node keeps its block length, and a commit subtracts the replaced nodes' real sizes instead of the mean (25efab3)
  • vlpds: fix three test-vlpds flakes (a fail-stop in runtime shutdown, an import slot race, a takeover snapshot race) (baa21a8)
  • vlpds, vlrelay, vlsync, vlatproto: test profiles skip thin-local LTO (lto = "off"; false still runs it) (f134fc7)
  • vlrelay, vlpds, deltad: heap profiles always on, GET /debug/pprof/heap (0d342b6)
  • vlsync-firehose, vlrelay, vlpds: configurable backfill cache and read-ahead (10eeaba)
  • vlpds, vlrelay: thin LTO with 16 codegen units for release builds (d8079b4)
  • vlpds releases: vlpds-v tags, published as v (20db991)
  • vlpds: image recipes without mono's vcs.sh, and no private names in shipped notes (02b7e76)
  • vlpds: the server-key fault test stubs the fail-stop itself (1ae35cc)
  • vlpds: two clippy 1.99 lints (map_entry in changes.rs, redundant pattern in a store_stats test) (c162156)

Shared crates

  • vlsync-lease: pluggable liveness (Alive) with bucket leases or peer heartbeats (Peers, vlRelay's quorum rules), vlRelay's peer RPC client moved in, replica positions and topology generations on the beats, a table op with an unknown outcome forgets its cached record; chaos sim runs both models with partitions and rogue owners; vlrelay uses the crate's rpc and quorum rules; docs/leases.md costs and vlDB P3 steps on heartbeats (d791200)
  • vlsync: vlsync-lease, one implementation of bucket ownership (CAS on JSON records, epoch claims and fences, node leases judged on each node's monotonic clock, a slot-range assignment table with epochs, spans, replicas and a published topology, a chaos store), docs/leases.md, for vlDB P3 (8fce690)
  • vlsync-store: send deletes as single DELETEs, never a DeleteObjects POST (21aa212)
  • vlsync-store: name vlRelay's PLC seeds, export checkpoint, discovery and policy keys in the request counts (cec9ba5)
  • vlsync-heapprof: dump into a private mkdtemp dir; no private names in vlRelay and vlpds (1a4bf32)
  • vlsync: vlsync-heapprof, continuous jemalloc heap profiles as Go's pprof (9a5d718)
  • vlsync-firehose: a backfill's first read-ahead asks for one segment; vlrelay: rcvbuf 64 on a small box (a50c566)
  • vlsync: pin slatedb at 08addd13 (patch 10: open without waiting for the compactor) (6ba8df8)
  • vlsync-store: label delta's bucket paths by component (2d91ed6)
  • vlatproto: atproto out of vlsync into its own package (3515b6e)
  • vlsync: docs and comments point at the crates' new homes (e95670f)
  • vlsync: image builds take vlsync (7c4f159)
  • vlsync: justfile, README, clippy-clean crates (77ac866)
  • vlsync: shared storage, atproto and firehose crates out of vlpds (298b9fe)
  • slatedb: fork 87db9e3b (patch 9, cache weighted bytes); slatedb_cache_bytes{cache,part} (3d048ba)
  • slatedb: fork patch 8 (fetched blocks/indexes clamped); vlRelay's state and seeds SSTs zstd (89684b8)
  • slate-metrics: db label only on per-database families; the newest open handle per name shows (838d36f)
  • slate-metrics: SlateDB metrics per database (db label) and LSM shapes; wired into vlpds and vlRelay (13a558a)

Docs

  • vlpds docs: console screenshots from a local 5-node cluster with fake accounts (91bf30d)
  • vlpds docs: the compatibility contract holds within a feature level, with Spaces and pre-2026-10-06 builds as exceptions; upgrading from those is one-way (stop every node, then start all on the new build) and drops users' unused TOTP recovery codes (61bfefa)
  • vlpds docs: catch up with Spaces, vlsync/vlatproto and the console redesign; new console screenshot (dde121d)

Tests and benchmarks

  • vlpds tests: gathers_every_node waits for a balanced cluster (160d929)
  • vlpds tests: a TestServer's first write no longer waits out the 1 s lease-write gap; the long tests start first (56f7b53)
  • vlpds e2e: HA scenarios run side by side, replays end when they reach the head (15a504f)
  • vlpds bench/ha: the dead-log audit lets spans the node handed off before the fault end below the fence; a failed scenario says why (c31af8c)
  • vlpds bench/ha: hactl.py reads today's log segments (42b2924)
  • vlpds bench/ha/upgrade.sh: the default previous release is the first build with 40-byte repo stats rows (2026-10-06), the oldest a rolling upgrade is promised from; older ones upgrade one-way (38d80a0)

Other

  • vlpds 1.1.0 (77b8897)
  • public syncs: a GitHub Release for each published v* tag (ff85f06)
  • deploy: retire Pyroscope for yeet's continuous profiles (a039286)
  • tokio-console: keep a minute of finished tasks and cap its buffers (d8856fb)
  • tokio-console in vlrelay, vlpds, deltad and yeet-hq, and yeet console (de23d27)
  • builds, packages and deploy scripts: mono's own checkout through scripts/vcs.sh, not git (82c430b)
  • scripts: VCS shim (scripts/vcs.sh) for the delta cutover; image scripts, lib.sh, check-sops and justfile tag defaults use it (b3e687e)
  • vlrelay: bound the SlateDB compactor and memtables (state and PLC seeds); small-box docs (60fbd09)