MSE907 failover study

Run artifacts

The raw evidence for every measured run, downloadable.

Results

Run artifacts

Each measured run produced one artifact in GitHub Actions: a zip with the load generator’s attempt log, the ledger check, the change events and the evidence collected from both clusters. All 40 are listed here, one download each. The all-runs zip also holds the failed first attempt of A-podkill-06. Zips stored with the site download directly; the rest are fetched from GitHub when you click.

The zips are the raw evidence behind every figure on the dashboard. The run table’s RTO, loss and window numbers come from each zip’s result.json.

Download all measured runs (one zip) Built when you click, so it can take 10 to 30 seconds to start. Contains the 40 run zips and a README.

RunFaultDirectionStarted (NZ)RTO (s)ResultSizeDownload
A-partition-01partitionAKS to EKS25 Oct, 19:2721.8No lossrun-A-partition-01.zip
A-partition-02partitionAKS to EKS25 Oct, 20:3523.7No lossrun-A-partition-02.zip
A-partition-03partitionAKS to EKS25 Oct, 20:5222.2No lossrun-A-partition-03.zip
A-partition-04partitionAKS to EKS25 Oct, 21:5975.6No lossrun-A-partition-04.zip
A-partition-05partitionAKS to EKS25 Oct, 22:1722.6No lossrun-A-partition-05.zip
A-partition-06partitionEKS to AKS26 Oct, 02:3278.0No lossrun-A-partition-06.zip
A-partition-07partitionEKS to AKS26 Oct, 03:3977.6No lossrun-A-partition-07.zip
A-partition-08partitionEKS to AKS26 Oct, 03:5676.7No lossrun-A-partition-08.zip
A-partition-09partitionEKS to AKS26 Oct, 05:0276.9No lossrun-A-partition-09.zip
A-partition-10partitionEKS to AKS26 Oct, 05:2077.6No lossrun-A-partition-10.zip
A-podkill-01pod-killAKS to EKS25 Oct, 15:5331.3No lossrun-A-podkill-01.zip
A-podkill-02pod-killAKS to EKS25 Oct, 17:0231.2No lossrun-A-podkill-02.zip
A-podkill-03pod-killAKS to EKS25 Oct, 17:1931.1No lossrun-A-podkill-03.zip
A-podkill-04pod-killAKS to EKS25 Oct, 18:2731.1No lossrun-A-podkill-04.zip
A-podkill-05pod-killAKS to EKS25 Oct, 18:4431.1No lossrun-A-podkill-05.zip
A-podkill-06-rerunpod-killEKS to AKS26 Oct, 20:0825.0No lossrun-A-podkill-06-rerun.zip
A-podkill-07pod-killEKS to AKS26 Oct, 00:0830.8No lossrun-A-podkill-07.zip
A-podkill-08pod-killEKS to AKS26 Oct, 00:2530.8No lossrun-A-podkill-08.zip
A-podkill-09pod-killEKS to AKS26 Oct, 01:3131.4No lossrun-A-podkill-09.zip
A-podkill-10pod-killEKS to AKS26 Oct, 01:4831.2No lossrun-A-podkill-10.zip
B-partition-01partitionAKS to EKS25 Oct, 19:53172.7682 lostrun-B-partition-01.zip
B-partition-02partitionAKS to EKS25 Oct, 20:16172.2667 lostrun-B-partition-02.zip
B-partition-03partitionAKS to EKS25 Oct, 21:16173.8667 lostrun-B-partition-03.zip
B-partition-04partitionAKS to EKS25 Oct, 21:41172.7685 lostrun-B-partition-04.zip
B-partition-05partitionAKS to EKS25 Oct, 22:41172.2684 lostrun-B-partition-05.zip
B-partition-06partitionEKS to AKS26 Oct, 02:57166.1751 lostrun-B-partition-06.zip
B-partition-07partitionEKS to AKS26 Oct, 03:21166.4746 lostrun-B-partition-07.zip
B-partition-08partitionEKS to AKS26 Oct, 04:20165.5751 lostrun-B-partition-08.zip
B-partition-09partitionEKS to AKS26 Oct, 04:44166.5746 lostrun-B-partition-09.zip
B-partition-10partitionEKS to AKS26 Oct, 05:45167.9732 lostrun-B-partition-10.zip
B-podkill-01pod-killAKS to EKS25 Oct, 16:19182.4619 lostrun-B-podkill-01.zip
B-podkill-02pod-killAKS to EKS25 Oct, 16:43181.8621 lostrun-B-podkill-02.zip
B-podkill-03pod-killAKS to EKS25 Oct, 17:44181.7621 lostrun-B-podkill-03.zip
B-podkill-04pod-killAKS to EKS25 Oct, 18:10182.8618 lostrun-B-podkill-04.zip
B-podkill-05pod-killAKS to EKS25 Oct, 19:08181.3617 lostrun-B-podkill-05.zip
B-podkill-06pod-killEKS to AKS25 Oct, 23:27181.5654 lostrun-B-podkill-06.zip
B-podkill-07pod-killEKS to AKS25 Oct, 23:50184.2645 lostrun-B-podkill-07.zip
B-podkill-08pod-killEKS to AKS26 Oct, 00:49147.7644 lostrun-B-podkill-08.zip
B-podkill-09pod-killEKS to AKS26 Oct, 01:14183.7639 lostrun-B-podkill-09.zip
B-podkill-10pod-killEKS to AKS26 Oct, 02:13181.7656 lostrun-B-podkill-10.zip

