Bugfix V3.2: RunLockPort-JavaDoc korrigiert und Backup-Fehler bei aktivem Scheduler behoben
BUG 1: RunLockPort-JavaDoc dokumentierte den Scheduler-Tick faelschlicherweise als nicht-blockierenden Pfad mit tryAcquire(). Da execute() intern acquire() aufruft, wuerde tryAcquire() vor execute() einen Double-Lock erzeugen. JavaDoc korrigiert: Scheduler-Tick nutzt denselben blockierenden acquire()-Pfad wie der manuelle Lauf. BUG 2: GuiConfigurationPropertiesWriter.copyFile() faengt jetzt AccessDeniedException separat ab und liefert den klaren Hinweis "Konfiguration kann nicht gespeichert werden - Scheduler laeuft." statt einer generischen Fehlermeldung. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+7
-7
@@ -16,18 +16,18 @@ import java.util.Optional;
|
||||
* <li>Kontrollierten Startabbruch ermöglichen, wenn bereits eine Instanz läuft</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* Lock-Lifecycle (blockierender Pfad – headless und manueller GUI-Lauf):
|
||||
* Lock-Lifecycle (blockierender Pfad – headless, manueller GUI-Lauf und Scheduler-Tick):
|
||||
* <ol>
|
||||
* <li>Lock beim Laufstart erwerben ({@link #acquire()})</li>
|
||||
* <li>Lock für die gesamte Dauer des Laufs halten</li>
|
||||
* <li>Lock am Laufende freigeben ({@link #release()}), auch bei Fehler</li>
|
||||
* </ol>
|
||||
* Lock-Lifecycle (nicht-blockierender Pfad – Scheduler-Tick):
|
||||
* <ol>
|
||||
* <li>Lock nicht-blockierend versuchen ({@link #tryAcquire()})</li>
|
||||
* <li>Bei leerem Optional sofort mit {@code SkippedBusy} abbrechen</li>
|
||||
* <li>Bei vorhandenem Handle in try-with-resources verwenden</li>
|
||||
* </ol>
|
||||
* Der Scheduler-Tick verwendet dieselbe blockierende Methode {@link #acquire()} wie
|
||||
* der manuelle Laufpfad. {@link BatchRunProcessingUseCase#execute execute()} ruft
|
||||
* {@link #acquire()} intern auf; das Ergebnis {@code LOCK_UNAVAILABLE} signalisiert
|
||||
* dem Aufrufer, dass ein paralleler Lauf aktiv ist.
|
||||
* {@link #tryAcquire()} ist für Aufrufer vorgesehen, die außerhalb des Use-Case
|
||||
* einen schnellen, nicht-blockierenden Lock-Versuch benötigen.
|
||||
*/
|
||||
public interface RunLockPort {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user