docs(ci): the whole restart series, intermittent on an unchanged spec
Validate Helm Charts / Detect changed charts (pull_request) Successful in 4s
Validate Helm Charts / Resource quantities (pull_request) Successful in 9s
Validate Helm Charts / Build keycloak (pull_request) Successful in 4s
Validate Helm Charts / Trivy config keycloak (pull_request) Successful in 10s
Install-test / Install-test keycloak (pull_request) Successful in 2m45s
Validate Helm Charts / Install-test (pull_request) Successful in 2m45s

This commit is contained in:
jklein committed 2026-10-06 11:13:46 +00:00
1 parent 5e47191252
commit d7067abfab
1 file changed
+23 -17
+23 -17
View File
@@ -30,26 +30,32 @@
# first over the database would fail the run. Measured in Gitea PR #87: # first over the database would fail the run. Measured in Gitea PR #87:
# 71.8s from `helm install` to both Ready, 0 restarts - three runs, all # 71.8s from `helm install` to both Ready, 0 restarts - three runs, all
# three 72s and 0 restarts. # three 72s and 0 restarts.
# THE NEXT THREE RUNS WERE NOT THAT, AND THE NUMBERS ARE RECORDED RATHER # THE RUNS OF PR #92 WERE NOT THAT, AND THE NUMBERS ARE RECORDED RATHER
# THAN SMOOTHED (Gitea PR #92, same manifests in all three - the two later # THAN SMOOTHED. Identical pod spec in all four - the later commits on that
# commits change only comments): # branch change comments only:
# run 585: 101s, ONE restart on one of the two pods # run 585: 101s, ONE restart on one of the two pods
# run 590: 82s, 0 restarts # run 590: 82s, 0 restarts
# run 593: 191s, 0 restarts # run 593: 191s, 0 restarts
# So the restart is NOT caused by the pod spec: the fastest and the slowest # run 595: 101s, ONE restart on one of the two pods
# run both had none, and the run that had one sat between them. The first # Three things that are worth more than the average: the restart is
# explanation that offered itself does not survive the third run either - # INTERMITTENT on an unchanged spec (2 of 4), it is always exactly ONE on
# run 585 was slower everywhere (the UNCHANGED postgres fixture took 51.5s # ONE pod, about 35s before that pod reports Ready - and it does not track
# instead of 27.4s), but run 593 was slower still and restarted nothing, so # the runner's speed, which was the first explanation and does not hold:
# "a loaded runner trips the first install" is not what was measured. # the FASTEST (82s) and the SLOWEST (191s) run restarted nothing, and the
# WHAT THE RESTART WAS HAS NOT BEEN ESTABLISHED, and that is the lasting # two that restarted were both 101s.
# finding: the harness dumps container logs only when a run FAILS # WHAT THE RESTART IS HAS NOT BEEN ESTABLISHED, and that is the lasting
# (diagnose() hangs off the EXIT trap behind "RC -ne 0"), and all three runs # finding of the series: the harness dumps container logs only when a run
# passed - A GREEN RUN CANNOT EXPLAIN A RESTART IT REPORTS. Whoever next # FAILS (diagnose() hangs off the EXIT trap behind "RC -ne 0") and all four
# needs that answer has to make the final-state step print the restart # passed - A GREEN RUN CANNOT EXPLAIN A RESTART IT REPORTS. Answering it
# reasons when any counter is above zero. # means making the final-state step print the restart reasons whenever a
# Read "0 restarts" accordingly: an observation about six runs on a runner # counter is above zero; that is a change to ci/run-install-test.sh and it
# of varying speed, not an invariant of this chart. # was deliberately NOT made inside #88.
# The counting stops here on purpose - every further commit adds a run, and
# a comment that chases the tally is wrong at the next push. What is worth
# carrying is the shape, not the tally: "0 restarts" is an observation, not
# an invariant of this chart, and a first install that serializes two
# replicas on a schema migration lock is a plausible place for one - which
# is a hypothesis, stated as one, because nothing here measured it.
# 5. A MOUNTED LOGIN THEME SURVIVES ALL OF THAT (Gitea #88) - the full # 5. A MOUNTED LOGIN THEME SURVIVES ALL OF THAT (Gitea #88) - the full
# argument sits at keycloak.extraVolumes further down, including what it # argument sits at keycloak.extraVolumes further down, including what it
# still does not prove. # still does not prove.