Document that the time_sensitive column has to be reset once
Build package / php-lint (8.2) (push) Successful in 50s
Build package / php-lint (8.3) (push) Successful in 36s
Build package / php-lint (8.4) (push) Successful in 40s
Build package / xml-lint (push) Successful in 11s
Build package / unit-tests (push) Successful in 44s
Build package / package (push) Successful in 50s
Build package / php-lint (8.2) (push) Successful in 50s
Build package / php-lint (8.3) (push) Successful in 36s
Build package / php-lint (8.4) (push) Successful in 40s
Build package / xml-lint (push) Successful in 11s
Build package / unit-tests (push) Successful in 44s
Build package / package (push) Successful in 50s
Shipping the TIME_SENSITIVE change is not enough for instances that already ran the job: getNext() filters on the time_sensitive column of oc_jobs, and JobList::setLastRun() only ever sets it to TIME_INSENSITIVE -- there is no else branch, and JobList::add() writes the column only when inserting, so re-registering an existing job on app update or app:enable leaves the stamp in place. Document the one-off UPDATE (and the occ-only alternative) in the README troubleshooting section and in CLAUDE.md.
This commit is contained in:
@@ -52,6 +52,30 @@ Das Prüfintervall des Hintergrundjobs lässt sich in der `config.php` setzen (W
|
||||
|
||||
Zu beachten: Das ist eine *Untergrenze* für den Abstand zwischen zwei Läufen, keine Garantie. Nextclouds Cron selbst läuft üblicherweise nur alle 5 Minuten — ein Intervall von 60 Sekunden führt also nur dann zu minütlichen Läufen, wenn der System-Cron entsprechend häufig ausgeführt wird.
|
||||
|
||||
### Der Job läuft nur nachts bzw. gar nicht
|
||||
|
||||
Der Job ist als `TIME_SENSITIVE` deklariert und läuft damit rund um die Uhr. Nextcloud merkt sich die Zeitsensitivität aber zusätzlich in der Spalte `time_sensitive` der Tabelle `oc_jobs`, und `JobList::setLastRun()` setzt sie nur in eine Richtung — von „zeitkritisch" auf „unkritisch", nie zurück. Wer eine ältere Version dieser App installiert hatte (bis einschließlich v0.1.0 war der Job `TIME_INSENSITIVE`), hat diesen Stempel noch in der Datenbank. Er wird weder durch ein App-Update noch durch `app:enable` zurückgesetzt.
|
||||
|
||||
Symptom: Ist in der `config.php` ein `maintenance_window_start` gesetzt, läuft der Job nur in diesem 4-Stunden-Fenster und den Rest des Tages gar nicht.
|
||||
|
||||
Einmalig korrigieren:
|
||||
|
||||
```sql
|
||||
UPDATE oc_jobs SET time_sensitive = 0
|
||||
WHERE class = 'OCA\\WorkflowDeckAutomation\\BackgroundJob\\RunWorkflowsJob';
|
||||
```
|
||||
|
||||
Ohne Datenbankzugriff geht es auch über `occ`, indem der Job gelöscht und durch Aus-/Einschalten der App neu registriert wird:
|
||||
|
||||
```bash
|
||||
php occ background-job:list --class 'OCA\WorkflowDeckAutomation\BackgroundJob\RunWorkflowsJob'
|
||||
php occ background-job:delete <id>
|
||||
php occ app:disable workflow_deck_automation
|
||||
php occ app:enable workflow_deck_automation
|
||||
```
|
||||
|
||||
Neuinstallationen sind nicht betroffen.
|
||||
|
||||
## Entwicklung
|
||||
|
||||
Voraussetzungen: PHP 8.2+, Composer, Node.js 24+, npm 11+.
|
||||
|
||||
Reference in New Issue
Block a user