tidaldb/tidal-stress/k8s/soak-results-pvc.yaml
jx12n 580142df49 feat(m12): election-divergence-fix + soak-eval streak + release tooling
Durable `leader_acked` frontier in `ShardReplica` tracks the highest seqno
acked under `ack=leader` (journal-only, un-replicated); `decide_join` now
quarantines on THIS node's own frontier rather than comparing stream numbers
across stream boundaries — eliminates false-quarantine churn on rolling
restarts. `SHUTDOWN_HANDOFF_WAIT` (3s) drains the leader's tail to quorum
before step-down so the next leader inherits a clean prefix. New
`load_leader_acked`/`persist_leader_acked` helpers; `cluster_reseed.rs` gains
the divergence-fix regression suite; `replication_ops.rs` threads the signal.

Soak-eval: `tidal_stress::soak_eval` + `soak-eval` binary implement the
30-night streak (ledger.tsv × restarts.tsv → streak.tsv); monitor and nightly
CronJob k8s YAMLs updated; phase-9 doc clarifies the dual-stream streak
definition (ledger PASS AND zero pod restarts in window). `run-reliability.sh`
gates the election-divergence suite before any k8s push.

Release tooling: `docker/release/` multi-stage Dockerfile + DR image;
`scripts/build-release.sh` single repeatable cross-compile+buildx path.
2026-06-18 13:08:53 -06:00

33 lines
1.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Durable result sink for the 30-night soak (GA bar: nightly suite green 30
# consecutive days — docs/planning/milestone-11/phase-9.md "Exit gate").
#
# longhorn-rwx: RWX so the nightly soak CronJob pods (writers) and the always-on
# soak-monitor (reader + evaluator) can mount it concurrently, and Retain reclaim
# policy so the 30 nights of JSON summaries survive a PVC delete / job churn /
# operator session ending. Each night writes /results/soak-YYYY-MM-DD.json +
# appends one line to /results/ledger.tsv; the monitor appends restarts.tsv every
# 5 min and the evaluator rewrites streak.tsv.
#
# SIZING (30-night budget): 30 × soak-*.json (per-stage latency histograms, up to
# ~30 MiB each on a full run) ≈ 1 GiB, + restarts.tsv (288 samples/day × 3 pods ×
# 30 nights ≈ 26k rows ≈ a few MiB) + ledger/streak (KiB). 5Gi gives ~2× headroom.
# The evaluator container PRUNES soak-*.json older than 31 days each loop so the
# Retain volume stays bounded across successive windows (it never auto-shrinks).
#
# Apply: kubectl apply -f tidal-stress/k8s/soak-results-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: tidal-soak-results
namespace: tidaldb-cluster
labels:
app.kubernetes.io/name: tidal-soak
app.kubernetes.io/part-of: tidaldb
spec:
accessModes:
- ReadWriteMany
storageClassName: longhorn-rwx
resources:
requests:
storage: 5Gi