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.
36 lines
1.5 KiB
Docker
36 lines
1.5 KiB
Docker
# tidalDB DR image — PACKAGING ONLY (no in-container compile).
|
|
#
|
|
# Committed promotion of tmp/tidalctl-img/Dockerfile, EXTENDED to bundle
|
|
# `tidal-server` alongside `tidalctl` + `mc` (spec Q4): the DR drill's query-proof
|
|
# step boots a standalone tidal-server on the restored data dir, so one image runs
|
|
# export -> restore -> boot -> read. Both binaries are HOST cross-compiles
|
|
# (x86_64-unknown-linux-gnu, glibc 2.41) produced by scripts/build-release.sh, so
|
|
# the runtime base MUST be trixie (libmvec.so.1 lives there).
|
|
FROM debian:trixie-slim
|
|
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
|
|
# libstdc++6/libgcc-s1 for the aws-sdk/usearch C++ runtime; ca-certificates for TLS;
|
|
# curl to fetch mc AND to drive the booted server's /health + /feed in the drill;
|
|
# coreutils (diff) for the byte-equivalence check.
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
libstdc++6 libgcc-s1 ca-certificates curl diffutils && \
|
|
curl -fsSL https://dl.min.io/client/mc/release/linux-amd64/mc -o /usr/local/bin/mc && \
|
|
chmod +x /usr/local/bin/mc && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Non-root, uid 10001 (matches the tidaldb StatefulSet convention).
|
|
RUN useradd --system -u 10001 --home /srv tidal
|
|
|
|
COPY --chown=tidal:tidal tidalctl /usr/local/bin/tidalctl
|
|
COPY --chown=tidal:tidal tidal-server /usr/local/bin/tidal-server
|
|
|
|
USER tidal
|
|
WORKDIR /srv
|
|
|
|
# Bare-binary ENTRYPOINT so `docker run img status ...`/subcommand overrides work;
|
|
# the drill Job overrides command/args with the export/restore/verify/boot script.
|
|
ENTRYPOINT ["tidalctl"]
|
|
CMD ["--help"]
|