5.6 KiB
PROD-Analyse: Shutdown-Dialog nicht sichtbar
Datum: 27.08.2026
Zielversion: 2.3.4
Befund: Nach der Receive-Location-Phase wurde kein sichtbarer Dialog zur Bestätigung des Leerlaufens wahrgenommen.
Ergebnis der Ursachenanalyse
Der fachliche Checkpoint war in Version 2.3.3 vorhanden: Jeder Shutdown-Plan mit nachgelagerter Arbeit enthält genau eine persistierte OperatorCheckpoint-Zeile vor Orchestrierungen, Send Ports und lokalen Host Instances. Ohne Callback, bei einem Fehler oder bei Nein stoppt der Executor fail-closed; keine geschützte spätere Phase wird ausgeführt.
Die Oberfläche hatte aber zwei voneinander unabhängige Sichtbarkeitsprobleme:
- Dry run ist standardmäßig aktiv. In diesem Modus wird keine Receive Location deaktiviert. Deshalb wird der echte Entscheidungsdialog absichtlich nicht aufgerufen; nur die Checkpoint-Zeile wird simuliert. Der kleine Haken und der generische Status machten diesen Unterschied während der Ausführung nicht eindeutig.
- Die Bestätigungen hatten keinen Fenster-Owner.
MessageBox.Show(...)wurde aus dem UI-Thread aufgerufen, aber nicht an das Hauptformular gebunden. Unter RDP, nach Monitorwechseln oder bei abweichender Z-Order konnte der modale Dialog hinter dem Hauptfenster beziehungsweise außerhalb des erwarteten Vordergrunds liegen. Der Background-Worker wartete dann korrekt aufInvoke, während das Hauptfenster weiterhin nurPreparing shutdown...zeigte und deaktiviert wirkte.
Der Screenshot allein unterscheidet die beiden Fälle nicht, weil der Einstellungsbereich mit Dry run nicht sichtbar und kein shutdown-result.json beigefügt ist. Der sichtbare Zustand Preparing shutdown... bei bereits dargestelltem Plan ist jedoch mit einem wartenden, owner-losen Plan- oder Drain-Dialog vereinbar. Ein abgeschlossenes DryRun=true mit leerer CheckpointDecision belegt dagegen die beabsichtigte Simulation.
Korrektur in 2.3.4
- Planfreigabe, Drain-Entscheidung und Emergency-Restore-Bestätigung verwenden das Hauptformular explizit als Owner und holen es vor dem Anzeigen nach vorn.
- Unmittelbar vor der echten Drain-Entscheidung meldet die Statuszeile:
ACTION REQUIRED: Shutdown paused. - Der Titel des Checkpoints beginnt mit
ACTION REQUIRED; der Text erklärt, dass der Shutdown pausiert ist und Nein oder Schließen sicher stoppt. - Die erste Freigabe eines echten Shutdowns kündigt den zweiten Dialog nach der Receive-Location-Phase ausdrücklich an.
- Dry-run und Realbetrieb haben gut sichtbare, farblich getrennte Texte. Während einer Operation sind diese Einstellungen gesperrt.
- Ein Shutdown-Dry-run zeigt einen eigenen owner-gebundenen Hinweis: keine Runtime-Änderung, keine deaktivierte Receive Location und daher keine echte Drain-Entscheidung.
Die Sicherheitssemantik bleibt unverändert: Das Tool behauptet keinen automatisch erkannten Leerlauf. Nur der Operator kann nach Prüfung von Group Hub und Enterprise-Monitoring mit Ja fortsetzen.
Diagnose vorhandener 2.3.2/2.3.3-Läufe
shutdown-result.json und shutdown-plan.json sichern und wie folgt bewerten:
| Evidenz | Bedeutung |
|---|---|
DryRun=true, Checkpoint-Outcome DryRun, keine CheckpointDecision |
Erwartete Simulation; es gab keine Runtime-Änderung und bewusst keinen Entscheidungsdialog. |
Kein Ergebnisreport, UI bleibt bei Preparing shutdown... |
Lauf wartet möglicherweise auf einen verdeckten Plan- oder Drain-Dialog; Taskwechsel/Alt+Tab prüfen. Prozess nicht blind beenden. |
DryRun=false, CheckpointDecision=Stop |
Operator hat Nein gewählt oder sicher gestoppt; spätere Zeilen müssen NotExecuted sein. |
DryRun=false, CheckpointDecision=Error |
Dialogmechanismus fehlte/fehlerhaft; fail-closed, spätere Zeilen müssen NotExecuted sein. |
DryRun=false, CheckpointDecision=Continue |
Eine positive Entscheidung wurde erfasst; spätere Phasen durften laufen. |
Plan ohne OperatorCheckpoint |
Nur zulässig, wenn keine Orchestrierung, kein Send Port und keine lokale Host Instance nachgelagert herunterzufahren war. |
PROD-Abnahme 2.3.4
- Setup 2.3.4 als Administrator installieren und im Setup-Log
setup_version=2.3.4.0sowie den erfolgreichen Ziel-Self-Test prüfen. - Tooldateiversion und Self-Test-Ausgabe
2.3.4-net461prüfen. - Dry run aktiviert lassen, Shutdown wählen und den Hinweis
Shutdown Dry Run - No Runtime Changesprüfen. Es darf keine BizTalk-Mutation stattfinden. shutdown-plan.jsonprüfen: Bei späterer Shutdown-Arbeit stehtOperatorCheckpointvor Orchestrierungen, Send Ports und Host Instances.- In einem freigegebenen Wartungsfenster Dry run deaktivieren. Der Modus muss
REAL EXECUTION - drain dialog requiredanzeigen. - Den gespeicherten Plan im ersten owner-gebundenen Dialog bestätigen.
- Nach den Receive Locations muss die Statuszeile
ACTION REQUIREDzeigen und der DialogACTION REQUIRED - Confirm BizTalk Inbound Drainvor dem Hauptfenster stehen. - Zuerst Nein testen.
shutdown-result.jsonmussCheckpointDecision=Stopund für alle späteren ZeilenNotExecutedenthalten. - Den kontrollierten Test wiederholen, Group Hub/Monitoring prüfen und erst nach bestätigtem Leerlauf Ja wählen. Danach dürfen Orchestrierungen, Send Ports und Host Instances folgen.
- RDP minimieren/wiederherstellen und, falls im Betrieb üblich, Monitorwechsel testen. Der owner-gebundene Dialog muss dem Hauptfenster zugeordnet bleiben.
Die portable Verifikation umfasst Release-Build aller vier Projekte, 43 Regressionstests, Runtime-Self-Test und die manifest-/hashgeprüfte Paketierung. Die abschließende Sichtbarkeits- und BizTalk-Abnahme bleibt ein Windows-/PROD-Test.