docs(savepoint): Uhrzeit-Meldung erledigt - mit dem Beweis, der zaehlt
Ampel / ampel (push) Successful in 32s
Ampel / ampel (push) Successful in 32s
Die "Substantial drift 7200 seconds"-Meldung kam nicht alle paar Sekunden, sondern einmal pro Absender-Hostname (celery memoized nach hostname) - und der Container-Hostname wechselt bei jedem Neubau. Die vier Meldungen im Log sind genau vier Deploys. Der Beweis, dass sie weg ist: Um 14:57:33 synchronisierte sich der Worker mit celery@d160eb2f3afd, dem frischen Container nach dem Deploy. Ein NEUER Hostname umgeht die Merk-Sperre, die Warnung haette also feuern muessen. Sie kam nicht. Dazu gemessen: TZ=UTC wirkt auf Windows wirklich (time.timezone -3600 -> 0), und die celery-Zeitstempel im lokalen Worker-Log stehen in UTC. Ausserdem festgehalten: Der Windows-Worker laeuft auf gemischten Dateistaenden (tasks.py 13:19, ripping.py 14:06, zombies.py 14:17) - die Sprachwahl ist vollstaendig drin, meta_merken fehlt noch. Es fehlt eine Versionsanzeige, die so etwas sichtbar macht, statt es nur beim Nachsehen auf dem PC zu finden. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+71
-1
@@ -126,7 +126,62 @@ RIPPY_REPO_URL=<gitea> \
|
||||
RIPPY_ENV_SRC=/home/arcane/projects/rippy/.env ./deploy.sh
|
||||
```
|
||||
|
||||
### 4. Was noch offen ist
|
||||
### 4. Die Uhrzeit-Meldung: nachgemessen statt gehofft
|
||||
|
||||
Zwei offene Fragen zur `Substantial drift … 7200 seconds`-Meldung, beide jetzt
|
||||
beantwortet.
|
||||
|
||||
**Wirkt `set TZ=UTC` auf Windows überhaupt?** Das war ungeprüft — und die
|
||||
MSVC-Dokumentation verlangt eigentlich die Form `UTC0`. Hier gemessen:
|
||||
|
||||
| | `time.timezone` | `time.altzone` | `isdst` |
|
||||
|---|---|---|---|
|
||||
| ohne `TZ` | −3600 | −7200 | 1 |
|
||||
| `TZ=UTC` | **0** | −3600 | **0** |
|
||||
| `TZ=UTC0` | 0 | −3600 | 0 |
|
||||
|
||||
Celerys `utcoffset()` rechnet `time.timezone // 3600` (bzw. `altzone`, wenn
|
||||
`isdst`) — mit `TZ=UTC` also 0, genau wie in den Containern. `TZ=UTC` genügt,
|
||||
`UTC0` bringt nichts zusätzlich.
|
||||
|
||||
**Warum kam die Meldung „immer wieder"?** Sie kam nicht alle paar Sekunden,
|
||||
sondern **einmal pro Absender**:
|
||||
|
||||
```python
|
||||
@memoize(maxsize=1000, keyfun=lambda a, _: a[0])
|
||||
def _warn_drift(hostname, drift, local_received, timestamp):
|
||||
# we use memoize here so the warning is only logged once per hostname
|
||||
```
|
||||
|
||||
Der Absender ist der Linux-Container, und dessen Hostname wechselt bei **jedem
|
||||
Neubau**. Die Meldungen im Log (`7e71250606aa`, `09d001df95a4`, `7c2c179a1953`,
|
||||
`3a9f4808ed51`) sind genau vier Deploys — deshalb kam sie „immer wieder", ohne
|
||||
zwischendurch zu nerven.
|
||||
|
||||
**ERLEDIGT, und zwar sauber bewiesen.** Aus dem lokalen Worker-Log auf dem
|
||||
PC (`%LOCALAPPDATA%\Rippy Worker\worker.log`):
|
||||
|
||||
```
|
||||
[2026-07-26 14:21:17,301: INFO/MainProcess] tobisnicerpc@TobisNicerPC ready.
|
||||
[2026-07-26 14:23:17,318: WARNING/MainProcess] Zombie-Erkennung: {...}
|
||||
[2026-07-26 14:57:33,460: INFO/MainProcess] sync with celery@d160eb2f3afd
|
||||
```
|
||||
|
||||
Zwei Dinge stehen da:
|
||||
|
||||
1. Die Zeitstempel sind **UTC** (14:21, während es auf dem PC 16:21 war) —
|
||||
`TZ=UTC` ist im laufenden Worker also wirklich aktiv.
|
||||
2. Um 14:57:33 kam ein **neuer** Absender-Hostname dazu (der Container von
|
||||
heute Abend). Genau dafür ist die Merk-Sperre blind — die Warnung hätte
|
||||
feuern MÜSSEN. Sie kam nicht.
|
||||
|
||||
Nebenbei ist damit auch die Log-Brücke bestätigt: Die Zeilen von 14:21 und
|
||||
14:23 stehen als `w:tobisnicerpc` in Rippys Log. (Ich hatte sie zuerst
|
||||
übersehen, weil `/logs` neueste-zuerst liefert und ich `tail` statt `head`
|
||||
gefiltert hatte — die Liste war nicht leer, ich habe an der falschen Seite
|
||||
geschaut.)
|
||||
|
||||
### 5. Was noch offen ist
|
||||
|
||||
- **Voller Durchlauf läuft gerade** (Job `bfb7a946`, über den neuen
|
||||
`retry-rip`-Weg gestartet): Akira-BD → Auswurf → Kompression auf
|
||||
@@ -141,6 +196,21 @@ RIPPY_ENV_SRC=/home/arcane/projects/rippy/.env ./deploy.sh
|
||||
- **`sudo ./install.sh` auf einem FRISCHEN Host ist weiter unbelegt.** Der
|
||||
Prüfpfad (`--nur-pruefen`) läuft auf der VM sauber durch, alle fünf Prüfungen
|
||||
grün. Ein echter Root-Lauf hier hätte den laufenden Rip getötet.
|
||||
- **Der Windows-Worker läuft auf gemischten Dateiständen** — direkt auf dem PC
|
||||
nachgesehen (`C:\Program Files\Rippy Worker`): `tasks.py` 13:19, `ripping.py`
|
||||
14:06, `zombies.py` 14:17. Die Sprachwahl ist vollständig drin (geprüft:
|
||||
`tasks.py` liest sie, `ripping.py` gibt sie an HandBrake), `meta_merken`/
|
||||
`RIP_FERTIG` von heute Abend fehlen noch. Für diesen Test unerheblich (die
|
||||
Marke setzt der Linux-Worker bei der Übergabe), aber **nach dem Test einmal
|
||||
den Installer laufen lassen**, damit alles auf einem Stand ist.
|
||||
- **Es fehlt eine Versionsanzeige für den externen Worker.** Nichts vergleicht
|
||||
seinen Code-Stand mit dem des Servers; „läuft auf gemischten Ständen" war nur
|
||||
zu sehen, weil ich auf dem PC selbst nachgesehen habe. Ein Zähler in `caps.py`
|
||||
(z. B. der Commit-Kurz-Hash) und eine Warnung im UI wären der saubere Weg —
|
||||
bewusst nicht heute Nacht gebaut.
|
||||
- **Im Wurzelverzeichnis der Freigabe liegt eine verwaiste
|
||||
`Evangelion 2.22_t00.mkv`** ohne zugehörigen Job. Kann weg, wenn du sie nicht
|
||||
brauchst — Rippy zeigt sie nirgends an, weil kein Eintrag darauf zeigt.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user