fix(backend): Neustart gegen die eigene Datenbank, /info als Lebendprobe

Der Dienst lief einmal und stuerzte danach in einer Schleife: MODE=PostgreSQL
laesst H2 unquotierte Bezeichner klein anlegen, Liquibase sucht seine
Verwaltungstabellen gross, findet nichts, legt sie an — "Table
databasechangelog already exists". Der erste Start ging, jeder weitere nicht.
Gemessen mit dem echten Jar: ohne den Modus laufen beide. Liquibase auf
Kleinschreibung zu konfigurieren half nicht, es korrigiert den Namen selbst
zurueck — deshalb weicht der Modus ganz.

Die Testsuite konnte das nicht finden (jeder Test bekommt eine frische
In-Memory-DB), und der Regressionstest dafuer hat zweimal gelogen: erst reichte
er die URL als Default-Property herein, die die application.yaml ueberstimmt;
dann als Argument, aber damit pruefte er eine URL, die er sich selbst
ausgedacht hatte. Jetzt hat die URL einen Regler (werkbaum.data-dir), der Test
ueberschreibt nur den, und die Gegenprobe faellt.

Dieselbe Sorte Fehler eine Ebene hoeher: Die Testkonfiguration hiess
application.yaml und verdeckte damit die Hauptkonfiguration vollstaendig. Sie
ist jetzt eine Profil-Ueberlagerung.

Dazu GET /api/v1/info mit Name, Version und Bauzeitpunkt. Die Lebendprobe
erwartete bisher eine 404 von einem Dokument, das es nicht gibt — ein
erwarteter Fehler ist eine schlechte Zusicherung, dieselbe 404 liefert auch ein
falsch konfigurierter Proxy.

138 Backend-Tests. Gegenprobe: MODE=PostgreSQL zurueck -> genau der
Neustart-Test faellt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-26 19:02:51 +02:00
co-authored by Claude Opus 5
parent 78901793f0
commit dea904814b
17 changed files with 436 additions and 52 deletions
+9 -3
View File
@@ -116,7 +116,8 @@
- [ ] #be: Backend (XL)
- [/] #be.scaffold: Kotlin and Spring Boot scaffold (M)
- [^] #be.scaffold.gradle: Gradle Kotlin DSL, JDK 21 (S)
- [ ] #be.scaffold.ci: Health endpoint and CI (S)
- [x] #be.scaffold.info: An endpoint that says name and version (XS)
- [ ] #be.scaffold.ci: Continuous integration for the backend (S)
- [^] #be.docs: Documents on the server (L) :#be.scaffold
- [^] #be.docs.model: Text plus metadata, no structure format (M)
- [^] #be.docs.rest: REST endpoints (S)
@@ -768,9 +769,14 @@
The build itself: Kotlin DSL, one module, the current long-term-support
Java.
#be.scaffold.info
Something to ask "are you there, and which build is it?" — open and without
side effects. Expecting a 404 from a document that does not exist would be a
poor assurance: a misconfigured proxy returns one too.
#be.scaffold.ci
Enough to see that it lives: a health endpoint, and a pipeline that builds
and tests it on every push.
A pipeline that builds and tests the backend on every push, like the editor
has. The "is it alive" half moved out into its own node and is done.
#be.docs
Documents on a server instead of in one browser. Text plus metadata —