tidaldb/tidal-server/tests
jordan 67a175e19a
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
fix(cluster): /cluster/status reported a total partition on a healthy fleet
The status aggregator probed every peer's /cluster/status/local with NO
credential. That route is token-gated, so on any cluster with TIDAL_API_KEY set
each peer answered 401, and every peer row collapsed to the honest-unknown
placeholder: reachable false, partitioned true, applied_events null,
lag_events null, version "".

Only the OWN region survived, because it is served in-process with no HTTP hop.
The result: the one surface an operator reads to clear the N/N+1 version skew
before a rolling upgrade - and the deploy runbook's own step 4 - reported the
whole cluster partitioned while it was perfectly healthy, with every peer's
version blank so the skew check was blind.

Observed on the GKE cluster: all three pods answered /health 200 under leader
tidaldb-1, replication applied, and a curl between the exact same pod FQDNs
returned 200, while /cluster/status insisted both siblings were unreachable.

security::bearer_from_env documents this precise trap - a node that "dials an
authenticated peer with NO credential" - and count_alive_other_voters already
attaches the bearer. This forwards the CALLER's Authorization header instead of
reaching for creds.bearer(), matching the relayed-operator-hop convention that
/cluster/promote already uses, so a weakly-authenticated caller cannot borrow
the node's own credential to read peers it could not read directly.

Why it escaped: every other multi-process test runs with no TIDAL_API_KEY, where
a credential-less probe succeeds - including cluster_multiproc's all-reachable
assertion. The new test carries the key. Verified differential: it fails on the
reverted code with exactly the observed shape (us-east reachable, both peers
null/false/empty) and passes with the fix. cluster_multiproc still 5/5.
2026-09-16 00:51:57 -06:00
..
support ci: disable incremental compilation, surface the nested build's error 2026-08-31 01:31:03 -06:00
cluster_chaos.rs harden: validate embeddings before the WAL, fix the reseed-latch leak, run every test suite 2026-08-31 00:46:00 -06:00
cluster_cross_shard_reads.rs feat(m12p4): sharded ingestion — scatter-gather pool + cross-shard unified reads (L4) 2026-06-14 15:17:35 -06:00
cluster_e2e.rs feat(m8p10): multi-process cluster mode — scatter-gather, reconcile relay, chaos/UAT suites 2026-06-10 14:07:33 -06:00
cluster_election.rs feat(m11): Raft leader election over WAL stream (m11p4) 2026-06-11 23:30:24 -06:00
cluster_faults.rs feat(m11): continuous correctness (m11p9) — fault classes, invariant checkers, soak gates, nightly pipeline 2026-06-13 15:23:59 -06:00
cluster_graph_persistence.rs fleet remediation: make the workspace gate runnable, then fix what it caught 2026-08-16 12:38:14 -06:00
cluster_grpc.rs feat(m11): cluster security (m11p7) + perf instrumentation floor 2026-06-13 01:25:35 -06:00
cluster_lifecycle.rs feat(m11): membership, snapshot install, and reseed (m11p5) 2026-06-12 19:55:54 -06:00
cluster_membership.rs feat(m12): election-divergence-fix + soak-eval streak + release tooling 2026-06-18 13:08:53 -06:00
cluster_multiproc.rs feat(m8p10): multi-process cluster mode — scatter-gather, reconcile relay, chaos/UAT suites 2026-06-10 14:07:33 -06:00
cluster_poison_embedding.rs harden: validate embeddings before the WAL, fix the reseed-latch leak, run every test suite 2026-08-31 00:46:00 -06:00
cluster_quorum.rs feat(m11): continuous correctness (m11p9) — fault classes, invariant checkers, soak gates, nightly pipeline 2026-06-13 15:23:59 -06:00
cluster_region.rs feat(m12p4): sharded ingestion — scatter-gather pool + cross-shard unified reads (L4) 2026-06-14 15:17:35 -06:00
cluster_reseed.rs fix(cluster): readiness must prove convergence, not merely lack a marker 2026-08-21 10:41:38 -06:00
cluster_routes.rs harden: validate embeddings before the WAL, fix the reseed-latch leak, run every test suite 2026-08-31 00:46:00 -06:00
cluster_runbook.rs fix(cluster): /cluster/status reported a total partition on a healthy fleet 2026-09-16 00:51:57 -06:00
cluster_security.rs feat(m11): cluster security (m11p7) + perf instrumentation floor 2026-06-13 01:25:35 -06:00
cluster_sharding.rs harden: restore CI verification, remove four wire-level fabrications, instrument the 401 path 2026-08-30 20:55:58 -06:00
exact_rank.rs feat: add exact qualified-hot ranking API 2026-09-09 09:34:26 -06:00
middleware.rs feat(m11): cluster security (m11p7) + perf instrumentation floor 2026-06-13 01:25:35 -06:00
reseed_install.rs fix(m12): break the post-reseed false-ReseedRequired loop (durable term marker + readiness gating + restart coordinator) 2026-06-18 21:06:18 -06:00
standalone_offload.rs ranking: fix two BLOCKERs in the age-aware sorts, and stop trusting created_at units 2026-08-31 21:31:31 -06:00
standalone.rs ranking: fix two BLOCKERs in the age-aware sorts, and stop trusting created_at units 2026-08-31 21:31:31 -06:00
vector_search.rs vector search: normalize the query, instrument the blob path, expose per-group vector counts 2026-08-30 13:57:36 -06:00