satisfactory: dev und server brechen bei --set <block>=null mit nil-Pointern ab (Rest von #99) #16

Closed
opened 2026-09-16 16:03:30 +02:00 by jlab-bot · 1 comment
Member

Migriert aus jk-cluster/helm-charts#230 — urspruenglich angelegt von jk-cluster-bot am 2026-09-02.

Verweise der Form #123 im folgenden Text beziehen sich auf die GitHub-Nummerierung, nicht auf die Nummern in diesem Repo. Geschlossene Issues wurden nicht mitgezogen und sind weiterhin nur auf GitHub lesbar.


Bei satisfactory brechen zwei Werte-Blöcke mit einem nil-Pointer ab, wenn man sie auf null setzt:

--set dev=null      → nil pointer, satisfactory/templates/satisfactory.sfs.yaml:27
--set server=null   → nil pointer, satisfactory/templates/satisfactory.sfs.yaml:13

Beiden fehlt die Null-Absicherung aus #99. Für den dritten Block, game, wurde sie in #215 / PR #228 (Chart 7.0.0) nachgezogen — dev und server blieben bewusst außen vor, weil sie nichts mit der dortigen Umbenennung zu tun hatten.

Warum das zählt

--set <block>=null ist keine Spielerei, sondern der übliche Weg, einen ganzen Werte-Block auf die Chart-Vorgaben zurückzusetzen — etwa wenn ein Bundle einen Block erbt und ihn loswerden will. Statt auf die Defaults zurückzufallen, bricht das Rendern ab. Der Fehler ist laut, immerhin, aber er trifft eine legitime Verwendung.

Nach #228 ist der Chart in dieser Hinsicht halb abgesichert: game fällt sauber zurück, die beiden Nachbarblöcke nicht. Diese Inkonsistenz ist für sich genommen eine Falle — wer sieht, dass game=null funktioniert, nimmt an, dass server=null es auch tut.

Belegt

Gemessen vom Umsetzungs-Agenten bei #215, im PR-Text von #228 ausgewiesen. Der Befund zu game wurde dort vorher/nachher belegt; für dev und server liegt die Messung des Vorzustands vor, die Behebung steht aus. Von mir nicht nachgestellt.

Umfang

Beide Blöcke über dieselben null-sicheren Fallback-Helfer führen, die game seit 7.0.0 benutzt. Kein neues Muster, keine neuen Werte — die Vorlage steht im selben Chart.

Zu belegen bei der Umsetzung: --set dev=null, --set server=null und Teil-Nulls rendern auf die Vorgaben, und das gerenderte Ergebnis bei normalen Werten ist gegenüber vorher unverändert.

Versionsstufe

Vermutlich Patch: eine Fehlerbehebung ohne Verhaltens- oder Schema-Änderung — bei gültigen Werten rendert der Chart exakt wie zuvor, es verschwindet nur ein Abbruch. Falls sich bei der Umsetzung zeigt, dass sich doch etwas an der Ausgabe ändert, gehört das gemeldet statt weggebumpt.

> Migriert aus [`jk-cluster/helm-charts#230`](https://github.com/jk-cluster/helm-charts/issues/230) — urspruenglich angelegt von **jk-cluster-bot** am 2026-09-02. > > Verweise der Form `#123` im folgenden Text beziehen sich auf die **GitHub-Nummerierung**, nicht auf die Nummern in diesem Repo. Geschlossene Issues wurden nicht mitgezogen und sind weiterhin nur auf GitHub lesbar. --- Bei `satisfactory` brechen zwei Werte-Blöcke mit einem nil-Pointer ab, wenn man sie auf `null` setzt: ``` --set dev=null → nil pointer, satisfactory/templates/satisfactory.sfs.yaml:27 --set server=null → nil pointer, satisfactory/templates/satisfactory.sfs.yaml:13 ``` Beiden fehlt die Null-Absicherung aus #99. Für den dritten Block, `game`, wurde sie in **#215 / PR #228** (Chart 7.0.0) nachgezogen — `dev` und `server` blieben bewusst außen vor, weil sie nichts mit der dortigen Umbenennung zu tun hatten. ## Warum das zählt `--set <block>=null` ist keine Spielerei, sondern der übliche Weg, einen ganzen Werte-Block auf die Chart-Vorgaben zurückzusetzen — etwa wenn ein Bundle einen Block erbt und ihn loswerden will. Statt auf die Defaults zurückzufallen, bricht das Rendern ab. Der Fehler ist laut, immerhin, aber er trifft eine legitime Verwendung. Nach #228 ist der Chart in dieser Hinsicht **halb abgesichert**: `game` fällt sauber zurück, die beiden Nachbarblöcke nicht. Diese Inkonsistenz ist für sich genommen eine Falle — wer sieht, dass `game=null` funktioniert, nimmt an, dass `server=null` es auch tut. ## Belegt Gemessen vom Umsetzungs-Agenten bei #215, im PR-Text von #228 ausgewiesen. Der Befund zu `game` wurde dort vorher/nachher belegt; für `dev` und `server` liegt die Messung des Vorzustands vor, die Behebung steht aus. Von mir nicht nachgestellt. ## Umfang Beide Blöcke über dieselben null-sicheren Fallback-Helfer führen, die `game` seit 7.0.0 benutzt. Kein neues Muster, keine neuen Werte — die Vorlage steht im selben Chart. Zu belegen bei der Umsetzung: `--set dev=null`, `--set server=null` und Teil-Nulls rendern auf die Vorgaben, und das gerenderte Ergebnis bei normalen Werten ist gegenüber vorher **unverändert**. ## Versionsstufe Vermutlich **Patch**: eine Fehlerbehebung ohne Verhaltens- oder Schema-Änderung — bei gültigen Werten rendert der Chart exakt wie zuvor, es verschwindet nur ein Abbruch. Falls sich bei der Umsetzung zeigt, dass sich doch etwas an der Ausgabe ändert, gehört das gemeldet statt weggebumpt.
Author
Member

Freigegebener Umsetzungsplan (Manager-Sitzung, 2026-09-22).

Vorzustand nachgestellt

Das Issue hält fest, dass der Vorzustand nicht nachgestellt wurde. Nachgeholt, mit helm template auf dem aktuellen Stand von main:

--set dev=null     -> nil pointer, satisfactory.sfs.yaml:27  <.Values.dev.debug>
--set server=null  -> nil pointer, satisfactory.sfs.yaml:13  <.Values.server.replicas>
--set game=null    -> rendert sauber, 3 Objekte

Der Befund stimmt also genau, einschließlich der Zeilennummern.

Umfang ist größer als im Issue beschrieben

server wird nicht nur in der StatefulSet-Vorlage gelesen, sondern auch in satisfactory.service.yaml, satisfactory.pvc.yaml und in NOTES.txt (Zeilen 1-3, 8, 9, 14); dev.debug zusätzlich in NOTES.txt:24.

Das ist deshalb wichtig, weil helm template die NOTES gar nicht rendert: Eine Korrektur, die nur die Vorlagen anfasst, sieht im helm template grün aus und bricht erst beim echten helm install ab. Aus dem Quelltext gelesen, nicht gemessen — die Umsetzung soll es messen.

Vorgabe zur Umsetzung

Zwei Helfer analog zu satisfactory.game, über satisfactory.defaultedDict, und alle vier Dateien darüber führen.

Eine Design-Vorgabe: Der server-Helfer kopiert die Ressourcen-Vorgaben nicht noch einmal als Default. server.resources läuft bereits durch satisfactory.effectiveResources, das selbst null-sicher ist; eine zweite Kopie von limitFactor: 2 und 4Gi würde nur eine dritte Stelle schaffen, die auseinanderlaufen kann. Der Helfer reicht den Block durch.

Versionsstufe

Patch, 7.0.0 -> 7.0.1. Bedingung aus dem Issue bleibt: Wenn sich das gerenderte Ergebnis bei gültigen Werten doch ändert, wird das gemeldet statt weggebumpt.

Nachzuweisen

--set dev=null, --set server=null, Teil-Nulls je Block, und dass NOTES bei genullten Blöcken ebenfalls durchläuft. Dazu ein Vorher-Nachher-Vergleich des Renderings bei normalen Werten.

Freigegebener Umsetzungsplan (Manager-Sitzung, 2026-09-22). ## Vorzustand nachgestellt Das Issue hält fest, dass der Vorzustand nicht nachgestellt wurde. Nachgeholt, mit `helm template` auf dem aktuellen Stand von main: ``` --set dev=null -> nil pointer, satisfactory.sfs.yaml:27 <.Values.dev.debug> --set server=null -> nil pointer, satisfactory.sfs.yaml:13 <.Values.server.replicas> --set game=null -> rendert sauber, 3 Objekte ``` Der Befund stimmt also genau, einschließlich der Zeilennummern. ## Umfang ist größer als im Issue beschrieben `server` wird nicht nur in der StatefulSet-Vorlage gelesen, sondern auch in `satisfactory.service.yaml`, `satisfactory.pvc.yaml` und in `NOTES.txt` (Zeilen 1-3, 8, 9, 14); `dev.debug` zusätzlich in `NOTES.txt:24`. Das ist deshalb wichtig, weil `helm template` die NOTES gar nicht rendert: Eine Korrektur, die nur die Vorlagen anfasst, sieht im `helm template` grün aus und bricht erst beim echten `helm install` ab. Aus dem Quelltext gelesen, nicht gemessen — die Umsetzung soll es messen. ## Vorgabe zur Umsetzung Zwei Helfer analog zu `satisfactory.game`, über `satisfactory.defaultedDict`, und alle vier Dateien darüber führen. Eine Design-Vorgabe: Der `server`-Helfer kopiert die **Ressourcen-Vorgaben nicht** noch einmal als Default. `server.resources` läuft bereits durch `satisfactory.effectiveResources`, das selbst null-sicher ist; eine zweite Kopie von `limitFactor: 2` und `4Gi` würde nur eine dritte Stelle schaffen, die auseinanderlaufen kann. Der Helfer reicht den Block durch. ## Versionsstufe Patch, `7.0.0` -> `7.0.1`. Bedingung aus dem Issue bleibt: Wenn sich das gerenderte Ergebnis bei gültigen Werten doch ändert, wird das gemeldet statt weggebumpt. ## Nachzuweisen `--set dev=null`, `--set server=null`, Teil-Nulls je Block, und dass NOTES bei genullten Blöcken ebenfalls durchläuft. Dazu ein Vorher-Nachher-Vergleich des Renderings bei normalen Werten.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jlab-cluster/helm-charts#16