Hover a download link to see its SHA-256. GitHub artifact ids for each run (the 40 runs, the repeat and the H3 runs) are in artifacts.tsv; the original files live in the private repository’s Actions tab (artifacts are kept for the repository’s retention period, 90 days by default, so a copy stored with the site is the permanent record).

The H3 runs

The ten matched pairs of the H3 test (replay of lost writes) are saved the same way: one artifact per run. H3-A-NN is the run with replay on and H3-control-NN the same pair with replay off. All twenty ran AKS to EKS on 25 and 26 October 2026. They are not part of the 40 measured runs, and the zips have the same layout (see the list below).

Download the 20 H3 runs (one zip)

RunPairReplayGapRecoveredLostDuplicatedRTO (s)Download
H3-A-011on76990061.6run-H3-A-01.zip
H3-A-022on76980062.2run-H3-A-02.zip
H3-A-033on751040059.8run-H3-A-03.zip
H3-A-044on75970062.7run-H3-A-04.zip
H3-A-055on761010060.4run-H3-A-05.zip
H3-A-066on751020059.8run-H3-A-06.zip
H3-A-077on761070057.1run-H3-A-07.zip
H3-A-088on771010062.4run-H3-A-08.zip
H3-A-099on771050059.7run-H3-A-09.zip
H3-A-1010on771030051.9run-H3-A-10.zip
H3-control-011off770107057.3run-H3-control-01.zip
H3-control-022off760105056.9run-H3-control-02.zip
H3-control-033off76097061.4run-H3-control-03.zip
H3-control-044off760104058.2run-H3-control-04.zip
H3-control-055off770107056.0run-H3-control-05.zip
H3-control-066off750100059.7run-H3-control-06.zip
H3-control-077off760106058.4run-H3-control-07.zip
H3-control-088off760100061.9run-H3-control-08.zip
H3-control-099off76097061.2run-H3-control-09.zip
H3-control-1010off760107057.2run-H3-control-10.zip

Gap = acknowledged payments missing on the standby just before the primary was killed. Recovered = payments the reconciler wrote back (replay on). Lost = acknowledged payments missing at the end. Values are from each run’s result.json, as summarised by the H3 analysis.

What is inside a zip

FileWhat it holds
run.json, result.jsonThe run record: condition, fault, direction, seed, fault time, and the measured result (RTO, RPO, outcome counts).
attempts.jsonlEvery payment attempt the load generator made: send and end time, HTTP status, error, which site answered and the address it reached.
ledger.jsonl, writes.csvEach payment id the client was told succeeded, matched against what the database holds.
cdc.jsonlDebezium change events captured from Kafka (the change log the reconciler replays).
loadgen.json, loadgen.outLoad generator settings (5 payments/s, 210 s, retry window 120 s, seed) and totals.
controller-status.jsonThe FailoverPolicy status at the end of the run: active site, lease epoch, failover history, probe streaks.
reconciliation.jsonThe reconciler’s pass over the change log: which payments were clean, delayed, lost or duplicated.
eks-*.log, eks-db-diagnostics.txtEvidence collected from the clusters during the run: app readiness, database endpoints, pod events.
connect-log.txt, connectors.txtDebezium Kafka Connect log and connector state.
run-summary.promThe same result as Prometheus gauges.

The list is from run A-podkill-06-rerun. The exact file set can differ by condition and fault (condition B has no controller), so check a zip before relying on a file being present.

A-podkill-06 and its repeat. The first attempt (25 October, run-A-podkill-06) was a failed fault injection and is not in the figures; its folder also held stale files from an earlier partition run on 24 October. The figures use the repeat, run-A-podkill-06-rerun (26 October).