From d6837d98ee241236d0ad1409db1506258a38e2a3 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Sun, 6 Sep 2026 17:42:19 +0200 Subject: [PATCH] SPIKE R-459: the skipped MariaDB conversion is stable, and the trade it implied does not exist Outcome A, qualified. Not B and not C. It does not degrade: 5 of 5 restarts of 12.3 on an 11.6 datadir, readback passed every time, mariadb_upgrade_info unchanged, the entrypoint line never escalated past [Note]. It also never heals - the engine answers 'Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!' on every start and will forever. The trade R-459 was expected to produce is not real. Converting properly SUCCEEDS across the multi-major jump, takes 7 seconds, backs up the system database unasked - and putting 11.6 back afterwards STILL starts and serves the data. So the operator is being handed a cheap correction, not a choice between a correct engine and a reversible one. The exit-code polarity was measured rather than read: 0 means the upgrade IS needed, 1 means it is not. Assuming either the flag name or the polarity would have inverted the headline. And run without credentials the same command returns a confident-looking FATAL ERROR that is an auth failure. R-464: after converting and going back, the entrypoint prints 'MariaDB upgrade not required' on a state the same engine calls an unsupported downgrade. The obvious cheap instrument for R-459 would have been to grep for that line, and it would have reported fine for the broken case. R-463: the PostgreSQL analogue, deliberately NOT measured here. 11 templates, 8 on postgres:16-alpine, register grep for pg_upgrade returns zero. The two engines fail in OPPOSITE directions - MariaDB skips quietly, Postgres refuses to start - so that one cannot hide; it presents as eight apps down at once. No template changed. Teardown all three layers, hub checked rather than asserted, local-lvm 30.53 percent before and after. --- REPORT.md | 255 +++++++++--------- STATUS.md | 46 +++- .../architecture/09-update-architecture.md | 30 +++ .../SPIKE-r459-mariadb-upgrade-2026-09-06.md | 213 +++++++++++++++ .../ev/arm1/entrypoint-upgrade-lines.txt | 6 + .../ev/arm1/mariadb-full.log | 228 ++++++++++++++++ .../ev/arm1/moment3-upgrade-info.txt | 1 + .../ev/arm1/observable2-check.txt | 2 + .../ev/arm1/restart-series.json | 52 ++++ .../r459-spike-2026-09-06/ev/arm2/abort.log | 30 +++ .../r459-spike-2026-09-06/ev/arm2/arm2.json | 47 ++++ .../ev/arm2/mariadb-post-abort.log | 68 +++++ .../ev/arm2/mariadb-to.log | 107 ++++++++ .../ev/arm2/post-abort.txt | 16 ++ .../ev/arm2/scratch-compose.yml | 86 ++++++ .../evidence/E3b/abort-states.json | 14 + .../evidence/E3b/compose-final.log | 183 +++++++++++++ .../evidence/E3b/engine-state.json | 8 + .../evidence/E3b/migration-lines.txt | 1 + .../evidence/E3b/run.log | 15 ++ .../evidence/E3b/to-full.log | 184 +++++++++++++ .../evidence/E3b/to-states.json | 14 + .../evidence/E3b/verdict.json | 33 +++ .../evidence/summary.json | 35 +++ documentation/backlog/OPEN-ITEMS.md | 4 +- documentation/backlog/ROADMAP.md | 2 +- 26 files changed, 1551 insertions(+), 129 deletions(-) create mode 100644 documentation/audits/SPIKE-r459-mariadb-upgrade-2026-09-06.md create mode 100644 documentation/audits/r459-spike-2026-09-06/ev/arm1/entrypoint-upgrade-lines.txt create mode 100644 documentation/audits/r459-spike-2026-09-06/ev/arm1/mariadb-full.log create mode 100644 documentation/audits/r459-spike-2026-09-06/ev/arm1/moment3-upgrade-info.txt create mode 100644 documentation/audits/r459-spike-2026-09-06/ev/arm1/observable2-check.txt create mode 100644 documentation/audits/r459-spike-2026-09-06/ev/arm1/restart-series.json create mode 100644 documentation/audits/r459-spike-2026-09-06/ev/arm2/abort.log create mode 100644 documentation/audits/r459-spike-2026-09-06/ev/arm2/arm2.json create mode 100644 documentation/audits/r459-spike-2026-09-06/ev/arm2/mariadb-post-abort.log create mode 100644 documentation/audits/r459-spike-2026-09-06/ev/arm2/mariadb-to.log create mode 100644 documentation/audits/r459-spike-2026-09-06/ev/arm2/post-abort.txt create mode 100644 documentation/audits/r459-spike-2026-09-06/ev/arm2/scratch-compose.yml create mode 100644 documentation/audits/r459-spike-2026-09-06/evidence/E3b/abort-states.json create mode 100644 documentation/audits/r459-spike-2026-09-06/evidence/E3b/compose-final.log create mode 100644 documentation/audits/r459-spike-2026-09-06/evidence/E3b/engine-state.json create mode 100644 documentation/audits/r459-spike-2026-09-06/evidence/E3b/migration-lines.txt create mode 100644 documentation/audits/r459-spike-2026-09-06/evidence/E3b/run.log create mode 100644 documentation/audits/r459-spike-2026-09-06/evidence/E3b/to-full.log create mode 100644 documentation/audits/r459-spike-2026-09-06/evidence/E3b/to-states.json create mode 100644 documentation/audits/r459-spike-2026-09-06/evidence/E3b/verdict.json create mode 100644 documentation/audits/r459-spike-2026-09-06/evidence/summary.json diff --git a/REPORT.md b/REPORT.md index b960bff1..e69ba49d 100644 --- a/REPORT.md +++ b/REPORT.md @@ -1,172 +1,181 @@ -# REPORT — SPIKE: an upgrade test that runs again (2026-09-06) +# REPORT — SPIKE R-459: is a skipped MariaDB upgrade harmless, and what does fixing it cost? (2026-09-06) *Overwritten each session. Nothing durable lives only here.* -> **C3 FIRST, because everything else is conditional on it.** The negative control — an edge whose TO -> image is `alpine:3.20`, which pulls cleanly and exits immediately — came back **`failed`** -> (`healthy_after: false`, `seed_read_after: false`, `seed_read_before: true`). **The harness can say -> no, so its greens mean something.** It also cost the most wall clock of any edge, 556 s, because a -> negative is only honest if it waits out the full settle window. +> **OUTCOME A, qualified — and the trade this task was commissioned to price DOES NOT EXIST.** +> The skipped conversion is **stable but never self-resolving**. Fixing it costs **7 seconds** and +> does **not** cost the ability to abort, which is what B assumed. It is not C either: the conversion +> **succeeded** across the multi-major jump. ## 1. Confirmed baselines — none had moved | repo | task's baseline | found | |---|---|---| -| app-catalog-felhom.eu | `7b9b9b34a5ee` | `7b9b9b34a5ee` | -| felhom.eu | `417df06f3529` | `417df06f3529` | -| felhom-controller | `bab82c4` (v0.235.0) | **not touched** | +| app-catalog-felhom.eu | `0474ce387e6f` | `0474ce387e6f` | +| felhom.eu | `a1a6c73fe132` | `a1a6c73fe132` | +| felhom-controller | `bab82c471e03` | **not touched** | -Highest `R-` id: **458**, confirmed. Minted **R-459 … R-462**. No version bump, no release, no golden. +Highest `R-` id **462**, confirmed. Minted **R-463**, **R-464**. No version bump, no release. +**The task's §2 table was verified and is exactly right**: four MariaDB apps at the stated pins, and +**no `MARIADB_*` env in any of the 53 templates.** -## 2. The verdict record — all seven edges +## 2. The outcome, and the evidence that assigns it -Full JSON per edge in `documentation/audits/upgrade-spike-2026-09-06/evidence//verdict.json`. +| | | | +|---|---|---| +| **A** | unconverted datadir is benign | **THIS ONE, qualified** — 5 of 5 restarts, no degradation. But the engine says a check is required *every* start, so "benign" holds only as measured: no decay over restarts, one seeded record, over minutes. | +| **B** | converting works, the abort dies with it | **NO.** Converting works; the abort still starts and serves. | +| **C** | converting fails, the jump is too big | **NO.** It succeeded in 7 s and took its own backup first. | -| edge | app | from → to | verdict | data after | **abort** | TO settle | total | -|---|---|---|---|---|---|---|---| -| **C3** | privatebin | `2.0.5` → **`alpine:3.20`** | **failed** | no | starts-and-serves | 421.1 s | 556.0 s | -| C2 | privatebin | `2.0.5` → `2.0.5` | proven | yes | starts-and-serves | 0.1 s | 6.4 s | -| **E1** | privatebin | `1.7.5` → `2.0.5` | **proven** | yes | **starts-and-serves** | 5.2 s | 21.5 s | -| **E2** | docmost | `0.25.3` → `0.95.0` | **proven** | yes | **REFUSES** | 10.7 s | 305.1 s | -| **E3** | bookstack | app `25.02.2`→`26.05.2` + mariadb `11.6`→`12.3` | **proven** | yes | starts-and-serves¹ | 15.7 s | 77.5 s | -| E3a | bookstack | app only, engine held | **proven** | yes | starts-and-serves | 15.7 s | 71.8 s | -| E3b | bookstack | engine only, app held | **proven** | yes | starts-and-serves¹ | 0.2 s | 48.8 s | +## 3. Observable 1 — `mariadb_upgrade_info`, all four moments, verbatim -¹ and §4 is why that is not the good news it looks like. +| moment | state | contents | +|---|---|---| +| 1 | fresh 11.6 datadir | `11.6.2-MariaDB` (14 bytes) | +| 2 | 12.3 started on it, skip logged | **`11.6.2-MariaDB` — unchanged** | +| 3 | after 5 restarts of 12.3 | **`11.6.2-MariaDB` — still unchanged** | +| 4 | comparison arm, after conversion | **`12.3.3-MariaDB`** | -**C1 passed on every edge, including C3.** A fixture that cannot prove itself first proves nothing -after. +The engine serving at moments 2–3 was `12.3.3-MariaDB`, confirmed by `mariadb --version` — so the +mismatch is real and not the wrong container. -## 3. Quoted verbatim +## 4. Observable 2 — the engine's own verdict, invocation, output and exit code -**E2's refusal — the abort of docmost:** +Check mode located in the image, not assumed: **`--check-if-upgrade-is-needed`**. ``` -{"level":"error","context":"DatabaseMigrationService", - "msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"} -{"level":"error","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."} +$ docker exec bookstack-db sh -c 'mariadb-upgrade --check-if-upgrade-is-needed \ + --user=root --password=$MYSQL_ROOT_PASSWORD' +Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! +[exit=0] ``` -**E2's migration, at the TO step** (six such lines, one shown): +After conversion: ``` -{"level":"info","context":"DatabaseMigrationService","msg":"Migration \"20260213T085259-notifications\" executed successfully"} +This installation of MariaDB is already upgraded to 12.3.3-MariaDB. +There is no need to run mariadb-upgrade again. +[exit=1] ``` -**E3/E3b, at the moment MariaDB 12.3 first started on the 11.6 datadir:** +**The two runs establish the exit-code semantics between them — 0 = needed, 1 = not.** Measured, not +read from documentation, and worth stating because the polarity is the reverse of the usual +convention. + +**A false start, recorded because it nearly produced the wrong answer:** without credentials the same +command returns `ERROR 1045 (28000): Access denied … FATAL ERROR: Upgrade failed` with **exit 1** — +an authentication failure wearing the shape of a verdict. → **R-464.** + +## 5. Observable 3 — the restart series: 5 of 5 + +| restart | settled | readback | `upgrade_info` | engine check | entrypoint | +|---|---|---|---|---|---| +| 1–5 of 5 | yes, each | **pass, each** | `11.6.2-MariaDB`, unchanged | `Check required!`, each | `[Note]`, never escalated | + +**It does not degrade. It also never heals.** R-459's hypothesis that the Note might become a Warning +or an Error is **not supported**. + +## 6. Observable 4 — the comparison arm + +Scratch copy of the template **inside the guest** with `MARIADB_AUTO_UPGRADE=1`. **Nothing with +`MARIADB_` in it was committed to the catalog.** + +**The conversion succeeds**, verbatim and in order: ``` -[Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, - but skipped due to $MARIADB_AUTO_UPGRADE setting +[Note] [Entrypoint]: Starting temporary server +[Note] [Entrypoint]: Backing up system database to system_mysql_backup_11.6.2-MariaDB.sql.zst +[Note] [Entrypoint]: Backing up complete +[Note] [Entrypoint]: Starting mariadb-upgrade +[Note] [Entrypoint]: Finished mariadb-upgrade ``` -**E3a, the app half alone: no such line at all.** +**Cost:** `mariadb-upgrade` itself **17:33:24 → 17:33:31 = 7 s**; whole TO step **35.9 s** with it +against **~10.5 s** without → **≈ 25 s of extra startup, once**. **Measured on a nearly empty +database** — it works over system tables rather than row data, so it should scale with table count, +**but this run did not measure that** and 7 s must not be quoted as a fleet figure. -## 4. The two findings +### The decision-relevant fact — §14.6 of the task -**(a) Whether an upgrade can be UNDONE is a property of the app, not of upgrades.** docmost refuses; -privatebin does not. This independently reproduces the Nextcloud finding on a second app **by a -different mechanism** — Nextcloud refused on a version comparison, docmost on its migration ledger. So -`09-update-architecture.md` §4's ruling now rests on two measurements, not one. **And the arc was -carrying an assumption that there is one answer for all 53 apps. There is not.** +**Converting does NOT kill the abort.** With the datadir at `12.3.3-MariaDB`, putting **11.6** back: -**(b) R-459 — a real defect in our own catalog, found by accident.** The bookstack template moves -MariaDB across a major and sets **no `MARIADB_*` env at all**, so the image skips the datadir upgrade -it says it requires. **The cause is assigned, not guessed:** E3a (app half, engine held) produces no -upgrade line; E3 and E3b (both move the engine) produce it. **A bundled edge could never have said -which half** — which is exactly what the decomposition existed for. **It also explains why E3's abort -"worked": the datadir was never converted, so 11.6 could still read it.** Whether that ever breaks is -**not established** and the row says so. +``` +abort: starts-and-serves settled 10.5 s readback: PASS +survived a further restart: Up 25 seconds (healthy), upgrade_info: 12.3.3-MariaDB +``` -## 5. What it cost — measured, for costing the widening +**…but the engine calls that state unsupported, and the entrypoint hides it.** → **R-464**: -| | | +| asked | answer | |---|---| -| successful edge | **6.4 – 305.1 s**, median **71.8 s** | -| failing edge | **556 s** — ~8× a positive | -| 7 edges total | ~18 min harness time + ~35 min build-out and two fixture iterations | -| disk, 3 apps / 11 images | **5.07 GB** images, 6.0 GB guest | -| naive extrapolation to 53 | ~90 GB, ~1 h harness time | +| the entrypoint, every start | `[Note] [Entrypoint]: MariaDB upgrade not required` | +| `mariadb-upgrade --check-if-upgrade-is-needed` | `FATAL ERROR: Version mismatch (12.3.3-MariaDB -> 11.6.2-MariaDB): Trying to downgrade from a higher to lower version is not supported!` | -**The extrapolation understates it by an order of magnitude, and that is the finding.** Two of three -apps needed a bespoke seed route, one needed two attempts and a discarded approach, and one can only -ever be half-proven. **Fixture time scales with apps and does not amortise.** → **R-462**, which asks -the operator for scope rather than proposing one. +**So "the abort works" is an observation that it started and served — not a claim the datadir is +sound.** One restart cycle, one seeded record. Saying more would repeat the mistake this task exists +to correct. -## 6. Apps with no non-browser seed route +## 7. The harness change, and E3b re-run showing it -**None was fully blocked; one is half-blocked.** privatebin and docmost have clean HTTP APIs. -**BookStack has neither an API token nor a usable HTTP login headlessly** — its template's `https` -`APP_URL` makes the session cookies `secure`, so curl over plain http gets **419 Page Expired** on -every login, which looks exactly like a wrong password. Its database half is provable through -`php artisan` (seed and readback are *different* commands, and the readback runs its own negative -control on every call). **Its FILE half cannot be seeded headlessly at all** → **R-460**. Nothing was -planted by hand anywhere. +`upgrade-test.py` gained **`engine_state_after`**, reported **beside** the verdict and never folded +into it — an unconverted datadir is not *known* to be a failure, so a verdict that said so would +encode an unproven judgement. E3b re-run: -## 7. Evidence, copied off after EACH edge +```json +"verdict": "proven", +"engine_state_after": {"bookstack-db": { + "image": "mariadb:12.3", + "answer": "11.6.2-MariaDB| Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! [exit=0]"}} +``` -`felhom.eu/documentation/audits/upgrade-spike-2026-09-06/evidence/` — 48 files, 340 KB, pulled to -DooPlex after each edge and again at the end, before any teardown. Scanned for secrets before commit: -no token, no password, no generated key. The only `spike-*` strings are seeded account names from a -guest that no longer exists. +**The exact thing the harness was blind to, now visible next to a green verdict.** A PostgreSQL probe +is included; it has **never run against a real Postgres major** (→ R-463). -## 8. Teardown — all three layers - -| layer | result | -|---|---| -| **1 — machine** | guest **9401 destroyed**; `pct list` shows only 9201. `scratch-upg` storage **removed**. Downloaded LXC template deleted. | -| **2 — host** | `local-lvm` **30.50 % before and after — never touched**, which was the whole point of siting the guest off it. `local` 19 595 164 → 19 605 084 KiB (+9.7 MB). `pct fstrim 9401` before destroy: **52.8 GiB trimmed**. | -| **3 — hub** | **Checked, not asserted:** `/hosts` lists exactly `demo-felhom-8363b5` and `demo-hp-bb76ea`; 0 customers created. **This run created no customer, no appliance and no host record.** | - -**No felhom-controller was in the path at any point.** Raw `docker compose` throughout. - -## 9. Register — 203 open before, 206 after; closed 167 → 168 +## 8. Register — 206 open before, 208 after; closed 168, unchanged | row | disposition | |---|---| -| **R-449** | **CLOSED** — harness built, run, and proven by a red negative control | -| **R-459** | OPENED, P2-MEDIUM — the skipped MariaDB datadir upgrade in our own bookstack template. *CC measures the consequence, VIKTOR rules on a fleet-wide env change* | -| **R-460** | OPENED, P3-LOW, CC — bookstack's file half is unprovable headlessly | -| **R-461** | OPENED, P3-LOW, CC — `target-selection.md` names a venue that does not exist and fences a fixture that is gone | -| **R-462** | OPENED, P2-MEDIUM — the widening, costed with real numbers. *VIKTOR rules on scope* | +| **R-459** | **NARROWED, P2 → P3, WAITING-ON-OPERATOR.** Consequence measured; the expected trade does not exist. The fleet-wide env change remains the operator's call (4 apps). *VIKTOR rules, CC implements* | +| **R-463** | **OPENED**, P2-MEDIUM, CC — the PostgreSQL analogue. **11 templates, 8 on `postgres:16-alpine`**; register grep for `pg_upgrade`/"postgres major" returned **0**, confirmed twice. **Deliberately not measured here.** The two engines fail in **opposite** directions: MariaDB skips quietly, Postgres **refuses to start** — so this one cannot hide, it presents as eight apps down at once | +| **R-464** | **OPENED**, P3-LOW, CC — `MariaDB upgrade not required` is printed on an unsupported downgrade, so that line cannot be a soundness signal. Same class as "presence is not success" and R-443's HTTP 200 over a crash-looping app | -## 10. The capability map was NOT edited, and that is deliberate +## 9. Teardown — three layers -**This run measured apps, not the product.** Nothing the platform can do changed: no controller code, -no version, no behaviour. Editing the map reflexively would record a capability the product did not -gain. Said here rather than left silent. +| layer | result | +|---|---| +| **1 — machine** | guest **9402 destroyed**; `pct list` shows only 9201. `scratch-r459` **removed**. Downloaded template deleted. | +| **2 — host** | **`local-lvm` 30.53 % before and after — never touched.** `local` 19 630 088 → 19 631 740 KiB (+1.6 MB). `pct fstrim 9402`: **35.9 GiB trimmed**. Guest peak 3.2 GB / 2.10 GB images. | +| **3 — hub** | **Checked, not asserted:** `/hosts` = exactly `demo-felhom-8363b5`, `demo-hp-bb76ea`; **0 customers**. **This run created no customer, no appliance, no host record.** | -## 11. Claims in the task that turned out to be wrong, named +Evidence off after **each arm**, before teardown: `documentation/audits/r459-spike-2026-09-06/` +(20 files, 164 KB). Scanned for secrets before commit: clean. -1. **§11's venue is stale, in two ways.** **`/mnt/nvme-1tb` does not exist** — the 1 TB NVMe is at - `/mnt/hdd_1`, the enrolled user-data drive, i.e. the same disk under a different path; the scratch - storage went at *its* root, honouring the rule's reason. And **`drill-r50` (VM 300) is gone** — - `qm list` returns nothing on demo-hp, so that fence protects nothing today. → **R-461**. -2. **§6's edges were all real and all resolvable.** Every one of the eleven images was verified against - its registry before use; none had to be substituted. The task asked to say so if any had. -3. **§8 expected bookstack to be "the one most likely to be hard" — correct, and for a reason the task - did not name.** The blocker was not the missing API token; it was that the template's `https` - `APP_URL` makes the session cookies `secure`, so no http login can ever work. Two independent - blockers, and only one was anticipated. -4. **§10.2's "gate on each command's own exit code" had to be broken once, deliberately and in the - open.** `bookstack:reset-mfa` exits **1 for a user it found and 1 for one it did not**, so the exit - code carries no information; the discriminator is the output, required positive with the not-found - sentence required absent. Stated in the fixture's docstring rather than done quietly. -5. **§9's verdict shape needed no change** and is now recorded in `09-update-architecture.md` §6 as the - contract Slice 6 carries. +## 10. Claims in the task that turned out to be wrong, named -## 12. Observations — noticed, documented, NOT acted on +1. **§11's venue is still stale, exactly as R-461 records. `/mnt/nvme-1tb` does not exist** — the NVMe + is at `/mnt/hdd_1`. The scratch storage went at *its* root, honouring the rule's reason; `local-lvm` + read 30.53 % before and after. **`drill-r50` (VM 300) still does not exist** — `qm list` returns + nothing. Both were already filed as R-461 yesterday; this run is the second session to work around + them, which is the cost that row predicts. +2. **§6 Observable 2 assumed a check mode would exist but told me not to assume its flag — correct, + and the caution earned its place.** The flag is `--check-if-upgrade-is-needed`, and **its exit-code + polarity is the reverse of the usual convention** (0 = work needed). Assuming either the name or the + polarity would have inverted the headline. +3. **§7's Outcome B was the expected result and it is FALSE.** The abort survives a real conversion. + The task was right to name three outcomes and to say "do not steer" — the run steered nowhere and + landed outside the shape the brief most anticipated. +4. **§9's Postgres numbers were exact**: 11 templates, 8 on `postgres:16-alpine`, register grep 0. +5. **§4.7's pointer was right** — `mariadb_upgrade_info` was already visible in the persistence-sweep + probe, and it is the observable that carried this task. -1. **`docker compose logs` only shows containers that currently exist**, so the abort erases the TO - step's output from any later capture — **the single most important line of this run survived only - because it had already been extracted.** Fixed mid-run (`to-full.log` is now written at the TO - step) and E3 re-run to get clean evidence. **FILED: R-449's closure records it; the harness change - is committed.** **NOT-A-FINDING as a separate row: it is a harness bug that was found and fixed - inside the same session, with the fix committed and the affected edge re-measured — there is no - residue for a row to track.** -2. **A negative edge costs ~8× a positive.** **NOT-A-FINDING: it is a measured cost recorded in R-462, - which is where the widening will be scheduled from; a second row would duplicate it.** -3. **`bookstack:reset-mfa`'s help says `[options]` but a positional argument is rejected with "No - arguments expected"** in 25.02.2 — correct behaviour that reads as a missing feature. - **NOT-A-FINDING: it is upstream's interface, not ours, and it costs us nothing now that the fixture - documents it.** +## 11. Observations — noticed, documented, NOT acted on + +1. **`mariadb-upgrade` without credentials returns a confident-looking failure that is an auth error.** + **FILED: R-464**, which carries it as the second half of the row. +2. **The conversion leaves its own backup in the datadir** (`system_mysql_backup_*.sql.zst`, 622 437 + bytes here), which any volume-level backup will then copy. **NOT-A-FINDING: it is upstream's + deliberate safety net and it is harmless; recording it in the audit is enough to stop the next + person reporting an unexplained file.** +3. **Python heredocs do not survive three shells (`ssh` → `pct exec` → `bash`).** Two scripts had to be + written locally and pushed as files. **NOT-A-FINDING: it is a working technique, not a property of + the product, and it is now written into the audit where the next session will meet it.** diff --git a/STATUS.md b/STATUS.md index 76d217ee..3efa9360 100644 --- a/STATUS.md +++ b/STATUS.md @@ -1,9 +1,14 @@ # STATUS — what works, what's broken, what's next -**Updated 2026-09-06 (second pass) — I built a machine that upgrades a real app with real data in it +**Updated 2026-09-06 (third pass) — I chased down the BookStack database problem I found this +morning. Good news: it does not get worse, and fixing it costs seven seconds and loses us nothing. +The catch I expected — that fixing it would stop us being able to go back — turned out not to be +real. TWO THINGS NEED YOU: item 11 (how wide to take the upgrade testing) and item 12 (one small +yes/no on the database setting).** + +**Earlier 2026-09-06 (second pass) — I built a machine that upgrades a real app with real data in it and then asks the app whether the data is still there. Three apps, five real upgrades: the data -survived every time. It also found a genuine problem in our own BookStack setup. ONE NEW THING NEEDS -YOU: item 11 — how wide should I take this?** +survived every time. It also found a genuine problem in our own BookStack setup.** **Earlier 2026-09-06 — a restart no longer changes which version an app runs. Fixes still arrive every 15 minutes, and a broken app definition still repairs itself. Only the Update button moves a @@ -36,7 +41,7 @@ not an evening's work.** *This section is allowed to be longer than one screen, and each item says what happens if you do nothing.* -1. **One thing is waiting on you: item 11 (how wide to take the upgrade testing).** Item 4 (the Hetzner e-mails) is answered and is being handled in a separate session. Item 7 — the safety-copy decision — is the one open question, and it is **not urgent any more**: the thing that made it urgent was that a restart could upgrade an app behind your back, and as of today it cannot. Item 10 is new and needs nothing from you. Item 5's alarm mail can now be ignored for good. Otherwise: Both problems the overnight test found are fixed and proven on +1. **Two things are waiting on you: item 11 (how wide to take the upgrade testing) and item 12 (a small yes/no about the database setting — I have measured both costs).** Item 4 (the Hetzner e-mails) is answered and is being handled in a separate session. Item 7 — the safety-copy decision — is the one open question, and it is **not urgent any more**: the thing that made it urgent was that a restart could upgrade an app behind your back, and as of today it cannot. Item 10 is new and needs nothing from you. Item 5's alarm mail can now be ignored for good. Otherwise: Both problems the overnight test found are fixed and proven on the real machines: - the background job that could delete a live restore's lock now waits its turn — and the check that finds the next one like it is a test, not a comment, so it cannot come back quietly; @@ -231,6 +236,39 @@ nothing.* **If you do nothing:** nothing breaks. The machine is built and committed, so it does not go stale, and the BookStack problem is written down and waiting either way. +12. **Shall I tell the database engine to finish its own conversion? One yes/no. It affects four + apps and I have measured both sides.** + + **The background, in one line.** This morning I found that when BookStack's database engine moves + to a new major version, the engine says the conversion it needs is being **skipped** — and then + works anyway. + + **What I measured this afternoon.** + - **It does not get worse.** I restarted it five times. The app answered correctly all five + times, and nothing changed for the worse. + - **But it never fixes itself either.** Every single time it starts, the engine says the check is + still needed. It will say that forever. + - **Fixing it takes seven seconds.** The engine backs itself up first, does the conversion, done. + - **And the catch I was worried about is not there.** I expected that converting properly would + mean we could no longer go back to the old version. **We still can** — I tried it, and the app + came back with its data. + + **So this is not the difficult trade I thought I would be bringing you. It is a cheap tidy-up.** + + - **Yes, turn it on.** Four apps get a correctly-converted database — BookStack, Kimai, Nextcloud + and RomM. Costs seven seconds the one time each of them moves a major version. **This is what I + would do.** + - **No, leave it.** Nothing breaks today. The engine keeps saying it wants a check, on every + start, indefinitely. + + **One honest limit on my "yes".** I proved the app's normal use keeps working. I did **not** test + every database feature on an unconverted engine — so I can tell you it has not broken, not that + nothing can. That is exactly why leaving it alone is a real choice and not just laziness. + + **If you do nothing:** nothing breaks and nothing is at risk this week. Only BookStack has + actually moved a major version so far; the other three will land in the same place when their + turn comes. I have not changed any template — this is your call, not a quiet edit. + 8. **`demo-hp`'s network setup does not match our own notes** (R-338) — the machine works, the page is wrong, or the other way round. **If you do nothing:** the page keeps misleading the next session, as it misled one by an hour. diff --git a/documentation/architecture/09-update-architecture.md b/documentation/architecture/09-update-architecture.md index f4daec9e..f0aa4771 100644 --- a/documentation/architecture/09-update-architecture.md +++ b/documentation/architecture/09-update-architecture.md @@ -299,6 +299,36 @@ measure it" and "it does not work" are different facts, and only one of them is **`migration_observed` is a quoted line, never an inference from timing** — the value of both the Nextcloud and the docmost findings was the exact sentence the app printed. +### Database engines under an upgrade — MEASURED 2026-09-06 + +**The arc's standing rule that an engine change gets its OWN edge now has measured evidence behind +it**, and the evidence is stronger than the rule's original argument. The rule was justified by +*"two migrations behind one edge is an unreadable failure when it breaks"* — a readability argument. +What was measured is that **an engine change can be applied and silently NOT happen**, which the +app-half edge cannot produce and which no amount of readability would have surfaced: + +- `SPIKE-upgrade-test-2026-09-06.md` §4 — MariaDB 12.3 starts on an 11.6 datadir, logs that the + conversion it requires was **skipped**, and serves. **Assigned to the engine half by decomposition:** + the app half alone produces no such line. +- `SPIKE-r459-mariadb-upgrade-2026-09-06.md` — it is **stable but never self-resolving** (5 of 5 + restarts, no degradation, and the engine says `Check required!` every time, forever). Converting + properly **succeeds**, costs **7 s**, takes its own system-database backup, and **does not** cost the + ability to abort. **The trade that was expected here does not exist.** + +**Two rules for anything this arc builds around a database engine:** + +1. **Ask the engine, not the log.** MariaDB's entrypoint prints `MariaDB upgrade not required` on an + unsupported **downgrade**; `mariadb-upgrade --check-if-upgrade-is-needed` names it exactly + (**R-464**). A cheap instrument built on the log line would report "fine" for the broken case. +2. **The two engines fail in opposite directions, so one check will not do.** MariaDB starts anyway + and skips quietly; **PostgreSQL refuses to start** on a datadir from an older major, and the image + performs no `pg_upgrade`. Eleven templates carry PostgreSQL and **eight sit on `postgres:16-alpine`** + (**R-463**). + +**And an engine-state field belongs BESIDE a verdict, never inside it.** `upgrade-test.py` reports +`engine_state_after` next to `verdict`, because an unconverted datadir is not *known* to be a failure +and a verdict that said so would encode an unproven judgement. + **The rule slice 6 inherits, recorded now while it is cheap:** an engine change gets its own edge, never bundled with an app version bump. `bookstack` moved the application *and* MariaDB 11.6 → 12.3 in one commit (`0b73e5e`); that is two migrations behind one edge, and an unreadable failure when it diff --git a/documentation/audits/SPIKE-r459-mariadb-upgrade-2026-09-06.md b/documentation/audits/SPIKE-r459-mariadb-upgrade-2026-09-06.md new file mode 100644 index 00000000..cac2a99d --- /dev/null +++ b/documentation/audits/SPIKE-r459-mariadb-upgrade-2026-09-06.md @@ -0,0 +1,213 @@ +# SPIKE — is a skipped MariaDB upgrade harmless, and what does fixing it cost? (2026-09-06) + +> **THE ANSWER IN ONE SENTENCE: the skipped conversion is STABLE but never self-resolving — the engine +> says a check is required every single time it starts and will go on saying it forever — and fixing +> it costs SEVEN SECONDS and does NOT cost the ability to go back, which is the trade this task was +> commissioned to price and which turns out not to exist.** +> +> **OUTCOME A, qualified.** Not **B**: converting did **not** kill the abort. Not **C**: the conversion +> **succeeded** across the multi-major jump. +> +> **AND ONE NEW INSTANCE OF THIS PROJECT'S MOST-REPEATED CLASS.** After converting and going back, +> MariaDB's entrypoint prints **`MariaDB upgrade not required`** — reassuring, and it is *not* a +> statement that the state is sound. Asked properly, the same engine answers **`FATAL ERROR: Version +> mismatch (12.3.3-MariaDB -> 11.6.2-MariaDB): Trying to downgrade from a higher to lower version is +> not supported!`** **R-464.** + +**Class: spike.** No template changed, no controller code, no customer box. A throwaway LXC (9402 on +`demo-hp`), destroyed at the end. **Four apps carry MariaDB — bookstack, kimai, nextcloud, romm — and +none of them was touched.** + +--- + +## 1. What was already established, and is not re-derived here + +R-459 (2026-09-06): on the catalog's own transition `0b73e5e`, MariaDB 12.3 starting on an 11.6 +datadir logs that the conversion it requires is **skipped**, because +`templates/bookstack/docker-compose.yml` sets no `MARIADB_*` env. The cause was assigned by +decomposition — the app half alone produces no such line. **R-459 explicitly did not establish whether +that ever breaks.** That is this document. + +## 2. Observable 1 — `mariadb_upgrade_info`, at all four moments, verbatim + +The file in the datadir recording the version that last completed `mariadb-upgrade`. + +| moment | state | file contents, **verbatim** | +|---|---|---| +| **1** | fresh 11.6 datadir | `11.6.2-MariaDB` (14 bytes) | +| **2** | 12.3 has started on it and logged the skip | **`11.6.2-MariaDB` — unchanged** | +| **3** | after **5** restarts of 12.3 on it | **`11.6.2-MariaDB` — still unchanged** | +| **4** | comparison arm, after a conversion actually ran | **`12.3.3-MariaDB`** | + +**The engine serving at moment 2 and 3 was `12.3.3-MariaDB`** (`mariadb --version`), so the mismatch +is between what is running and what the datadir records — not an artefact of the wrong container. + +## 3. Observable 2 — the engine's own verdict, and its exit-code semantics MEASURED not assumed + +The check mode was found in the image rather than guessed: `--check-if-upgrade-is-needed`. + +**On the unconverted datadir:** + +``` +$ mariadb-upgrade --check-if-upgrade-is-needed --user=root --password=$MYSQL_ROOT_PASSWORD +Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! +[exit=0] +``` + +**After the conversion (comparison arm):** + +``` +This installation of MariaDB is already upgraded to 12.3.3-MariaDB. +There is no need to run mariadb-upgrade again. +[exit=1] +``` + +**Those two runs establish the exit-code semantics between them — 0 means the upgrade IS needed, 1 +means it is not.** That is a measured control rather than a reading of the documentation, and it +matters because the polarity is the opposite of the usual convention. + +**A false start worth recording:** run without credentials the command answers +`ERROR 1045 (28000): Access denied … FATAL ERROR: Upgrade failed` with exit 1 — which looks exactly +like a verdict and is an authentication failure. **Taken at face value it would have produced the +wrong answer with the right-looking exit code.** + +## 4. Observable 3 — it does not degrade. 5 of 5. + +R-459 suggested watching for the Note to become a Warning or an Error. **It never did.** + +| restart | settled | readback | `mariadb_upgrade_info` | engine check | entrypoint line | +|---|---|---|---|---|---| +| 1 / 5 | yes | **pass** | `11.6.2-MariaDB` | `Check required!` | `[Note]` unchanged | +| 2 / 5 | yes | **pass** | `11.6.2-MariaDB` | `Check required!` | `[Note]` unchanged | +| 3 / 5 | yes | **pass** | `11.6.2-MariaDB` | `Check required!` | `[Note]` unchanged | +| 4 / 5 | yes | **pass** | `11.6.2-MariaDB` | `Check required!` | `[Note]` unchanged | +| 5 / 5 | yes | **pass** | `11.6.2-MariaDB` | `Check required!` | `[Note]` unchanged | + +**5 of 5 restarts, readback passed each time.** The severity never escalated and the record never +moved. + +**So the state is STABLE — and permanently incomplete.** It does not decay, and it does not heal. +**"It has not broken" and "it is fine" remain different claims**, and §8 says exactly which one this +run supports. + +## 5. Observable 4 — the comparison arm, and the trade that turned out not to exist + +Same edge, in a **scratch copy of the template inside the guest** with `MARIADB_AUTO_UPGRADE=1`. +**Nothing with `MARIADB_` in it was committed.** + +### 5.1 The conversion SUCCEEDS — so this is not Outcome C + +MariaDB's own guidance is one major at a time and our jump crosses several, so failure was a live +possibility. It did not fail. The entrypoint, verbatim and in order: + +``` +[Note] [Entrypoint]: Starting temporary server +[Note] [Entrypoint]: Temporary server started. +[Note] [Entrypoint]: Backing up system database to system_mysql_backup_11.6.2-MariaDB.sql.zst +[Note] [Entrypoint]: Backing up complete +[Note] [Entrypoint]: Starting mariadb-upgrade +[Note] [Entrypoint]: Finished mariadb-upgrade +[Note] [Entrypoint]: Stopping temporary server +``` + +**It takes its own backup first**, unasked: `system_mysql_backup_11.6.2-MariaDB.sql.zst`, 622 437 +bytes, left in the datadir. + +### 5.2 What it costs — 7 seconds + +| | | +|---|---| +| `Starting mariadb-upgrade` → `Finished mariadb-upgrade` | **17:33:24 → 17:33:31 = 7 s** | +| whole TO step, wall clock, **with** conversion | **35.9 s** | +| whole TO step **without** it (arm 1) | ~10.5 s settle | +| net cost | **≈ 25 s of extra startup, once** | + +**MEASURED ON A NEARLY EMPTY DATABASE, and that qualification is load-bearing.** `mariadb-upgrade` +works over system tables and table metadata rather than row data, so it should scale with the number +of tables rather than their size — **but this run did not measure that**, and 7 s must not be quoted +as a fleet figure. + +### 5.3 THE DECISION-RELEVANT FACT: converting does NOT kill the abort + +This is what the arm existed for. R-459's sharpest observation was that E3's abort "worked" only +because nothing had been converted — so the expectation was that a real conversion would end it. + +**It did not.** With the datadir converted to `12.3.3-MariaDB`, putting MariaDB **11.6** back: + +``` +abort: starts-and-serves settled in 10.5 s readback: PASS +``` + +and it survived a further restart (`Up 25 seconds (healthy)`, `mariadb_upgrade_info: 12.3.3-MariaDB`). + +**So the trade the operator was to be asked to rule on — a correct engine you cannot go back from, +versus a possibly-incorrect one you can — DOES NOT EXIST as stated.** You can have both. + +### 5.4 …but the engine says that going back is unsupported, and the entrypoint hides it + +**R-464, and it is the same class this whole arc keeps meeting.** After the abort: + +| who is asked | what it says | +|---|---| +| **the entrypoint**, on every start | `[Note] [Entrypoint]: MariaDB upgrade not required` | +| **`mariadb-upgrade --check-if-upgrade-is-needed`** | `FATAL ERROR: Version mismatch (12.3.3-MariaDB -> 11.6.2-MariaDB): Trying to downgrade from a higher to lower version is not supported!` | + +The entrypoint compares the datadir's recorded version against its own and concludes there is nothing +to *do*. **That is true, and it is not a statement that the state is sound.** Anyone building a health +signal on that line would build it on a sentence that is emitted just as cheerfully for an unsupported +downgrade. + +**So "the abort works" is an OBSERVATION that it started and served, not a claim that the resulting +datadir is sound.** It was exercised for one restart cycle with one seeded record. Saying more than +that would repeat the mistake this document exists to correct. + +## 6. Which outcome the evidence assigns + +| | | | +|---|---|---| +| **A** | the unconverted datadir is benign | **THIS ONE, qualified.** Nothing degraded over 5 of 5 restarts. **But the engine says a check is required every time**, so "benign" holds only in the sense measured: no degradation over restarts, with one seeded record, over minutes. | +| **B** | converting works and the abort dies with it | **NO.** Converting works; the abort still starts and serves (§5.3). The trade does not exist. | +| **C** | converting fails, the jump is too big | **NO.** It succeeded, in 7 s, taking its own backup first. | + +**What is still NOT established, and must not be read past:** whether any specific MariaDB *feature* +misbehaves on unconverted system tables. This run exercised BookStack's normal read/write path only. +Establishing that is a different piece of work and is not smuggled in here. + +## 7. The four apps, and why three of them were left alone + +| app | engine pin | has it moved a major? | +|---|---|---| +| **bookstack** | `mariadb:12.3` | **yes** — `11.6 → 12.3`, the edge measured here | +| kimai | `mariadb:11.6` | no | +| nextcloud | `mariadb:11.6` | no | +| romm | `mariadb:11.4` | no | + +**Only bookstack has an edge to measure.** The other three carry the same engine and the same absent +`MARIADB_*` env, so **they will land in exactly this state the day their pin moves a major** — which +is the reason this is a fleet decision and not one template's problem. Naming them is the right +treatment; measuring them today would measure nothing. + +## 8. Cost of the run, and teardown — three layers + +Guest **9402 `r459-spike`**, Debian 13, disk on the NVMe dir storage **at its root**, deliberately off +`local-lvm`. + +| layer | result | +|---|---| +| **1 — machine** | guest **destroyed**; `pct list` shows only 9201. `scratch-r459` storage **removed**. Downloaded LXC template deleted. | +| **2 — host** | **`local-lvm` 30.53 % before and after — never touched.** `local` 19 630 088 → 19 631 740 KiB (+1.6 MB). `pct fstrim 9402` before destroy: **35.9 GiB trimmed**. Guest peak: 3.2 GB, of which 2.10 GB images. | +| **3 — hub** | **Checked, not asserted:** `/hosts` lists exactly `demo-felhom-8363b5` and `demo-hp-bb76ea`; **0 customers.** This run created no customer, no appliance and no host record. | + +Evidence was copied off **after each arm**, before any teardown: +`documentation/audits/r459-spike-2026-09-06/`. + +## 9. Observations — noticed, documented, not acted on + +1. **`mariadb-upgrade` without credentials returns a confident-looking failure that is an auth error.** + Recorded in §3 because it nearly produced the wrong answer with a plausible exit code. +2. **The conversion leaves its own backup in the datadir** (`system_mysql_backup_*.sql.zst`, 622 KB + here). Harmless, and it will be picked up by any backup that copies the volume — worth knowing + before someone reports an unexplained file. +3. **Three shells deep (`ssh` → `pct exec` → `bash` → heredoc), Python heredocs are not survivable.** + Two scripts had to be written locally and pushed as files. Not a finding about the product; a + working note that will save the next session ten minutes. diff --git a/documentation/audits/r459-spike-2026-09-06/ev/arm1/entrypoint-upgrade-lines.txt b/documentation/audits/r459-spike-2026-09-06/ev/arm1/entrypoint-upgrade-lines.txt new file mode 100644 index 00000000..4daf5fa9 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/ev/arm1/entrypoint-upgrade-lines.txt @@ -0,0 +1,6 @@ +2026-09-06 17:28:52+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting +2026-09-06 17:30:23+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting +2026-09-06 17:30:39+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting +2026-09-06 17:30:55+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting +2026-09-06 17:31:10+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting +2026-09-06 17:31:26+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting diff --git a/documentation/audits/r459-spike-2026-09-06/ev/arm1/mariadb-full.log b/documentation/audits/r459-spike-2026-09-06/ev/arm1/mariadb-full.log new file mode 100644 index 00000000..3079812e --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/ev/arm1/mariadb-full.log @@ -0,0 +1,228 @@ +2026-09-06 17:28:52+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:28:52+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB +2026-09-06 17:28:52+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2026-09-06 17:28:52+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:28:52+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting +2026-09-06 17:28:52 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid YU5V3o/do3XNBiwYeImQupAmW7Q= as process 1 +2026-09-06 17:28:52 0 [Note] InnoDB: Compressed tables use zlib 1.3 +2026-09-06 17:28:52 0 [Note] InnoDB: Number of transaction pools: 1 +2026-09-06 17:28:52 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +2026-09-06 17:28:52 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup). +create_uring failed: falling back to libaio +2026-09-06 17:28:52 0 [Note] InnoDB: Using Linux native AIO +2026-09-06 17:28:52 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m +2026-09-06 17:28:52 0 [Note] InnoDB: Completed initialization of buffer pool +2026-09-06 17:28:52 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +2026-09-06 17:28:52 0 [Note] InnoDB: End of log at LSN=1160730 +2026-09-06 17:28:52 0 [Note] InnoDB: Opened 3 undo tablespaces +2026-09-06 17:28:52 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +2026-09-06 17:28:52 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +2026-09-06 17:28:52 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +2026-09-06 17:28:52 0 [Note] InnoDB: log sequence number 1160730; transaction id 2278 +2026-09-06 17:28:52 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool +2026-09-06 17:28:52 0 [Note] Plugin 'FEEDBACK' is disabled. +2026-09-06 17:28:52 0 [Note] Plugin 'wsrep-provider' is disabled. +2026-09-06 17:28:52 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:28:52 +2026-09-06 17:28:53 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'. +2026-09-06 17:28:53 0 [Note] Server socket created on IP: '::', port: '3306'. +2026-09-06 17:28:53 0 [Note] mariadbd: Event Scheduler: Loaded 0 events +2026-09-06 17:28:53 0 [Note] mariadbd: ready for connections. +Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +2026-09-06 17:28:59 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication) +2026-09-06 17:29:26 12 [Warning] Access denied for user 'root'@'localhost' (using password: NO) +2026-09-06 17:29:27 13 [Warning] Access denied for user 'root'@'localhost' (using password: NO) +2026-09-06 17:30:22 0 [Note] mariadbd (initiated by: unknown): Normal shutdown +2026-09-06 17:30:22 0 [Note] InnoDB: FTS optimize thread exiting. +2026-09-06 17:30:22 0 [Note] InnoDB: Starting shutdown... +2026-09-06 17:30:22 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool +2026-09-06 17:30:22 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 17:30:22 +2026-09-06 17:30:22 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1" +2026-09-06 17:30:22 0 [Note] Shutdown completed; log sequence number 2305390; transaction id 2925 +2026-09-06 17:30:22 0 [Note] mariadbd: Shutdown complete +2026-09-06 17:30:22+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:30:23+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB +2026-09-06 17:30:23+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2026-09-06 17:30:23+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:30:23+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting +2026-09-06 17:30:23 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid jXEYCniDCNP3oAFD2yLxNlKUdsc= as process 1 +2026-09-06 17:30:23 0 [Note] InnoDB: Compressed tables use zlib 1.3 +2026-09-06 17:30:23 0 [Note] InnoDB: Number of transaction pools: 1 +2026-09-06 17:30:23 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +2026-09-06 17:30:23 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup). +create_uring failed: falling back to libaio +2026-09-06 17:30:23 0 [Note] InnoDB: Using Linux native AIO +2026-09-06 17:30:23 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m +2026-09-06 17:30:23 0 [Note] InnoDB: Completed initialization of buffer pool +2026-09-06 17:30:23 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +2026-09-06 17:30:23 0 [Note] InnoDB: End of log at LSN=2305390 +2026-09-06 17:30:23 0 [Note] InnoDB: Opened 3 undo tablespaces +2026-09-06 17:30:23 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +2026-09-06 17:30:23 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +2026-09-06 17:30:23 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +2026-09-06 17:30:23 0 [Note] InnoDB: log sequence number 2305390; transaction id 2925 +2026-09-06 17:30:23 0 [Note] Plugin 'FEEDBACK' is disabled. +2026-09-06 17:30:23 0 [Note] Plugin 'wsrep-provider' is disabled. +2026-09-06 17:30:23 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool +2026-09-06 17:30:23 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:30:23 +2026-09-06 17:30:25 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'. +2026-09-06 17:30:25 0 [Note] Server socket created on IP: '::', port: '3306'. +2026-09-06 17:30:25 0 [Note] mariadbd: Event Scheduler: Loaded 0 events +2026-09-06 17:30:25 0 [Note] mariadbd: ready for connections. +Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +2026-09-06 17:30:27 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication) +2026-09-06 17:30:38 0 [Note] mariadbd (initiated by: unknown): Normal shutdown +2026-09-06 17:30:38 0 [Note] InnoDB: FTS optimize thread exiting. +2026-09-06 17:30:38 0 [Note] InnoDB: Starting shutdown... +2026-09-06 17:30:38 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool +2026-09-06 17:30:38 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 17:30:38 +2026-09-06 17:30:38 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1" +2026-09-06 17:30:38 0 [Note] Shutdown completed; log sequence number 2305390; transaction id 2929 +2026-09-06 17:30:38 0 [Note] mariadbd: Shutdown complete +2026-09-06 17:30:38+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:30:38+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB +2026-09-06 17:30:38+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2026-09-06 17:30:38+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:30:39+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting +2026-09-06 17:30:39 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid E8rI65F86gWbsjfetxKxWEIBksE= as process 1 +2026-09-06 17:30:39 0 [Note] InnoDB: Compressed tables use zlib 1.3 +2026-09-06 17:30:39 0 [Note] InnoDB: Number of transaction pools: 1 +2026-09-06 17:30:39 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +2026-09-06 17:30:39 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup). +create_uring failed: falling back to libaio +2026-09-06 17:30:39 0 [Note] InnoDB: Using Linux native AIO +2026-09-06 17:30:39 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m +2026-09-06 17:30:39 0 [Note] InnoDB: Completed initialization of buffer pool +2026-09-06 17:30:39 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +2026-09-06 17:30:39 0 [Note] InnoDB: End of log at LSN=2305390 +2026-09-06 17:30:39 0 [Note] InnoDB: Opened 3 undo tablespaces +2026-09-06 17:30:39 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +2026-09-06 17:30:39 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +2026-09-06 17:30:39 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +2026-09-06 17:30:39 0 [Note] InnoDB: log sequence number 2305390; transaction id 2925 +2026-09-06 17:30:39 0 [Note] Plugin 'FEEDBACK' is disabled. +2026-09-06 17:30:39 0 [Note] Plugin 'wsrep-provider' is disabled. +2026-09-06 17:30:39 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool +2026-09-06 17:30:39 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:30:39 +2026-09-06 17:30:40 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'. +2026-09-06 17:30:40 0 [Note] Server socket created on IP: '::', port: '3306'. +2026-09-06 17:30:40 0 [Note] mariadbd: Event Scheduler: Loaded 0 events +2026-09-06 17:30:40 0 [Note] mariadbd: ready for connections. +Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +2026-09-06 17:30:43 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication) +2026-09-06 17:30:54 0 [Note] mariadbd (initiated by: unknown): Normal shutdown +2026-09-06 17:30:54 0 [Note] InnoDB: FTS optimize thread exiting. +2026-09-06 17:30:54 0 [Note] InnoDB: Starting shutdown... +2026-09-06 17:30:54 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool +2026-09-06 17:30:54 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 17:30:54 +2026-09-06 17:30:54 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1" +2026-09-06 17:30:54 0 [Note] Shutdown completed; log sequence number 2305390; transaction id 2929 +2026-09-06 17:30:54 0 [Note] mariadbd: Shutdown complete +2026-09-06 17:30:54+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:30:54+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB +2026-09-06 17:30:54+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2026-09-06 17:30:54+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:30:55+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting +2026-09-06 17:30:55 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid Ip5h6v1FfE1Peq4G2pRipFcn+u4= as process 1 +2026-09-06 17:30:55 0 [Note] InnoDB: Compressed tables use zlib 1.3 +2026-09-06 17:30:55 0 [Note] InnoDB: Number of transaction pools: 1 +2026-09-06 17:30:55 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +2026-09-06 17:30:55 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup). +create_uring failed: falling back to libaio +2026-09-06 17:30:55 0 [Note] InnoDB: Using Linux native AIO +2026-09-06 17:30:55 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m +2026-09-06 17:30:55 0 [Note] InnoDB: Completed initialization of buffer pool +2026-09-06 17:30:55 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +2026-09-06 17:30:55 0 [Note] InnoDB: End of log at LSN=2305390 +2026-09-06 17:30:55 0 [Note] InnoDB: Opened 3 undo tablespaces +2026-09-06 17:30:55 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +2026-09-06 17:30:55 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +2026-09-06 17:30:55 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +2026-09-06 17:30:55 0 [Note] InnoDB: log sequence number 2305390; transaction id 2925 +2026-09-06 17:30:55 0 [Note] Plugin 'FEEDBACK' is disabled. +2026-09-06 17:30:55 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool +2026-09-06 17:30:55 0 [Note] Plugin 'wsrep-provider' is disabled. +2026-09-06 17:30:55 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:30:55 +2026-09-06 17:30:56 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'. +2026-09-06 17:30:56 0 [Note] Server socket created on IP: '::', port: '3306'. +2026-09-06 17:30:56 0 [Note] mariadbd: Event Scheduler: Loaded 0 events +2026-09-06 17:30:56 0 [Note] mariadbd: ready for connections. +Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +2026-09-06 17:30:59 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication) +2026-09-06 17:31:09 0 [Note] mariadbd (initiated by: unknown): Normal shutdown +2026-09-06 17:31:09 0 [Note] InnoDB: FTS optimize thread exiting. +2026-09-06 17:31:09 0 [Note] InnoDB: Starting shutdown... +2026-09-06 17:31:09 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool +2026-09-06 17:31:09 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 17:31:09 +2026-09-06 17:31:09 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1" +2026-09-06 17:31:09 0 [Note] Shutdown completed; log sequence number 2305390; transaction id 2929 +2026-09-06 17:31:09 0 [Note] mariadbd: Shutdown complete +2026-09-06 17:31:09+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:31:10+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB +2026-09-06 17:31:10+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2026-09-06 17:31:10+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:31:10+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting +2026-09-06 17:31:10 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid QrjPYeTVSHDGv0li4qe75MTQW2M= as process 1 +2026-09-06 17:31:10 0 [Note] InnoDB: Compressed tables use zlib 1.3 +2026-09-06 17:31:10 0 [Note] InnoDB: Number of transaction pools: 1 +2026-09-06 17:31:10 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +2026-09-06 17:31:10 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup). +create_uring failed: falling back to libaio +2026-09-06 17:31:10 0 [Note] InnoDB: Using Linux native AIO +2026-09-06 17:31:10 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m +2026-09-06 17:31:10 0 [Note] InnoDB: Completed initialization of buffer pool +2026-09-06 17:31:10 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +2026-09-06 17:31:10 0 [Note] InnoDB: End of log at LSN=2305390 +2026-09-06 17:31:10 0 [Note] InnoDB: Opened 3 undo tablespaces +2026-09-06 17:31:10 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +2026-09-06 17:31:10 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +2026-09-06 17:31:10 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +2026-09-06 17:31:10 0 [Note] InnoDB: log sequence number 2305390; transaction id 2925 +2026-09-06 17:31:10 0 [Note] Plugin 'FEEDBACK' is disabled. +2026-09-06 17:31:10 0 [Note] Plugin 'wsrep-provider' is disabled. +2026-09-06 17:31:10 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool +2026-09-06 17:31:10 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:31:10 +2026-09-06 17:31:11 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'. +2026-09-06 17:31:11 0 [Note] Server socket created on IP: '::', port: '3306'. +2026-09-06 17:31:11 0 [Note] mariadbd: Event Scheduler: Loaded 0 events +2026-09-06 17:31:11 0 [Note] mariadbd: ready for connections. +Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +2026-09-06 17:31:15 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication) +2026-09-06 17:31:25 0 [Note] mariadbd (initiated by: unknown): Normal shutdown +2026-09-06 17:31:25 0 [Note] InnoDB: FTS optimize thread exiting. +2026-09-06 17:31:25 0 [Note] InnoDB: Starting shutdown... +2026-09-06 17:31:25 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool +2026-09-06 17:31:25 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 17:31:25 +2026-09-06 17:31:25 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1" +2026-09-06 17:31:25 0 [Note] Shutdown completed; log sequence number 2305390; transaction id 2929 +2026-09-06 17:31:25 0 [Note] mariadbd: Shutdown complete +2026-09-06 17:31:26+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:31:26+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB +2026-09-06 17:31:26+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2026-09-06 17:31:26+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:31:26+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting +2026-09-06 17:31:26 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid XHeO0rVqyaJY851XG3yp+p/UGuw= as process 1 +2026-09-06 17:31:26 0 [Note] InnoDB: Compressed tables use zlib 1.3 +2026-09-06 17:31:26 0 [Note] InnoDB: Number of transaction pools: 1 +2026-09-06 17:31:26 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +2026-09-06 17:31:26 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup). +create_uring failed: falling back to libaio +2026-09-06 17:31:26 0 [Note] InnoDB: Using Linux native AIO +2026-09-06 17:31:26 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m +2026-09-06 17:31:26 0 [Note] InnoDB: Completed initialization of buffer pool +2026-09-06 17:31:26 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +2026-09-06 17:31:26 0 [Note] InnoDB: End of log at LSN=2305390 +2026-09-06 17:31:26 0 [Note] InnoDB: Opened 3 undo tablespaces +2026-09-06 17:31:26 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +2026-09-06 17:31:26 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +2026-09-06 17:31:26 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +2026-09-06 17:31:26 0 [Note] InnoDB: log sequence number 2305390; transaction id 2925 +2026-09-06 17:31:26 0 [Note] Plugin 'FEEDBACK' is disabled. +2026-09-06 17:31:26 0 [Note] Plugin 'wsrep-provider' is disabled. +2026-09-06 17:31:26 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool +2026-09-06 17:31:26 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:31:26 +2026-09-06 17:31:28 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'. +2026-09-06 17:31:28 0 [Note] Server socket created on IP: '::', port: '3306'. +2026-09-06 17:31:28 0 [Note] mariadbd: Event Scheduler: Loaded 0 events +2026-09-06 17:31:28 0 [Note] mariadbd: ready for connections. +Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +2026-09-06 17:31:30 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication) diff --git a/documentation/audits/r459-spike-2026-09-06/ev/arm1/moment3-upgrade-info.txt b/documentation/audits/r459-spike-2026-09-06/ev/arm1/moment3-upgrade-info.txt new file mode 100644 index 00000000..b5196fe7 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/ev/arm1/moment3-upgrade-info.txt @@ -0,0 +1 @@ +11.6.2-MariaDB-rw-r--r-- 1 mysql mysql 14 Sep 6 17:27 /var/lib/mysql/mariadb_upgrade_info diff --git a/documentation/audits/r459-spike-2026-09-06/ev/arm1/observable2-check.txt b/documentation/audits/r459-spike-2026-09-06/ev/arm1/observable2-check.txt new file mode 100644 index 00000000..f7f5db94 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/ev/arm1/observable2-check.txt @@ -0,0 +1,2 @@ +Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! +[exit=0] diff --git a/documentation/audits/r459-spike-2026-09-06/ev/arm1/restart-series.json b/documentation/audits/r459-spike-2026-09-06/ev/arm1/restart-series.json new file mode 100644 index 00000000..ddf7a53b --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/ev/arm1/restart-series.json @@ -0,0 +1,52 @@ +[ + { + "restart": 1, + "settled": true, + "secs": 10.6, + "upgrade_info": "11.6.2-MariaDB", + "check": "Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!", + "check_rc": 0, + "readback": true, + "entrypoint_line": "2026-09-06 17:30:23+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting" + }, + { + "restart": 2, + "settled": true, + "secs": 10.5, + "upgrade_info": "11.6.2-MariaDB", + "check": "Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!", + "check_rc": 0, + "readback": true, + "entrypoint_line": "2026-09-06 17:30:39+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting" + }, + { + "restart": 3, + "settled": true, + "secs": 10.5, + "upgrade_info": "11.6.2-MariaDB", + "check": "Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!", + "check_rc": 0, + "readback": true, + "entrypoint_line": "2026-09-06 17:30:55+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting" + }, + { + "restart": 4, + "settled": true, + "secs": 10.5, + "upgrade_info": "11.6.2-MariaDB", + "check": "Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!", + "check_rc": 0, + "readback": true, + "entrypoint_line": "2026-09-06 17:31:10+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting" + }, + { + "restart": 5, + "settled": true, + "secs": 10.5, + "upgrade_info": "11.6.2-MariaDB", + "check": "Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!", + "check_rc": 0, + "readback": true, + "entrypoint_line": "2026-09-06 17:31:26+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting" + } +] \ No newline at end of file diff --git a/documentation/audits/r459-spike-2026-09-06/ev/arm2/abort.log b/documentation/audits/r459-spike-2026-09-06/ev/arm2/abort.log new file mode 100644 index 00000000..df795a56 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/ev/arm2/abort.log @@ -0,0 +1,30 @@ +2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started. +2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started. +2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: MariaDB upgrade not required +2026-09-06 17:33:58+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB +2026-09-06 17:33:58 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid laV+yaNPJmTO9humaFUYyS3wa24= as process 1 +2026-09-06 17:33:58 0 [Note] InnoDB: Compressed tables use zlib 1.3 +2026-09-06 17:33:58 0 [Note] InnoDB: Number of transaction pools: 1 +2026-09-06 17:33:58 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +2026-09-06 17:33:58 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0 +2026-09-06 17:33:58 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF +2026-09-06 17:33:58 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB +2026-09-06 17:33:58 0 [Note] InnoDB: Completed initialization of buffer pool +2026-09-06 17:33:58 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +2026-09-06 17:33:58 0 [Note] InnoDB: End of log at LSN=2293273 +2026-09-06 17:33:58 0 [Note] InnoDB: Opened 3 undo tablespaces +2026-09-06 17:33:58 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +2026-09-06 17:33:58 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +2026-09-06 17:33:58 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +2026-09-06 17:33:58 0 [Note] InnoDB: log sequence number 2293273; transaction id 2917 +2026-09-06 17:33:58 0 [Note] Plugin 'FEEDBACK' is disabled. +2026-09-06 17:33:58 0 [Note] Plugin 'wsrep-provider' is disabled. +2026-09-06 17:33:58 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool +2026-09-06 17:33:58 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:33:58 +2026-09-06 17:34:00 0 [Note] Server socket created on IP: '0.0.0.0'. +2026-09-06 17:34:00 0 [Note] Server socket created on IP: '::'. +2026-09-06 17:34:00 0 [Note] mariadbd: Event Scheduler: Loaded 0 events +2026-09-06 17:34:00 0 [Note] mariadbd: ready for connections. +Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +2026-09-06 17:34:05 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication) diff --git a/documentation/audits/r459-spike-2026-09-06/ev/arm2/arm2.json b/documentation/audits/r459-spike-2026-09-06/ev/arm2/arm2.json new file mode 100644 index 00000000..be264b69 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/ev/arm2/arm2.json @@ -0,0 +1,47 @@ +{ + "c1": true, + "moment1_info": "11.6.2-MariaDB", + "to_settled": true, + "to_settle_s": 15.7, + "conversion_wall_s": 35.9, + "entrypoint_lines": [ + "2026-09-06 17:33:20+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.", + "2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'", + "2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.", + "2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Starting temporary server", + "2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Waiting for server startup", + "2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Temporary server started.", + "2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Backing up system database to system_mysql_backup_11.6.2-MariaDB.sql.zst", + "2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Backing up complete", + "2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Starting mariadb-upgrade", + "2026-09-06 17:33:31+02:00 [Note] [Entrypoint]: Finished mariadb-upgrade", + "2026-09-06 17:33:31+02:00 [Note] [Entrypoint]: Stopping temporary server", + "2026-09-06 17:33:31+02:00 [Note] [Entrypoint]: Temporary server stopped", + "2026-09-06 17:33:21+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB" + ], + "moment4_info": "12.3.3-MariaDB", + "check_after": "This installation of MariaDB is already upgraded to 12.3.3-MariaDB.\nThere is no need to run mariadb-upgrade again.", + "check_after_rc": 1, + "readback_after": true, + "abort_settled": true, + "abort_states": { + "bookstack": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "bookstack-db": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } + }, + "abort_lines": [ + "2026-09-06 17:33:58 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0", + "2026-09-06 17:33:58 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF", + "2026-09-06 17:34:05 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)" + ], + "abort": "starts-and-serves" +} \ No newline at end of file diff --git a/documentation/audits/r459-spike-2026-09-06/ev/arm2/mariadb-post-abort.log b/documentation/audits/r459-spike-2026-09-06/ev/arm2/mariadb-post-abort.log new file mode 100644 index 00000000..cb195439 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/ev/arm2/mariadb-post-abort.log @@ -0,0 +1,68 @@ +2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started. +2026-09-06 17:33:58+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB +2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started. +2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: MariaDB upgrade not required +2026-09-06 17:33:58 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid laV+yaNPJmTO9humaFUYyS3wa24= as process 1 +2026-09-06 17:33:58 0 [Note] InnoDB: Compressed tables use zlib 1.3 +2026-09-06 17:33:58 0 [Note] InnoDB: Number of transaction pools: 1 +2026-09-06 17:33:58 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +2026-09-06 17:33:58 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0 +2026-09-06 17:33:58 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF +2026-09-06 17:33:58 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB +2026-09-06 17:33:58 0 [Note] InnoDB: Completed initialization of buffer pool +2026-09-06 17:33:58 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +2026-09-06 17:33:58 0 [Note] InnoDB: End of log at LSN=2293273 +2026-09-06 17:33:58 0 [Note] InnoDB: Opened 3 undo tablespaces +2026-09-06 17:33:58 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +2026-09-06 17:33:58 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +2026-09-06 17:33:58 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +2026-09-06 17:33:58 0 [Note] InnoDB: log sequence number 2293273; transaction id 2917 +2026-09-06 17:33:58 0 [Note] Plugin 'FEEDBACK' is disabled. +2026-09-06 17:33:58 0 [Note] Plugin 'wsrep-provider' is disabled. +2026-09-06 17:33:58 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool +2026-09-06 17:33:58 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:33:58 +2026-09-06 17:34:00 0 [Note] Server socket created on IP: '0.0.0.0'. +2026-09-06 17:34:00 0 [Note] Server socket created on IP: '::'. +2026-09-06 17:34:00 0 [Note] mariadbd: Event Scheduler: Loaded 0 events +2026-09-06 17:34:00 0 [Note] mariadbd: ready for connections. +Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +2026-09-06 17:34:05 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication) +2026-09-06 17:35:11 0 [Note] mariadbd (initiated by: unknown): Normal shutdown +2026-09-06 17:35:11 0 [Note] InnoDB: FTS optimize thread exiting. +2026-09-06 17:35:11 0 [Note] InnoDB: Starting shutdown... +2026-09-06 17:35:11 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool +2026-09-06 17:35:11 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 17:35:11 +2026-09-06 17:35:11 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1" +2026-09-06 17:35:11 0 [Note] InnoDB: Shutdown completed; log sequence number 2293273; transaction id 2921 +2026-09-06 17:35:11 0 [Note] mariadbd: Shutdown complete + +2026-09-06 17:35:11+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started. +2026-09-06 17:35:12+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB +2026-09-06 17:35:12+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2026-09-06 17:35:12+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started. +2026-09-06 17:35:12+02:00 [Note] [Entrypoint]: MariaDB upgrade not required +2026-09-06 17:35:12 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid FaKgO08TpscPZcBgdBVul64Ukis= as process 1 +2026-09-06 17:35:12 0 [Note] InnoDB: Compressed tables use zlib 1.3 +2026-09-06 17:35:12 0 [Note] InnoDB: Number of transaction pools: 1 +2026-09-06 17:35:12 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +2026-09-06 17:35:12 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0 +2026-09-06 17:35:12 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF +2026-09-06 17:35:12 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB +2026-09-06 17:35:12 0 [Note] InnoDB: Completed initialization of buffer pool +2026-09-06 17:35:12 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +2026-09-06 17:35:12 0 [Note] InnoDB: End of log at LSN=2293273 +2026-09-06 17:35:12 0 [Note] InnoDB: Opened 3 undo tablespaces +2026-09-06 17:35:12 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +2026-09-06 17:35:12 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +2026-09-06 17:35:12 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +2026-09-06 17:35:12 0 [Note] InnoDB: log sequence number 2293273; transaction id 2917 +2026-09-06 17:35:12 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool +2026-09-06 17:35:12 0 [Note] Plugin 'FEEDBACK' is disabled. +2026-09-06 17:35:12 0 [Note] Plugin 'wsrep-provider' is disabled. +2026-09-06 17:35:12 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:35:12 +2026-09-06 17:35:13 0 [Note] Server socket created on IP: '0.0.0.0'. +2026-09-06 17:35:13 0 [Note] Server socket created on IP: '::'. +2026-09-06 17:35:13 0 [Note] mariadbd: Event Scheduler: Loaded 0 events +2026-09-06 17:35:13 0 [Note] mariadbd: ready for connections. +Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution diff --git a/documentation/audits/r459-spike-2026-09-06/ev/arm2/mariadb-to.log b/documentation/audits/r459-spike-2026-09-06/ev/arm2/mariadb-to.log new file mode 100644 index 00000000..ade95a21 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/ev/arm2/mariadb-to.log @@ -0,0 +1,107 @@ +2026-09-06 17:33:20+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Starting temporary server +2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Waiting for server startup +2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Temporary server started. +2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Backing up system database to system_mysql_backup_11.6.2-MariaDB.sql.zst +2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Backing up complete +2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Starting mariadb-upgrade +The --upgrade-system-tables option was used, user tables won't be touched. +Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! +Phase 1/8: Checking and upgrading mysql database +Processing databases +mysql +mysql.column_stats OK +mysql.columns_priv OK +mysql.db OK +mysql.event OK +mysql.func OK +mysql.global_priv OK +mysql.gtid_slave_pos OK +mysql.help_category OK +mysql.help_keyword OK +mysql.help_relation OK +mysql.help_topic OK +mysql.index_stats OK +mysql.innodb_index_stats OK +mysql.innodb_table_stats OK +mysql.plugin OK +mysql.proc OK +mysql.procs_priv OK +mysql.proxies_priv OK +mysql.roles_mapping OK +mysql.servers OK +mysql.table_stats OK +mysql.tables_priv OK +mysql.time_zone OK +mysql.time_zone_leap_second OK +mysql.time_zone_name OK +mysql.time_zone_transition OK +mysql.time_zone_transition_type OK +mysql.transaction_registry OK +Phase 2/8: Installing used storage engines... Skipped +Phase 3/8: Running 'mysql_fix_privilege_tables' +Phase 4/8: Fixing views... Skipped +Phase 5/8: Fixing table and database names ... Skipped +Phase 6/8: Checking and upgrading tables... Skipped +Phase 7/8: uninstalling plugins +Phase 8/8: Running 'FLUSH PRIVILEGES' +OK +2026-09-06 17:33:31+02:00 [Note] [Entrypoint]: Finished mariadb-upgrade +2026-09-06 17:33:31+02:00 [Note] [Entrypoint]: Stopping temporary server +2026-09-06 17:33:31+02:00 [Note] [Entrypoint]: Temporary server stopped +2026-09-06 17:33:21+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB +2026-09-06 17:33:21 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid 6gQVvpukP9zpgDKjDkctYqi29K8= as process 56 +2026-09-06 17:33:21 0 [Note] InnoDB: Compressed tables use zlib 1.3 +2026-09-06 17:33:21 0 [Note] InnoDB: Number of transaction pools: 1 +2026-09-06 17:33:21 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +2026-09-06 17:33:21 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup). +create_uring failed: falling back to libaio +2026-09-06 17:33:21 0 [Note] InnoDB: Using Linux native AIO +2026-09-06 17:33:21 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m +2026-09-06 17:33:21 0 [Note] InnoDB: Completed initialization of buffer pool +2026-09-06 17:33:21 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +2026-09-06 17:33:21 0 [Note] InnoDB: End of log at LSN=1148747 +2026-09-06 17:33:21 0 [Note] InnoDB: Opened 3 undo tablespaces +2026-09-06 17:33:21 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +2026-09-06 17:33:21 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +2026-09-06 17:33:21 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +2026-09-06 17:33:21 0 [Note] InnoDB: log sequence number 1148747; transaction id 2268 +2026-09-06 17:33:21 0 [Note] Plugin 'FEEDBACK' is disabled. +2026-09-06 17:33:21 0 [Note] Plugin 'wsrep-provider' is disabled. +2026-09-06 17:33:24 0 [Note] Replication not automatically started: --skip-slave-start was specified +2026-09-06 17:33:24 0 [Note] mariadbd: ready for connections. +Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 0 mariadb.org binary distribution +2026-09-06 17:33:31 0 [Note] mariadbd (initiated by: unknown): Normal shutdown +2026-09-06 17:33:31 0 [Note] InnoDB: FTS optimize thread exiting. +2026-09-06 17:33:31 0 [Note] InnoDB: Starting shutdown... +2026-09-06 17:33:31 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1" +2026-09-06 17:33:31 0 [Note] Shutdown completed; log sequence number 1148747; transaction id 2272 +2026-09-06 17:33:31 0 [Note] mariadbd: Shutdown complete +2026-09-06 17:33:31 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid 6gQVvpukP9zpgDKjDkctYqi29K8= as process 1 +2026-09-06 17:33:31 0 [Note] InnoDB: Compressed tables use zlib 1.3 +2026-09-06 17:33:31 0 [Note] InnoDB: Number of transaction pools: 1 +2026-09-06 17:33:31 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +2026-09-06 17:33:31 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup). +create_uring failed: falling back to libaio +2026-09-06 17:33:31 0 [Note] InnoDB: Using Linux native AIO +2026-09-06 17:33:31 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m +2026-09-06 17:33:31 0 [Note] InnoDB: Completed initialization of buffer pool +2026-09-06 17:33:31 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +2026-09-06 17:33:31 0 [Note] InnoDB: End of log at LSN=1148747 +2026-09-06 17:33:31 0 [Note] InnoDB: Opened 3 undo tablespaces +2026-09-06 17:33:31 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +2026-09-06 17:33:31 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +2026-09-06 17:33:31 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +2026-09-06 17:33:31 0 [Note] InnoDB: log sequence number 1148747; transaction id 2268 +2026-09-06 17:33:31 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool +2026-09-06 17:33:31 0 [Note] Plugin 'FEEDBACK' is disabled. +2026-09-06 17:33:31 0 [Note] Plugin 'wsrep-provider' is disabled. +2026-09-06 17:33:31 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:33:31 +2026-09-06 17:33:32 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'. +2026-09-06 17:33:32 0 [Note] Server socket created on IP: '::', port: '3306'. +2026-09-06 17:33:32 0 [Note] mariadbd: Event Scheduler: Loaded 0 events +2026-09-06 17:33:32 0 [Note] mariadbd: ready for connections. +Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +2026-09-06 17:33:38 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication) diff --git a/documentation/audits/r459-spike-2026-09-06/ev/arm2/post-abort.txt b/documentation/audits/r459-spike-2026-09-06/ev/arm2/post-abort.txt new file mode 100644 index 00000000..90406cdb --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/ev/arm2/post-abort.txt @@ -0,0 +1,16 @@ +# POST-ABORT: MariaDB 11.6 running on a datadir converted to 12.3 +## engine serving: +mariadb from 11.6.2-MariaDB, client 15.2 for debian-linux-gnu (x86_64) using EditLine wrapper +## mariadb_upgrade_info: +12.3.3-MariaDB + +## the ENTRYPOINT says (reassuring, and it is not a soundness statement): +2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: MariaDB upgrade not required +2026-09-06 17:35:12+02:00 [Note] [Entrypoint]: MariaDB upgrade not required + +## mariadb-upgrade --check-if-upgrade-is-needed says: +FATAL ERROR: Version mismatch (12.3.3-MariaDB -> 11.6.2-MariaDB): Trying to downgrade from a higher to lower version is not supported! +[exit=1] + +## system-database backup taken automatically by the conversion: +-rw-r--r-- 1 mysql mysql 622437 Sep 6 17:33 /var/lib/mysql/system_mysql_backup_11.6.2-MariaDB.sql.zst diff --git a/documentation/audits/r459-spike-2026-09-06/ev/arm2/scratch-compose.yml b/documentation/audits/r459-spike-2026-09-06/ev/arm2/scratch-compose.yml new file mode 100644 index 00000000..7afa6f42 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/ev/arm2/scratch-compose.yml @@ -0,0 +1,86 @@ +# BookStack - Egyszerű, könyv-szerű wiki és dokumentáció platform +# Domain: ${SUBDOMAIN}.${DOMAIN} +# Database: mariadb +# RAM: ~150M (mem_limit: 512M) | Pi-compatible: Yes +# +# Environment variables: +# DOMAIN - Your domain (e.g., demo-felhom.eu) +# DB_PASSWORD - Adatbázis jelszó (auto-generated) +# APP_KEY - Laravel application key (auto-generated) + +services: + bookstack: + image: lscr.io/linuxserver/bookstack:25.02.2 + container_name: bookstack + restart: unless-stopped + depends_on: + bookstack-db: + condition: service_healthy + environment: + - TZ=Europe/Budapest + - PUID=1000 + - PGID=1000 + - DB_HOST=bookstack-db + - DB_PORT=3306 + - DB_USERNAME=bookstack + - DB_PASSWORD=${DB_PASSWORD} + - DB_DATABASE=bookstack + - APP_KEY=${APP_KEY} + - APP_URL=https://${SUBDOMAIN}.${DOMAIN} + volumes: + - bookstack_config:/config + networks: + - traefik-public + - bookstack-internal + deploy: + resources: + limits: + memory: 512M + healthcheck: + test: ["CMD", "curl", "-f", "http://127.0.0.1:80"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 30s + labels: + - "traefik.enable=true" + - "traefik.http.routers.bookstack.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)" + - "traefik.http.routers.bookstack.entrypoints=websecure" + - "traefik.http.routers.bookstack.tls=true" + - "traefik.http.routers.bookstack.tls.certresolver=letsencrypt" + - "traefik.http.services.bookstack.loadbalancer.server.port=80" + + bookstack-db: + image: mariadb:11.6 + container_name: bookstack-db + restart: unless-stopped + environment: + - MYSQL_ROOT_PASSWORD=${DB_PASSWORD} + - MARIADB_AUTO_UPGRADE=1 + - MYSQL_DATABASE=bookstack + - MYSQL_USER=bookstack + - MYSQL_PASSWORD=${DB_PASSWORD} + - TZ=Europe/Budapest + volumes: + - bookstack_db_data:/var/lib/mysql + networks: + - bookstack-internal + deploy: + resources: + limits: + memory: 256M + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 20s + +volumes: + bookstack_config: + bookstack_db_data: + +networks: + traefik-public: + external: true + bookstack-internal: diff --git a/documentation/audits/r459-spike-2026-09-06/evidence/E3b/abort-states.json b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/abort-states.json new file mode 100644 index 00000000..b910bf46 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/abort-states.json @@ -0,0 +1,14 @@ +{ + "bookstack": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "bookstack-db": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/r459-spike-2026-09-06/evidence/E3b/compose-final.log b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/compose-final.log new file mode 100644 index 00000000..8a861d80 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/compose-final.log @@ -0,0 +1,183 @@ +bookstack-db | 2026-09-06 17:37:16+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started. +bookstack-db | 2026-09-06 17:37:16+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB +bookstack-db | 2026-09-06 17:37:16+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +bookstack-db | 2026-09-06 17:37:16+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started. +bookstack-db | 2026-09-06 17:37:16+02:00 [Note] [Entrypoint]: MariaDB upgrade not required +bookstack-db | 2026-09-06 17:37:16 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid FyHOQ8V7FXEQJqVEM22Wze9eRrU= as process 1 +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Compressed tables use zlib 1.3 +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Number of transaction pools: 1 +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +bookstack-db | 2026-09-06 17:37:16 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0 +bookstack-db | 2026-09-06 17:37:16 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Completed initialization of buffer pool +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: End of log at LSN=1982099 +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Opened 3 undo tablespaces +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: log sequence number 1982099; transaction id 2873 +bookstack-db | 2026-09-06 17:37:16 0 [Note] Plugin 'FEEDBACK' is disabled. +bookstack-db | 2026-09-06 17:37:16 0 [Note] Plugin 'wsrep-provider' is disabled. +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool +bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:37:16 +bookstack-db | 2026-09-06 17:37:18 0 [Note] Server socket created on IP: '0.0.0.0'. +bookstack-db | 2026-09-06 17:37:18 0 [Note] Server socket created on IP: '::'. +bookstack-db | 2026-09-06 17:37:18 0 [Note] mariadbd: Event Scheduler: Loaded 0 events +bookstack-db | 2026-09-06 17:37:18 0 [Note] mariadbd: ready for connections. +bookstack-db | Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +bookstack | [migrations] started +bookstack | [migrations] 01-nginx-site-confs-default: executing... +bookstack | [migrations] 01-nginx-site-confs-default: succeeded +bookstack | [migrations] 02-default-location: executing... +bookstack | [migrations] 02-default-location: succeeded +bookstack | [migrations] done +bookstack | ─────────────────────────────────────── +bookstack | +bookstack | ██╗ ███████╗██╗ ██████╗ +bookstack | ██║ ██╔════╝██║██╔═══██╗ +bookstack | ██║ ███████╗██║██║ ██║ +bookstack | ██║ ╚════██║██║██║ ██║ +bookstack | ███████╗███████║██║╚██████╔╝ +bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝ +bookstack | +bookstack | Brought to you by linuxserver.io +bookstack | ─────────────────────────────────────── +bookstack | +bookstack | To support the app dev(s) visit: +bookstack | Bookstack: https://www.bookstackapp.com/donate/ +bookstack | +bookstack | To support LSIO projects visit: +bookstack | https://www.linuxserver.io/donate/ +bookstack | +bookstack | ─────────────────────────────────────── +bookstack | GID/UID +bookstack | ─────────────────────────────────────── +bookstack | +bookstack | User UID: 1000 +bookstack | User GID: 1000 +bookstack | ─────────────────────────────────────── +bookstack | Linuxserver.io version: v26.05.2-ls276 +bookstack | Build-date: 2026-07-27T19:41:43+00:00 +bookstack | ─────────────────────────────────────── +bookstack | +bookstack | Setting resolver to 127.0.0.11 +bookstack | Setting worker_processes to 4 +bookstack | generating self-signed keys in /config/keys, you can replace these with your own keys if required +bookstack | .....+..........+...+...+..+....+++++++++++++++++++++++++++++++++++++++*.+...+++++++++++++++++++++++++++++++++++++++*.........+.....+.............+...+...........+.+..+...+.........+.+..............+.............+..+....+.....+............+.......+..+.+.........+........+.+..+.........+...+...+....+......+...+.....+.......+..+.....................+.+...+........+....+.....+...+.+......+.....+.+..+......................+......+.....++++++ +bookstack | .....+...+.+......+........+......+...+...+...+++++++++++++++++++++++++++++++++++++++*...+...+.....+...+.+.........+..+.......+.....+...+++++++++++++++++++++++++++++++++++++++*......+....+......+...+.........+.....+...............+.+............+..+.......+.....+.+..+......+.........+.+.....+.+...........+....+.......................+...+....+.....+...+...+.......+..................+...+.....+......+...+.......+......+..+......+.+.......................+.+..+............+......+.+......+.........+...+...+..+.......+........+.+...........+...+................+.........+..+.+............+..+...+.+.....+.+.........+..+............+.+..............+.+..+.......+........+.......+........+.......+..+.+..+.......+........+...+............+.+.....+.+......+........+......+.+........+...................+..+....+.....+......+....+..+.......+........+...+.+...+.....+.+..+....+...+..+..................+...+...+.....................+....+...........+.............+..+..................+.+.....+......+...+.+......+.....+...+.+............+..+...+....+.....+....+.....++++++ +bookstack | ----- +bookstack | Waiting for DB to be available +bookstack | +bookstack | INFO Preparing database. +bookstack | +bookstack | Creating migration table ...................................... 25.42ms DONE +bookstack | +bookstack | INFO Running migrations. +bookstack | +bookstack | 2014_10_12_000000_create_users_table ......................... 280.39ms DONE +bookstack | 2014_10_12_100000_create_password_resets_table ................ 64.19ms DONE +bookstack | 2015_07_12_114933_create_books_table .......................... 12.71ms DONE +bookstack | 2015_07_12_190027_create_pages_table .......................... 17.69ms DONE +bookstack | 2015_07_13_172121_create_images_table ......................... 11.70ms DONE +bookstack | 2015_07_27_172342_create_chapters_table ....................... 13.83ms DONE +bookstack | 2015_08_08_200447_add_users_to_entities ...................... 153.83ms DONE +bookstack | 2015_08_09_093534_create_page_revisions_table ................. 11.95ms DONE +bookstack | 2015_08_16_142133_create_activities_table ..................... 15.73ms DONE +bookstack | 2015_08_29_105422_add_roles_and_permissions .................. 323.96ms DONE +bookstack | 2015_08_30_125859_create_settings_table ....................... 13.48ms DONE +bookstack | 2015_08_31_175240_add_search_indexes ........................... 0.06ms DONE +bookstack | 2015_09_04_165821_create_social_accounts_table ................ 64.04ms DONE +bookstack | 2015_09_05_164707_add_email_confirmation_table ................ 82.50ms DONE +bookstack | 2015_11_21_145609_create_views_table .......................... 13.13ms DONE +bookstack | 2015_11_26_221857_add_entity_indexes ......................... 491.19ms DONE +bookstack | 2015_12_05_145049_fulltext_weighting ........................... 0.06ms DONE +bookstack | 2015_12_07_195238_add_image_upload_types ...................... 75.31ms DONE +bookstack | 2015_12_09_195748_add_user_avatars ............................ 18.17ms DONE +bookstack | 2016_01_11_210908_add_external_auth_to_users .................. 47.72ms DONE +bookstack | 2016_02_25_184030_add_slug_to_revisions ....................... 85.17ms DONE +bookstack | 2016_02_27_120329_update_permissions_and_roles ............... 148.77ms DONE +bookstack | 2016_02_28_084200_add_entity_access_controls ................. 255.74ms DONE +bookstack | 2016_03_09_203143_add_page_revision_types ..................... 47.57ms DONE +bookstack | 2016_03_13_082138_add_page_drafts ............................. 45.80ms DONE +bookstack | 2016_03_25_123157_add_markdown_support ........................ 39.14ms DONE +bookstack | 2016_04_09_100730_add_view_permissions_to_roles ............... 50.37ms DONE +bookstack | 2016_04_20_192649_create_joint_permissions_table ............. 320.85ms DONE +bookstack | 2016_05_06_185215_create_tags_table .......................... 113.47ms DONE +bookstack | 2016_07_07_181521_add_summary_to_page_revisions ............... 17.12ms DONE +bookstack | 2016_09_29_101449_remove_hidden_roles ......................... 72.95ms DONE +bookstack | 2016_10_09_142037_create_attachments_table .................... 63.02ms DONE +bookstack | 2017_01_21_163556_create_cache_table .......................... 40.20ms DONE +bookstack | 2017_01_21_163602_create_sessions_table ....................... 38.07ms DONE +bookstack | 2017_03_19_091553_create_search_index_table .................. 117.69ms DONE +bookstack | 2017_04_20_185112_add_revision_counts ......................... 66.06ms DONE +bookstack | 2017_07_02_152834_update_db_encoding_to_ut8mb4 ................. 0.06ms DONE +bookstack | 2017_08_01_130541_create_comments_table ....................... 86.12ms DONE +bookstack | 2017_08_29_102650_add_cover_image_display ..................... 17.54ms DONE +bookstack | 2018_07_15_173514_add_role_external_auth_id ................... 47.20ms DONE +bookstack | 2018_08_04_115700_create_bookshelves_table ................... 379.44ms DONE +bookstack | 2019_07_07_112515_add_template_support ........................ 47.05ms DONE +bookstack | 2019_08_17_140214_add_user_invites_table ...................... 63.85ms DONE +bookstack | 2019_12_29_120917_add_api_auth ................................ 91.08ms DONE +bookstack | 2020_08_04_111754_drop_joint_permissions_id .................. 104.12ms DONE +bookstack | 2020_08_04_131052_remove_role_name_field ...................... 20.76ms DONE +bookstack | 2020_09_19_094251_add_activity_indexes ........................ 49.10ms DONE +bookstack | 2020_09_27_210059_add_entity_soft_deletes ..................... 73.95ms DONE +bookstack | 2020_09_27_210528_create_deletions_table ...................... 92.77ms DONE +bookstack | 2020_11_07_232321_simplify_activities_table .................. 146.96ms DONE +bookstack | 2020_12_30_173528_add_owned_by_field_to_entities ............. 200.03ms DONE +bookstack | 2021_01_30_225441_add_settings_type_column .................... 19.24ms DONE +bookstack | 2021_03_08_215138_add_user_slug ............................... 51.30ms DONE +bookstack | 2021_05_15_173110_create_favourites_table ..................... 59.92ms DONE +bookstack | 2021_06_30_173111_create_mfa_values_table ..................... 62.17ms DONE +bookstack | 2021_07_03_085038_add_mfa_enforced_to_roles_table ............. 17.63ms DONE +bookstack | 2021_08_28_161743_add_export_role_permission ................... 4.86ms DONE +bookstack | 2021_09_26_044614_add_activities_ip_column .................... 21.38ms DONE +bookstack | 2021_11_26_070438_add_index_for_user_ip ....................... 21.51ms DONE +bookstack | 2021_12_07_111343_create_webhooks_table ...................... 127.35ms DONE +bookstack | 2021_12_13_152024_create_jobs_table ........................... 36.78ms DONE +bookstack | 2021_12_13_152120_create_failed_jobs_table .................... 34.12ms DONE +bookstack | 2022_01_03_154041_add_webhooks_timeout_error_columns .......... 76.41ms DONE +bookstack | 2022_04_17_101741_add_editor_change_field_and_permission ...... 23.15ms DONE +bookstack | 2022_04_25_140741_update_polymorphic_types .................... 16.51ms DONE +bookstack | 2022_07_16_170051_drop_joint_permission_type ................. 126.61ms DONE +bookstack | 2022_08_17_092941_create_references_table .................... 114.98ms DONE +bookstack | 2022_09_02_082910_fix_shelf_cover_image_types .................. 0.70ms DONE +bookstack | 2022_10_07_091406_flatten_entity_permissions_table ............ 90.15ms DONE +bookstack | 2022_10_08_104202_drop_entity_restricted_field ................ 96.76ms DONE +bookstack | 2023_01_24_104625_refactor_joint_permissions_storage ......... 145.33ms DONE +bookstack | 2023_01_28_141230_copy_color_settings_for_dark_mode ............ 1.22ms DONE +bookstack | 2023_02_20_093655_increase_attachments_path_length ............ 37.29ms DONE +bookstack | 2023_02_23_200227_add_updated_at_index_to_pages ............... 27.58ms DONE +bookstack | 2023_06_10_071823_remove_guest_user_secondary_roles ............ 2.17ms DONE +bookstack | 2023_06_25_181952_remove_bookshelf_create_entity_permissions ... 0.05ms DONE +bookstack | 2023_07_25_124945_add_receive_notifications_role_permissions ... 4.51ms DONE +bookstack | 2023_07_31_104430_create_watches_table ........................ 86.52ms DONE +bookstack | 2023_08_21_174248_increase_cache_size ......................... 29.32ms DONE +bookstack | 2023_12_02_104541_add_default_template_to_books ............... 20.96ms DONE +bookstack | 2023_12_17_140913_add_description_html_to_entities ............ 69.67ms DONE +bookstack | 2024_01_01_104542_add_default_template_to_chapters ............ 21.06ms DONE +bookstack | 2024_02_04_141358_add_views_updated_index ..................... 28.41ms DONE +bookstack | 2024_05_04_154409_rename_activity_relation_columns ............ 35.58ms DONE +bookstack | 2024_09_29_140340_ensure_editor_value_set ...................... 2.62ms DONE +bookstack | 2024_10_29_114420_add_import_role_permission ................... 5.04ms DONE +bookstack | 2024_11_02_160700_create_imports_table ........................ 38.06ms DONE +bookstack | 2024_11_27_171039_add_instance_id_setting ..................... 10.79ms DONE +bookstack | 2025_01_29_180933_create_sort_rules_table ..................... 17.14ms DONE +bookstack | 2025_02_05_150842_add_sort_rule_id_to_books ................... 19.84ms DONE +bookstack | 2025_04_18_215145_add_content_refs_and_archived_to_comments ... 61.97ms DONE +bookstack | 2025_09_02_111542_remove_unused_columns ....................... 68.23ms DONE +bookstack | 2025_09_15_132850_create_entities_table ...................... 261.38ms DONE +bookstack | 2025_09_15_134701_migrate_entity_data ......................... 10.32ms DONE +bookstack | 2025_09_15_134751_update_entity_relation_columns ............. 823.66ms DONE +bookstack | 2025_09_15_134813_drop_old_entity_tables ...................... 47.79ms DONE +bookstack | 2025_10_18_163331_clean_user_id_references ................... 444.39ms DONE +bookstack | 2025_10_22_134507_update_comments_relation_field_names ........ 34.40ms DONE +bookstack | 2025_11_23_161812_create_slug_history_table .................. 117.46ms DONE +bookstack | 2025_12_15_140219_create_mention_history_table ................ 62.55ms DONE +bookstack | 2025_12_19_103417_add_views_viewable_type_index ............... 22.64ms DONE +bookstack | 2026_04_19_141616_add_revision_view_all_permission ............ 10.97ms DONE +bookstack | +bookstack | [custom-init] No custom files found, skipping... +bookstack | [ls.io-init] done. diff --git a/documentation/audits/r459-spike-2026-09-06/evidence/E3b/engine-state.json b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/engine-state.json new file mode 100644 index 00000000..98ecb7c6 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/engine-state.json @@ -0,0 +1,8 @@ +{ + "bookstack-db": { + "image": "mariadb:12.3", + "probe": "datadir version | the engine's own upgrade verdict", + "answer": "11.6.2-MariaDB| Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! [exit=0]", + "probe_rc": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/r459-spike-2026-09-06/evidence/E3b/migration-lines.txt b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/migration-lines.txt new file mode 100644 index 00000000..ddece0df --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/migration-lines.txt @@ -0,0 +1 @@ +bookstack-db | 2026-09-06 17:37:09+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting \ No newline at end of file diff --git a/documentation/audits/r459-spike-2026-09-06/evidence/E3b/run.log b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/run.log new file mode 100644 index 00000000..15365334 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/run.log @@ -0,0 +1,15 @@ +[15:36:33] E3b: deploying bookstack at FROM {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:11.6'} +[15:37:05] FROM settled=True in 20.8s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:37:06] bookstack: artisan create-admin rc=0 :: Admin account with email "spike-3982fd6f@gate.invalid" successfully created! +[15:37:07] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-916be2 - Email: spike +[15:37:07] C1 (seed reads back BEFORE): True +[15:37:07] E3b: swapping to TO {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:12.3'} +[15:37:14] TO up -d rc=0 +[15:37:14] TO settled=True in 0.2s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:37:14] engine state bookstack-db: 11.6.2-MariaDB| Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! [exit=0] +[15:37:14] migration lines observed: 1 +[15:37:15] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-916be2 - Email: spike +[15:37:15] RESULT (seed reads back AFTER): True +[15:37:15] E3b: ABORT — putting the FROM images back +[15:37:22] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-916be2 - Email: spike +[15:37:22] ABORT: app came back in 0.2s; data present=True \ No newline at end of file diff --git a/documentation/audits/r459-spike-2026-09-06/evidence/E3b/to-full.log b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/to-full.log new file mode 100644 index 00000000..ce29dccf --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/to-full.log @@ -0,0 +1,184 @@ +bookstack-db | 2026-09-06 17:37:08+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +bookstack-db | 2026-09-06 17:37:08+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB +bookstack-db | 2026-09-06 17:37:08+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +bookstack-db | 2026-09-06 17:37:08+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started. +bookstack-db | 2026-09-06 17:37:09+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting +bookstack-db | 2026-09-06 17:37:09 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid jWwYUw+ySlp93OF2YbaUIC/MCcI= as process 1 +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Compressed tables use zlib 1.3 +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Number of transaction pools: 1 +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions +bookstack-db | 2026-09-06 17:37:09 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup). +bookstack-db | create_uring failed: falling back to libaio +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Using Linux native AIO +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Completed initialization of buffer pool +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: End of log at LSN=1982099 +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Opened 3 undo tablespaces +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: log sequence number 1982099; transaction id 2873 +bookstack-db | 2026-09-06 17:37:09 0 [Note] Plugin 'FEEDBACK' is disabled. +bookstack-db | 2026-09-06 17:37:09 0 [Note] Plugin 'wsrep-provider' is disabled. +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool +bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:37:09 +bookstack-db | 2026-09-06 17:37:11 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'. +bookstack-db | 2026-09-06 17:37:11 0 [Note] Server socket created on IP: '::', port: '3306'. +bookstack-db | 2026-09-06 17:37:11 0 [Note] mariadbd: Event Scheduler: Loaded 0 events +bookstack-db | 2026-09-06 17:37:11 0 [Note] mariadbd: ready for connections. +bookstack-db | Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +bookstack | [migrations] started +bookstack | [migrations] 01-nginx-site-confs-default: executing... +bookstack | [migrations] 01-nginx-site-confs-default: succeeded +bookstack | [migrations] 02-default-location: executing... +bookstack | [migrations] 02-default-location: succeeded +bookstack | [migrations] done +bookstack | ─────────────────────────────────────── +bookstack | +bookstack | ██╗ ███████╗██╗ ██████╗ +bookstack | ██║ ██╔════╝██║██╔═══██╗ +bookstack | ██║ ███████╗██║██║ ██║ +bookstack | ██║ ╚════██║██║██║ ██║ +bookstack | ███████╗███████║██║╚██████╔╝ +bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝ +bookstack | +bookstack | Brought to you by linuxserver.io +bookstack | ─────────────────────────────────────── +bookstack | +bookstack | To support the app dev(s) visit: +bookstack | Bookstack: https://www.bookstackapp.com/donate/ +bookstack | +bookstack | To support LSIO projects visit: +bookstack | https://www.linuxserver.io/donate/ +bookstack | +bookstack | ─────────────────────────────────────── +bookstack | GID/UID +bookstack | ─────────────────────────────────────── +bookstack | +bookstack | User UID: 1000 +bookstack | User GID: 1000 +bookstack | ─────────────────────────────────────── +bookstack | Linuxserver.io version: v26.05.2-ls276 +bookstack | Build-date: 2026-07-27T19:41:43+00:00 +bookstack | ─────────────────────────────────────── +bookstack | +bookstack | Setting resolver to 127.0.0.11 +bookstack | Setting worker_processes to 4 +bookstack | generating self-signed keys in /config/keys, you can replace these with your own keys if required +bookstack | .....+..........+...+...+..+....+++++++++++++++++++++++++++++++++++++++*.+...+++++++++++++++++++++++++++++++++++++++*.........+.....+.............+...+...........+.+..+...+.........+.+..............+.............+..+....+.....+............+.......+..+.+.........+........+.+..+.........+...+...+....+......+...+.....+.......+..+.....................+.+...+........+....+.....+...+.+......+.....+.+..+......................+......+.....++++++ +bookstack | .....+...+.+......+........+......+...+...+...+++++++++++++++++++++++++++++++++++++++*...+...+.....+...+.+.........+..+.......+.....+...+++++++++++++++++++++++++++++++++++++++*......+....+......+...+.........+.....+...............+.+............+..+.......+.....+.+..+......+.........+.+.....+.+...........+....+.......................+...+....+.....+...+...+.......+..................+...+.....+......+...+.......+......+..+......+.+.......................+.+..+............+......+.+......+.........+...+...+..+.......+........+.+...........+...+................+.........+..+.+............+..+...+.+.....+.+.........+..+............+.+..............+.+..+.......+........+.......+........+.......+..+.+..+.......+........+...+............+.+.....+.+......+........+......+.+........+...................+..+....+.....+......+....+..+.......+........+...+.+...+.....+.+..+....+...+..+..................+...+...+.....................+....+...........+.............+..+..................+.+.....+......+...+.+......+.....+...+.+............+..+...+....+.....+....+.....++++++ +bookstack | ----- +bookstack | Waiting for DB to be available +bookstack | +bookstack | INFO Preparing database. +bookstack | +bookstack | Creating migration table ...................................... 25.42ms DONE +bookstack | +bookstack | INFO Running migrations. +bookstack | +bookstack | 2014_10_12_000000_create_users_table ......................... 280.39ms DONE +bookstack | 2014_10_12_100000_create_password_resets_table ................ 64.19ms DONE +bookstack | 2015_07_12_114933_create_books_table .......................... 12.71ms DONE +bookstack | 2015_07_12_190027_create_pages_table .......................... 17.69ms DONE +bookstack | 2015_07_13_172121_create_images_table ......................... 11.70ms DONE +bookstack | 2015_07_27_172342_create_chapters_table ....................... 13.83ms DONE +bookstack | 2015_08_08_200447_add_users_to_entities ...................... 153.83ms DONE +bookstack | 2015_08_09_093534_create_page_revisions_table ................. 11.95ms DONE +bookstack | 2015_08_16_142133_create_activities_table ..................... 15.73ms DONE +bookstack | 2015_08_29_105422_add_roles_and_permissions .................. 323.96ms DONE +bookstack | 2015_08_30_125859_create_settings_table ....................... 13.48ms DONE +bookstack | 2015_08_31_175240_add_search_indexes ........................... 0.06ms DONE +bookstack | 2015_09_04_165821_create_social_accounts_table ................ 64.04ms DONE +bookstack | 2015_09_05_164707_add_email_confirmation_table ................ 82.50ms DONE +bookstack | 2015_11_21_145609_create_views_table .......................... 13.13ms DONE +bookstack | 2015_11_26_221857_add_entity_indexes ......................... 491.19ms DONE +bookstack | 2015_12_05_145049_fulltext_weighting ........................... 0.06ms DONE +bookstack | 2015_12_07_195238_add_image_upload_types ...................... 75.31ms DONE +bookstack | 2015_12_09_195748_add_user_avatars ............................ 18.17ms DONE +bookstack | 2016_01_11_210908_add_external_auth_to_users .................. 47.72ms DONE +bookstack | 2016_02_25_184030_add_slug_to_revisions ....................... 85.17ms DONE +bookstack | 2016_02_27_120329_update_permissions_and_roles ............... 148.77ms DONE +bookstack | 2016_02_28_084200_add_entity_access_controls ................. 255.74ms DONE +bookstack | 2016_03_09_203143_add_page_revision_types ..................... 47.57ms DONE +bookstack | 2016_03_13_082138_add_page_drafts ............................. 45.80ms DONE +bookstack | 2016_03_25_123157_add_markdown_support ........................ 39.14ms DONE +bookstack | 2016_04_09_100730_add_view_permissions_to_roles ............... 50.37ms DONE +bookstack | 2016_04_20_192649_create_joint_permissions_table ............. 320.85ms DONE +bookstack | 2016_05_06_185215_create_tags_table .......................... 113.47ms DONE +bookstack | 2016_07_07_181521_add_summary_to_page_revisions ............... 17.12ms DONE +bookstack | 2016_09_29_101449_remove_hidden_roles ......................... 72.95ms DONE +bookstack | 2016_10_09_142037_create_attachments_table .................... 63.02ms DONE +bookstack | 2017_01_21_163556_create_cache_table .......................... 40.20ms DONE +bookstack | 2017_01_21_163602_create_sessions_table ....................... 38.07ms DONE +bookstack | 2017_03_19_091553_create_search_index_table .................. 117.69ms DONE +bookstack | 2017_04_20_185112_add_revision_counts ......................... 66.06ms DONE +bookstack | 2017_07_02_152834_update_db_encoding_to_ut8mb4 ................. 0.06ms DONE +bookstack | 2017_08_01_130541_create_comments_table ....................... 86.12ms DONE +bookstack | 2017_08_29_102650_add_cover_image_display ..................... 17.54ms DONE +bookstack | 2018_07_15_173514_add_role_external_auth_id ................... 47.20ms DONE +bookstack | 2018_08_04_115700_create_bookshelves_table ................... 379.44ms DONE +bookstack | 2019_07_07_112515_add_template_support ........................ 47.05ms DONE +bookstack | 2019_08_17_140214_add_user_invites_table ...................... 63.85ms DONE +bookstack | 2019_12_29_120917_add_api_auth ................................ 91.08ms DONE +bookstack | 2020_08_04_111754_drop_joint_permissions_id .................. 104.12ms DONE +bookstack | 2020_08_04_131052_remove_role_name_field ...................... 20.76ms DONE +bookstack | 2020_09_19_094251_add_activity_indexes ........................ 49.10ms DONE +bookstack | 2020_09_27_210059_add_entity_soft_deletes ..................... 73.95ms DONE +bookstack | 2020_09_27_210528_create_deletions_table ...................... 92.77ms DONE +bookstack | 2020_11_07_232321_simplify_activities_table .................. 146.96ms DONE +bookstack | 2020_12_30_173528_add_owned_by_field_to_entities ............. 200.03ms DONE +bookstack | 2021_01_30_225441_add_settings_type_column .................... 19.24ms DONE +bookstack | 2021_03_08_215138_add_user_slug ............................... 51.30ms DONE +bookstack | 2021_05_15_173110_create_favourites_table ..................... 59.92ms DONE +bookstack | 2021_06_30_173111_create_mfa_values_table ..................... 62.17ms DONE +bookstack | 2021_07_03_085038_add_mfa_enforced_to_roles_table ............. 17.63ms DONE +bookstack | 2021_08_28_161743_add_export_role_permission ................... 4.86ms DONE +bookstack | 2021_09_26_044614_add_activities_ip_column .................... 21.38ms DONE +bookstack | 2021_11_26_070438_add_index_for_user_ip ....................... 21.51ms DONE +bookstack | 2021_12_07_111343_create_webhooks_table ...................... 127.35ms DONE +bookstack | 2021_12_13_152024_create_jobs_table ........................... 36.78ms DONE +bookstack | 2021_12_13_152120_create_failed_jobs_table .................... 34.12ms DONE +bookstack | 2022_01_03_154041_add_webhooks_timeout_error_columns .......... 76.41ms DONE +bookstack | 2022_04_17_101741_add_editor_change_field_and_permission ...... 23.15ms DONE +bookstack | 2022_04_25_140741_update_polymorphic_types .................... 16.51ms DONE +bookstack | 2022_07_16_170051_drop_joint_permission_type ................. 126.61ms DONE +bookstack | 2022_08_17_092941_create_references_table .................... 114.98ms DONE +bookstack | 2022_09_02_082910_fix_shelf_cover_image_types .................. 0.70ms DONE +bookstack | 2022_10_07_091406_flatten_entity_permissions_table ............ 90.15ms DONE +bookstack | 2022_10_08_104202_drop_entity_restricted_field ................ 96.76ms DONE +bookstack | 2023_01_24_104625_refactor_joint_permissions_storage ......... 145.33ms DONE +bookstack | 2023_01_28_141230_copy_color_settings_for_dark_mode ............ 1.22ms DONE +bookstack | 2023_02_20_093655_increase_attachments_path_length ............ 37.29ms DONE +bookstack | 2023_02_23_200227_add_updated_at_index_to_pages ............... 27.58ms DONE +bookstack | 2023_06_10_071823_remove_guest_user_secondary_roles ............ 2.17ms DONE +bookstack | 2023_06_25_181952_remove_bookshelf_create_entity_permissions ... 0.05ms DONE +bookstack | 2023_07_25_124945_add_receive_notifications_role_permissions ... 4.51ms DONE +bookstack | 2023_07_31_104430_create_watches_table ........................ 86.52ms DONE +bookstack | 2023_08_21_174248_increase_cache_size ......................... 29.32ms DONE +bookstack | 2023_12_02_104541_add_default_template_to_books ............... 20.96ms DONE +bookstack | 2023_12_17_140913_add_description_html_to_entities ............ 69.67ms DONE +bookstack | 2024_01_01_104542_add_default_template_to_chapters ............ 21.06ms DONE +bookstack | 2024_02_04_141358_add_views_updated_index ..................... 28.41ms DONE +bookstack | 2024_05_04_154409_rename_activity_relation_columns ............ 35.58ms DONE +bookstack | 2024_09_29_140340_ensure_editor_value_set ...................... 2.62ms DONE +bookstack | 2024_10_29_114420_add_import_role_permission ................... 5.04ms DONE +bookstack | 2024_11_02_160700_create_imports_table ........................ 38.06ms DONE +bookstack | 2024_11_27_171039_add_instance_id_setting ..................... 10.79ms DONE +bookstack | 2025_01_29_180933_create_sort_rules_table ..................... 17.14ms DONE +bookstack | 2025_02_05_150842_add_sort_rule_id_to_books ................... 19.84ms DONE +bookstack | 2025_04_18_215145_add_content_refs_and_archived_to_comments ... 61.97ms DONE +bookstack | 2025_09_02_111542_remove_unused_columns ....................... 68.23ms DONE +bookstack | 2025_09_15_132850_create_entities_table ...................... 261.38ms DONE +bookstack | 2025_09_15_134701_migrate_entity_data ......................... 10.32ms DONE +bookstack | 2025_09_15_134751_update_entity_relation_columns ............. 823.66ms DONE +bookstack | 2025_09_15_134813_drop_old_entity_tables ...................... 47.79ms DONE +bookstack | 2025_10_18_163331_clean_user_id_references ................... 444.39ms DONE +bookstack | 2025_10_22_134507_update_comments_relation_field_names ........ 34.40ms DONE +bookstack | 2025_11_23_161812_create_slug_history_table .................. 117.46ms DONE +bookstack | 2025_12_15_140219_create_mention_history_table ................ 62.55ms DONE +bookstack | 2025_12_19_103417_add_views_viewable_type_index ............... 22.64ms DONE +bookstack | 2026_04_19_141616_add_revision_view_all_permission ............ 10.97ms DONE +bookstack | +bookstack | [custom-init] No custom files found, skipping... +bookstack | [ls.io-init] done. diff --git a/documentation/audits/r459-spike-2026-09-06/evidence/E3b/to-states.json b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/to-states.json new file mode 100644 index 00000000..b910bf46 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/to-states.json @@ -0,0 +1,14 @@ +{ + "bookstack": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "bookstack-db": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/r459-spike-2026-09-06/evidence/E3b/verdict.json b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/verdict.json new file mode 100644 index 00000000..8735e8db --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/evidence/E3b/verdict.json @@ -0,0 +1,33 @@ +{ + "harness_version": 1, + "edge": "E3b", + "app": "bookstack", + "note": "AUTHORED step: engine half alone", + "from": { + "bookstack": "lscr.io/linuxserver/bookstack:26.05.2", + "bookstack-db": "mariadb:11.6" + }, + "to": { + "bookstack": "lscr.io/linuxserver/bookstack:26.05.2", + "bookstack-db": "mariadb:12.3" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "bookstack-db | 2026-09-06 17:37:09+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": { + "bookstack-db": { + "image": "mariadb:12.3", + "probe": "datadir version | the engine's own upgrade verdict", + "answer": "11.6.2-MariaDB| Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! [exit=0]", + "probe_rc": 0 + } + }, + "duration_s": 0.2, + "measured_at": "2026-09-06T15:37:22Z", + "evidence": "evidence/E3b", + "total_s": 49.0 +} \ No newline at end of file diff --git a/documentation/audits/r459-spike-2026-09-06/evidence/summary.json b/documentation/audits/r459-spike-2026-09-06/evidence/summary.json new file mode 100644 index 00000000..0d8cb670 --- /dev/null +++ b/documentation/audits/r459-spike-2026-09-06/evidence/summary.json @@ -0,0 +1,35 @@ +[ + { + "harness_version": 1, + "edge": "E3b", + "app": "bookstack", + "note": "AUTHORED step: engine half alone", + "from": { + "bookstack": "lscr.io/linuxserver/bookstack:26.05.2", + "bookstack-db": "mariadb:11.6" + }, + "to": { + "bookstack": "lscr.io/linuxserver/bookstack:26.05.2", + "bookstack-db": "mariadb:12.3" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "bookstack-db | 2026-09-06 17:37:09+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": { + "bookstack-db": { + "image": "mariadb:12.3", + "probe": "datadir version | the engine's own upgrade verdict", + "answer": "11.6.2-MariaDB| Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! [exit=0]", + "probe_rc": 0 + } + }, + "duration_s": 0.2, + "measured_at": "2026-09-06T15:37:22Z", + "evidence": "evidence/E3b", + "total_s": 49.0 + } +] \ No newline at end of file diff --git a/documentation/backlog/OPEN-ITEMS.md b/documentation/backlog/OPEN-ITEMS.md index 5abb359f..a0f368bc 100644 --- a/documentation/backlog/OPEN-ITEMS.md +++ b/documentation/backlog/OPEN-ITEMS.md @@ -691,10 +691,12 @@ class (an image `VOLUME` at an unmounted path) is still live — `immich-server` | **R-456** | **[P3-LOW] A partly-dead stack is not a boot orphan, and that is written down nowhere.** MEASURED 2026-09-02 on demo-hp while validating v0.233.0: `docker rm -f bookstack` (leaving `bookstack-db` running) then a controller restart produced `Boot reconciliation: 1 boot-orphaned app(s) found: [bentopdf]` — **bookstack was NOT selected**, although the app container was gone and `desired_state: running` was recorded. Removing `bookstack-db` as well made the whole stack orphaned and the very next pass repaired it in 6.3 s. **So `bootrecon.isBootOrphan` requires the stack as a WHOLE to be down; one live member is enough to make it invisible to the reconciler.** **NOT called a defect, and the reason is part of the row:** `StateDegraded` IS in `IsDownState`, and the crash-loop/dead-app alarm path (`classifyRunStates`) does count a degraded stack as down — so the customer IS told; it is the automatic REPAIR that does not fire, and there may be a good reason (repairing half a stack while its DB is live is not obviously safe). **What is certain is that nobody has written the rule down**, so the next session re-derives it the same way this one did — by watching a reconciliation not happen, which is an absent observable and the weakest possible evidence. Either state the rule in `02-controller-module-map.md` with a test pinning it, or change it. Owner: **CC.** `tests/VALIDATION-update-slice12-2026-09-02.md` §2.2 | **READY — rank P3-LOW; owner: CC** | | **R-457** | **[P3-LOW] A test that hardcodes a date AND asserts an age derived from it is green on the day it is written and red the next morning — one instance PROVEN, six candidate files named.** MEASURED 2026-09-03: `TestGroupD_BadgeRendersOnBothSurfaces` (shipped the previous day in v0.233.0) pinned a fixture `catalog_since: "2026-07-18"` and asserted the rendered string `"Frissítés elérhető — 46 napja"`. **The pure badge tests inject a clock; the RENDER test does not and cannot** — it goes through the production templates, which call the funcmap entry `updateBadge`, which reads `time.Now()`. The suite was green on 2026-09-02 and **FAILED on 2026-09-03** with *"the behind badge is missing"* on both surfaces, because the true answer had become 47. **Fixed by DERIVING the fixture** — `catalog_since` is computed as *today minus 46 days*, so the test asserts the real number through the real clock and cannot rot. **THE CLASS, which is why this is a row and not just a fix:** a clock-reading test that also carries a date LITERAL is a bomb with a fuse of unknown length, and the suite being green is not evidence it is defused — it is evidence the fuse has not burned down yet. **NAMED AS UNCHECKED CANDIDATES, NOT ACCUSED** — six other test files contain both a `20xx-xx-xx` literal and `time.Now()`: `internal/backup/offbox_test.go`, `internal/web/handler_export_upload_test.go`, `internal/web/r103_tier2_action_test.go`, `internal/web/dashboard_backup_card_test.go`, `internal/web/async_restore_test.go`, `internal/stacks/installed_test.go`. Mixing the two is not itself a defect — it is one only where a literal feeds an assertion evaluated against the real clock — so each needs reading, which is a sweep and not this session. **The instrument that would end the class:** run the suite once under a faked future date in CI and see what turns red. Owner: **CC.** `felhom-controller` v0.234.0 CHANGELOG | **READY — rank P3-LOW; owner: CC** | | **R-458** | **[P3-LOW] `.felhom.yml` keeps flowing to an app whose compose file is FROZEN, so a frozen app can receive a health check written for a version it is not running.** The v0.235.0 render freezes `docker-compose.yml` for a pinned app once the catalog moves past its version, but copies `.felhom.yml` **verbatim in every case** (`Syncer.copyTemplates`). **The asymmetry is deliberate and both directions were considered:** `.felhom.yml` carries no image, and it carries `catalog_since` — the single input the update badge uses to say *„Frissítés elérhető — N napja"* — so freezing it would silently withhold the one number that tells a customer they are behind, i.e. it would break slice 2 to protect slice 3. **What it costs:** the file also carries the controller-side `healthcheck:` block and resource hints, so a template updated for a newer version can hand a frozen app a probe written for software it is not running. **THE FAILURE DIRECTION IS A FALSE ALARM, NEVER DATA LOSS** — the app keeps running; at worst it renders as degraded and, if it persisted, could reach the dead-app alarm path. That is the same class as R-330's false e-mails, which is why this is a row and not a footnote. **Not fixed now, and the reason is that the cheap fix is wrong:** freezing the whole file breaks the badge, and freezing only the `healthcheck:` key means the syncer would have to parse and re-assemble a customer-facing metadata file — new surface on the one path that touches every app on every box every 15 minutes. **What would settle it:** whether any catalog `healthcheck:` has ever been changed in the same commit as an `image:` line (measurable from the catalog's own history, no box needed). If the answer is "never", the exposure is theoretical and the row can be closed by measurement instead of by code. Owner: **CC.** `architecture/09-update-architecture.md` §5.4, §8.5 | **READY — rank P3-LOW; owner: CC** | -| **R-459** | **[P2-MEDIUM] Our own bookstack template moves MariaDB across a MAJOR while the image tells us, in its own words, that the datadir upgrade it needs is being SKIPPED.** MEASURED 2026-09-06 in a throwaway guest, on the catalog's own transition `0b73e5e` (mariadb `11.6` → `12.3`): the moment 12.3 starts on the 11.6 datadir it logs **`[Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting`** — and then serves normally. `templates/bookstack/docker-compose.yml` sets **no `MARIADB_*` environment at all**, so `MARIADB_AUTO_UPGRADE` is unset and the entrypoint declines to run `mariadb-upgrade`. **THE CAUSE IS ASSIGNED, NOT GUESSED:** the edge was decomposed, and the app half alone (`E3a`, engine held at 11.6) produces **no** upgrade line while both edges that move the engine (`E3`, `E3b`) produce it. A bundled edge could never have said which half. **AND IT EXPLAINS A RESULT THAT LOOKED LIKE GOOD NEWS:** the abort of E3 "worked" — 11.6 came back and served the data, logging `MariaDB upgrade not required` — **because the datadir was never converted.** The reversibility is a side-effect of an upgrade that did not fully happen. **WHAT IS NOT ESTABLISHED, and this row must not be read past: whether running 12.3 on an unconverted 11.6 datadir ever actually breaks.** It did not break here. MariaDB calls the upgrade required; we measured that it is skipped and did **not** measure a consequence. **What would settle it, cheaply:** run the E3 edge, then restart the stack several times and exercise the app, watching for the entrypoint's own complaint to become an error — one guest, no new mechanism. **The fix, if the consequence is real, is one line of template env**, but setting `MARIADB_AUTO_UPGRADE` fleet-wide is a change to how every MariaDB app upgrades and is the operator's call, not a quiet edit. Owner: **CC measures, VIKTOR rules on the fleet-wide env.** `audits/SPIKE-upgrade-test-2026-09-06.md` §4 | **READY — rank P2-MEDIUM; owner: CC measures, VIKTOR rules** | +| **R-459** | **[P3-LOW, was P2] MEASURED 2026-09-06 — the skipped MariaDB conversion is STABLE but never self-resolving, and fixing it costs 7 SECONDS and does NOT cost the ability to go back.** The consequence R-459 deliberately left unmeasured is now measured: `audits/SPIKE-r459-mariadb-upgrade-2026-09-06.md`. **(1) It does not degrade: 5 of 5 restarts of 12.3 on the 11.6 datadir, readback passed every time, `mariadb_upgrade_info` unchanged at `11.6.2-MariaDB`, and the entrypoint's line never escalated past `[Note]`.** **(2) It never heals either** — the engine answers `Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!` on every start, and will forever. **(3) THE TRADE THIS ROW WAS EXPECTED TO PRODUCE DOES NOT EXIST.** The fear was that converting properly would end the ability to abort. Measured: with `MARIADB_AUTO_UPGRADE=1` the conversion **succeeds** across the multi-major jump (so it is not a stepping problem either), takes **7 s**, takes its own system-database backup first (`system_mysql_backup_11.6.2-MariaDB.sql.zst`), and **putting 11.6 back afterwards still starts and serves the data**. **So the choice is no longer a trade; it is a cheap correction.** **WHAT REMAINS OPEN IS THE DECISION, NOT THE MEASUREMENT:** setting `MARIADB_AUTO_UPGRADE` changes how **four** apps upgrade — bookstack (the only one that has moved a major), kimai, nextcloud, romm — and R-459's original owner line reserves a fleet-wide env change for the operator. **Nothing was committed to any template**; the comparison arm used a scratch copy inside a throwaway guest. **NOT ESTABLISHED, and not smuggled in: whether any specific MariaDB FEATURE misbehaves on unconverted system tables.** This run exercised BookStack's normal read/write path only, over minutes, with one seeded record. **Rank dropped P2 → P3** because the failure mode is now bounded by measurement rather than unknown. Raised in `STATUS.md`. | **WAITING-ON-OPERATOR — rank P3-LOW; owner: VIKTOR rules on the fleet-wide env, CC implements** | | **R-460** | **[P3-LOW] BookStack's FILE half cannot be seeded or verified without a browser, so its upgrades can only ever be auto-proven for the DATABASE.** MEASURED 2026-09-06 while building the R-449 harness. BookStack's API needs a token that is only mintable through its web UI, and its HTTP login is unusable headlessly for a second, independent reason: `APP_URL` comes from the template as `https://${SUBDOMAIN}.${DOMAIN}`, so the app marks its session and XSRF cookies **`secure`**; curl over plain http stores neither and **every login POST returns 419 Page Expired**, which looks exactly like a wrong password. The container serves no TLS. **The database half IS provable** — the harness seeds with `php artisan bookstack:create-admin` and reads back with a DIFFERENT artisan command that must find the record, carrying its own negative control on every call. **What is unprovable is an uploaded image or attachment**, i.e. exactly the half a customer would notice. **THIS IS A FACT ABOUT THE APP, NOT A DEFECT IN THE HARNESS**, and it is recorded because Slice 6 needs to know which apps can be auto-verified and which can only be partly verified — nobody had that list before. **Deliberately NOT worked around:** planting a file in the volume would make the test pass while proving nothing, which is R-156's exact failure. **What would remove it:** a headless token route (upstream), or accepting a browser-driven step for this app alone, which DooPlex cannot run. Owner: **CC.** `audits/SPIKE-upgrade-test-2026-09-06.md` §6 | **READY — rank P3-LOW; owner: CC** | | **R-461** | **[P3-LOW] `runbooks/target-selection.md` names a venue that does not exist and fences a fixture that is gone.** MEASURED 2026-09-06 on demo-hp while siting the R-449 guest. (a) The runbook says to put VM disks on a dir storage at **`/mnt/nvme-1tb`, at its root**. **There is no `/mnt/nvme-1tb`** — the 1 TB NVMe is mounted at **`/mnt/hdd_1`**, which is the enrolled user-data drive and the `felhom-backup` target, i.e. the same disk under a different path. The instruction's REASON is still exactly right (`local-lvm` is an over-subscribed thin pool backing the live guest 9201, and this run kept off it — `local-lvm` read **30.50 % before and after**), so the fence held; only its address is stale. (b) The runbook forbids destroying **`drill-r50` (VM 300)**, "the only drift fixture (R-93)". **`qm list` returns nothing on demo-hp** — there are no VMs at all. **The fence currently protects nothing, and R-93's premise that a drift fixture exists is false.** **Why it is a row and not a quiet edit:** a runbook that names a path nobody can find is one a session works around, and working around a safety instruction is how the instruction stops being followed. Both halves need checking against the box before the text is changed — (b) in particular may mean R-93 should be closed or reopened as "the drift fixture is gone", which is a different fact from "do not destroy it". Owner: **CC.** `audits/SPIKE-upgrade-test-2026-09-06.md` §7 | **READY — rank P3-LOW; owner: CC** | | **R-462** | **[P2-MEDIUM] Widen the upgrade harness beyond three apps — and the cost is dominated by FIXTURES, not by machine time.** The R-449 harness works and is proven by a red negative control (`audits/SPIKE-upgrade-test-2026-09-06.md` §1). **Costed with this run's REAL numbers rather than an estimate:** a successful edge takes **6.4 s – 305.1 s, median 71.8 s**; a FAILING edge takes **556 s**, roughly **8×**, because a negative is only honest if it waits out the full settle window; 3 apps / 11 images cost **5.07 GB**, so 53 apps naively extrapolate to **~90 GB** and, at the median, about an hour of harness time for one edge each. **THAT EXTRAPOLATION UNDERSTATES THE REAL COST BY AN ORDER OF MAGNITUDE, and that is the point of this row.** Two of the three apps needed a bespoke non-browser seed route; one needed two attempts and a discarded approach; one (bookstack) can only ever be half-proven (R-460). **Fixture time scales with apps and does not amortise.** **The decision this row is really asking for is scope, not schedule:** all 53, or only the apps a customer would lose data from, or only apps whose catalog transition is a MAJOR. **Recommended shape, NOT a design — the operator picks:** start with the apps that carry a database, because §3 measured that the abort question only ever bites there. Owner: **VIKTOR rules on scope, CC implements.** `audits/SPIKE-upgrade-test-2026-09-06.md` §5 | **READY — rank P2-MEDIUM; owner: VIKTOR rules on scope, CC implements** | +| **R-463** | **[P2-MEDIUM] The day the catalog moves `postgres:16` to `17`, ELEVEN apps are affected and the container image will NOT perform the conversion — and nothing anywhere records that.** MEASURED 2026-09-06: 11 of the 53 templates carry PostgreSQL — **8 on `postgres:16-alpine`**, 1 on `postgres:15-alpine`, plus `postgis/postgis:16-3.5-alpine` and Immich's own `postgres:16-vectorchord…` build. **A grep of the whole register for `pg_upgrade`, "postgres major" or "postgresql major" returns ZERO** (confirmed this session, and confirmed again before filing). **WHY IT IS NOT THE SAME PROBLEM AS R-459, and this is the point of the row: the two engines fail in OPPOSITE directions.** MariaDB starts anyway and skips the conversion quietly, which is why R-459 went unnoticed until a harness looked. **PostgreSQL REFUSES TO START on a datadir from an older major** — the official image performs no `pg_upgrade` and exits with a message naming both versions. So the Postgres case cannot hide; it will present as eight apps down at once, on the sync after the catalog moves. **DELIBERATELY NOT MEASURED HERE, and saying so is the scope discipline:** R-459's task was scoped to MariaDB, and measuring the Postgres analogue is its own piece of work with its own venue. **This row exists so the gap is a record rather than a sentence in an audit nobody greps.** What would settle it: one edge on the existing harness (`postgres:16-alpine` → `17-alpine`) on a scratch host, which would also exercise the `engine_state_after` field's Postgres probe end to end — it is written but has never run against a real Postgres major. Owner: **CC.** `audits/SPIKE-r459-mariadb-upgrade-2026-09-06.md` §7 | **READY — rank P2-MEDIUM; owner: CC** | +| **R-464** | **[P3-LOW] MariaDB's entrypoint prints `MariaDB upgrade not required` on an UNSUPPORTED DOWNGRADE, so that line cannot be used as a soundness signal.** MEASURED 2026-09-06. After converting a datadir to `12.3.3-MariaDB` and then starting **11.6** on it, the entrypoint logs, on every start: **`[Note] [Entrypoint]: MariaDB upgrade not required`**. Asked properly, the same engine answers **`FATAL ERROR: Version mismatch (12.3.3-MariaDB -> 11.6.2-MariaDB): Trying to downgrade from a higher to lower version is not supported!`** **The entrypoint compares the datadir's recorded version against its own and concludes there is nothing to DO. That is true, and it is not a statement that the state is sound.** **THIS IS THIS PROJECT'S MOST-REPEATED CLASS, in a new costume** — the same shape as `CLAUDE.md`'s "presence is not success" and as R-443's HTTP 200 over a crash-looping app: a reassuring sentence that answers a narrower question than the one a reader will take it for. **Why it is worth a row rather than a footnote: the obvious cheap instrument for R-459 is to grep container logs for that exact line**, and such an instrument would report "fine" for an unsupported downgrade. **The correct probe is `mariadb-upgrade --check-if-upgrade-is-needed`**, which is what `upgrade-test.py`'s `engine_state_after` now uses. **Also recorded, because it nearly produced a wrong answer here: run without credentials that command returns `ERROR 1045 … FATAL ERROR: Upgrade failed` with exit 1** — an authentication failure wearing the shape of a verdict. Owner: **CC.** `audits/SPIKE-r459-mariadb-upgrade-2026-09-06.md` §5.4 | **READY — rank P3-LOW; owner: CC** |