Vault einrichten: „Verbinden“ nach Abbruch meldet „Anmeldung abgelaufen“ — Fortsetzen nutzt die 30-Minuten-Anmeldung statt der gespeicherten Zugangsdaten #245

Closed
opened 2026-10-30 16:35:38 +00:00 by alf · 3 comments
Owner

Befund

Beim Einrichten eines großen Vaults (Repo iris-vault-noch-ein-Test, 29,7 GiB, davon ~29 GiB Git-LFS) bricht der Klon ab („Die Verbindung wurde unterbrochen. Das bisher Geladene bleibt erhalten: Drücke noch einmal ‚Verbinden‘“). Ein erneuter Klick auf Verbinden meldet sofort „Die Anmeldung ist abgelaufen. Bitte melde dich neu an.“ — obwohl das gespeicherte Forgejo-Token noch gültig ist. Ein Neustart des Einrichtens beginnt von vorn und hängt nach langer Zeit wieder an derselben Stelle.

Gefunden beim Test der Vault-Synchronisation zwischen mehreren Iris-Instanzen (Mac-VM unter UTM, Iris 2.0.1 Build 1, macOS 26.6.1).

Ursache der Meldung (gemessen im Code)

  • VaultForge.pendingTimeToLive = 1800 (VaultSyncCore.swift:1160): Die Anmeldung des Dialogs liegt nur im Speicher und gilt 30 Minuten ab dem Login.
  • configure(useLogin: true) (VaultSyncController.swift:514) verlangt bei jedem „Verbinden“ VaultForge.currentPending(). Ist sie älter als 30 Minuten → 409 login_expired → die Meldung oben.
  • Bei einer Unterbrechung antwortet derselbe Code mit resumable: true und behält Klon, Anhänge und Zugangsdaten, „damit ‚Vault verbinden‘ fortsetzen kann“. Das Fortsetzen nutzt die gespeicherten Zugangsdaten aber nicht, sondern wieder die 30-Minuten-Anmeldung.

Ein Klon mit ~29 GiB dauert Stunden. Die Anmeldung ist beim Fortsetzen also praktisch immer abgelaufen; das Versprechen „Fortsetzen“ lässt sich bei einem großen Vault nicht einlösen. Mit UTM hat das nichts zu tun.

Gemessen auf der VM

  • vault-sync-credentials.json enthält ein Token; GET /api/v1/user damit → 200 (gültig, nicht widerrufen). Die Meldung stammt also nicht von Forgejo.
  • Vault-Ordner: nur .git (kein Checkout), Marke iris-setup-incomplete; .git/lfs 29 GiB.
  • LFS-Objekte: Mac Studio 12.923 (29,46 GiB), VM 12.544 (28,52 GiB) → 379 Objekte / 0,94 GiB fehlen, das größte 90 MiB.
  • Alle 379 fehlenden Objekte: LFS-batch → ok, anschließender Abruf je Objekt (Range 0–0) → HTTP 206. Auf Forgejo-Seite ist nichts kaputt, es hängt auch nicht an einem einzelnen Objekt.

Noch offen

  • Warum der Klon ursprünglich unterbrochen wurde (VM-Hänger, Netz, Proxy?). Nicht belegt.
  • Warum ein neuer Versuch wieder an derselben Stelle hängt (~97 %). Kein Debug-Log vorhanden: syncLog.debug wird nicht persistiert. Nötig: log stream --level debug --predicate 'process == "Iris"' während eines Versuchs.
  • Ob ein neuer Versuch die vorhandenen 12.544 Objekte wiederverwendet oder neu lädt (Objektzahl in .git/lfs/objects vor/nach vergleichen).

Vorschlag

  1. Fortsetzen (resumable) soll mit den gespeicherten Zugangsdaten arbeiten, nicht mit der 30-Minuten-Anmeldung; die Anmeldung braucht nur der erste Schritt (Repo wählen/anlegen).
  2. Läuft ein Klon, die Anmeldung nicht ablaufen lassen (oder beim Start des Klons in die Zugangsdaten übernehmen).
  3. Meldung und Dialog zusammenbringen: Wer „Bitte melde dich neu an“ liest, braucht im selben Dialog einen Weg dazu.

Nicht geprüft

Die Mac-App-Version auf der VM gegenüber den Fixes aus #234 und #243; ein Test auf echter Hardware (steht aus).

## Befund Beim Einrichten eines großen Vaults (Repo `iris-vault-noch-ein-Test`, 29,7 GiB, davon ~29 GiB Git-LFS) bricht der Klon ab („Die Verbindung wurde unterbrochen. Das bisher Geladene bleibt erhalten: Drücke noch einmal ‚Verbinden‘“). Ein erneuter Klick auf **Verbinden** meldet sofort „Die Anmeldung ist abgelaufen. Bitte melde dich neu an.“ — obwohl das gespeicherte Forgejo-Token noch gültig ist. Ein Neustart des Einrichtens beginnt von vorn und hängt nach langer Zeit wieder an derselben Stelle. Gefunden beim Test der Vault-Synchronisation zwischen mehreren Iris-Instanzen (Mac-VM unter UTM, Iris 2.0.1 Build 1, macOS 26.6.1). ## Ursache der Meldung (gemessen im Code) - `VaultForge.pendingTimeToLive = 1800` (`VaultSyncCore.swift:1160`): Die Anmeldung des Dialogs liegt nur im Speicher und gilt **30 Minuten ab dem Login**. - `configure(useLogin: true)` (`VaultSyncController.swift:514`) verlangt bei jedem „Verbinden“ `VaultForge.currentPending()`. Ist sie älter als 30 Minuten → `409 login_expired` → die Meldung oben. - Bei einer Unterbrechung antwortet derselbe Code mit `resumable: true` und behält Klon, Anhänge **und Zugangsdaten**, „damit ‚Vault verbinden‘ fortsetzen kann“. Das Fortsetzen nutzt die gespeicherten Zugangsdaten aber nicht, sondern wieder die 30-Minuten-Anmeldung. Ein Klon mit ~29 GiB dauert Stunden. Die Anmeldung ist beim Fortsetzen also praktisch immer abgelaufen; das Versprechen „Fortsetzen“ lässt sich bei einem großen Vault nicht einlösen. Mit UTM hat das nichts zu tun. ## Gemessen auf der VM - `vault-sync-credentials.json` enthält ein Token; `GET /api/v1/user` damit → **200** (gültig, nicht widerrufen). Die Meldung stammt also nicht von Forgejo. - Vault-Ordner: nur `.git` (kein Checkout), Marke `iris-setup-incomplete`; `.git/lfs` 29 GiB. - LFS-Objekte: Mac Studio 12.923 (29,46 GiB), VM 12.544 (28,52 GiB) → **379 Objekte / 0,94 GiB fehlen**, das größte 90 MiB. - Alle 379 fehlenden Objekte: LFS-`batch` → `ok`, anschließender Abruf je Objekt (Range 0–0) → **HTTP 206**. Auf Forgejo-Seite ist nichts kaputt, es hängt auch nicht an einem einzelnen Objekt. ## Noch offen - Warum der Klon **ursprünglich** unterbrochen wurde (VM-Hänger, Netz, Proxy?). Nicht belegt. - Warum ein neuer Versuch wieder an derselben Stelle hängt (~97 %). Kein Debug-Log vorhanden: `syncLog.debug` wird nicht persistiert. Nötig: `log stream --level debug --predicate 'process == "Iris"'` während eines Versuchs. - Ob ein neuer Versuch die vorhandenen 12.544 Objekte wiederverwendet oder neu lädt (Objektzahl in `.git/lfs/objects` vor/nach vergleichen). ## Vorschlag 1. Fortsetzen (`resumable`) soll mit den **gespeicherten Zugangsdaten** arbeiten, nicht mit der 30-Minuten-Anmeldung; die Anmeldung braucht nur der erste Schritt (Repo wählen/anlegen). 2. Läuft ein Klon, die Anmeldung nicht ablaufen lassen (oder beim Start des Klons in die Zugangsdaten übernehmen). 3. Meldung und Dialog zusammenbringen: Wer „Bitte melde dich neu an“ liest, braucht im selben Dialog einen Weg dazu. ## Nicht geprüft Die Mac-App-Version auf der VM gegenüber den Fixes aus #234 und #243; ein Test auf echter Hardware (steht aus).
Author
Owner

PR #246 gemergt: fix(vault-sync): Fortsetzen mit gespeicherten Zugangsdaten, wenn die Anmeldung abgelaufen ist (iris/Iris#245)
http://docker:3000/iris/Iris/pulls/246

Commits:

  • fix(vault-sync): Fortsetzen mit gespeicherten Zugangsdaten, wenn die Anmeldung abgelaufen ist (iris/Iris#245)

Stand: Fortsetzen mit gespeicherten Zugangsdaten

Befund: Das Einrichten (Klon + ~29 GiB LFS) dauert Stunden, die Forgejo-Anmeldung (forge/login) liegt nur 30 Minuten im Speicher. Nach einem Abbruch lieferte „Verbinden“ deshalb 409 login_expired, obwohl die Zugangsdaten gespeichert und das Token gültig waren.

Geändert: configure(use_login: true) nutzt bei abgelaufener Anmeldung die gespeicherten Zugangsdaten, aber nur wenn (1) die Marke iris-setup-incomplete da ist, (2) remote_url auf dasselbe Repository wie das Remote des begonnenen Klons zeigt und (3) der Server dem Scope der gespeicherten Zugangsdaten entspricht. Sonst bleibt 409 login_expired. Mac (VaultSyncSetup.resumableLogin, VaultSyncController), Linux (_resumable_login), Wire-Doku.

Geprüft:

  • Mac-Kern scripts/test-vault-sync-core.sh: 280 Prüfungen, 0 Fehler (vorher 274): gleiches Repo geht, anderes Repo → nil, ohne Zugangsdaten → nil, nach fertigem Einrichten → nil.
  • Linux tests/test_vault_git_sync.py: 91 grün. Neuer Test schlägt ohne Fix fehl (Mutationsprüfung).

Nicht geprüft:

  • VaultSyncController.swift nicht kompiliert (kein xcodebuild möglich) – bitte in Xcode bauen.
  • Nicht auf VM/echter Hardware getestet, nichts deployt.
  • Das Hängen bei ~97 % an derselben Stelle und das „fängt bei 0 an“ sind NICHT behoben.

Offen: Ursache des Hängens (Debug-Log: log stream --level debug --predicate 'process == "Iris"'), ob ein Neustart vorhandene LFS-Objekte wiederverwendet, ob die VM-Version #234/#243 enthält, UI: Dialog sagt „Bitte melde dich neu an“ ohne Login-Button.

PR #246 gemergt: fix(vault-sync): Fortsetzen mit gespeicherten Zugangsdaten, wenn die Anmeldung abgelaufen ist (iris/Iris#245) http://docker:3000/iris/Iris/pulls/246 Commits: - fix(vault-sync): Fortsetzen mit gespeicherten Zugangsdaten, wenn die Anmeldung abgelaufen ist (iris/Iris#245) --- ## Stand: Fortsetzen mit gespeicherten Zugangsdaten **Befund:** Das Einrichten (Klon + ~29 GiB LFS) dauert Stunden, die Forgejo-Anmeldung (`forge/login`) liegt nur 30 Minuten im Speicher. Nach einem Abbruch lieferte „Verbinden“ deshalb `409 login_expired`, obwohl die Zugangsdaten gespeichert und das Token gültig waren. **Geändert:** `configure(use_login: true)` nutzt bei abgelaufener Anmeldung die gespeicherten Zugangsdaten, aber nur wenn (1) die Marke `iris-setup-incomplete` da ist, (2) `remote_url` auf dasselbe Repository wie das Remote des begonnenen Klons zeigt und (3) der Server dem Scope der gespeicherten Zugangsdaten entspricht. Sonst bleibt `409 login_expired`. Mac (`VaultSyncSetup.resumableLogin`, `VaultSyncController`), Linux (`_resumable_login`), Wire-Doku. **Geprüft:** - Mac-Kern `scripts/test-vault-sync-core.sh`: 280 Prüfungen, 0 Fehler (vorher 274): gleiches Repo geht, anderes Repo → nil, ohne Zugangsdaten → nil, nach fertigem Einrichten → nil. - Linux `tests/test_vault_git_sync.py`: 91 grün. Neuer Test schlägt ohne Fix fehl (Mutationsprüfung). **Nicht geprüft:** - `VaultSyncController.swift` nicht kompiliert (kein xcodebuild möglich) – bitte in Xcode bauen. - Nicht auf VM/echter Hardware getestet, nichts deployt. - Das Hängen bei ~97 % an derselben Stelle und das „fängt bei 0 an“ sind NICHT behoben. **Offen:** Ursache des Hängens (Debug-Log: `log stream --level debug --predicate 'process == "Iris"'`), ob ein Neustart vorhandene LFS-Objekte wiederverwendet, ob die VM-Version #234/#243 enthält, UI: Dialog sagt „Bitte melde dich neu an“ ohne Login-Button.
Author
Owner

PR #130 gemergt: fix(vault-sync): Fortsetzen mit gespeicherten Zugangsdaten, wenn die Anmeldung abgelaufen ist (iris/Iris#245)
http://docker:3000/iris/iris-linux-server/pulls/130

Commits:

  • fix(vault-sync): Fortsetzen mit gespeicherten Zugangsdaten, wenn die Anmeldung abgelaufen ist (iris/Iris#245)

Stand Linux-Server: Fortsetzen mit gespeicherten Zugangsdaten

Gegenstück zu PR #246 (Mac). vault_git_sync.configure(use_login=True) fällt bei abgelaufener Anmeldung auf _resumable_login zurück (Marke iris-setup-incomplete, gleiches Repo wie Remote des Klons, Server = Scope der gespeicherten Zugangsdaten), sonst 409 login_expired.

Geprüft: tests/test_vault_git_sync.py 91 grün; neuer Test test_resume_with_an_expired_login_uses_the_stored_credentials schlägt ohne Fix fehl.
Nicht geprüft: nicht auf iris-server deployt, kein Test mit echtem Forgejo/29-GiB-Klon. Das Hängen bei ~97 % bleibt offen.

PR #130 gemergt: fix(vault-sync): Fortsetzen mit gespeicherten Zugangsdaten, wenn die Anmeldung abgelaufen ist (iris/Iris#245) http://docker:3000/iris/iris-linux-server/pulls/130 Commits: - fix(vault-sync): Fortsetzen mit gespeicherten Zugangsdaten, wenn die Anmeldung abgelaufen ist (iris/Iris#245) --- ## Stand Linux-Server: Fortsetzen mit gespeicherten Zugangsdaten Gegenstück zu PR #246 (Mac). `vault_git_sync.configure(use_login=True)` fällt bei abgelaufener Anmeldung auf `_resumable_login` zurück (Marke `iris-setup-incomplete`, gleiches Repo wie Remote des Klons, Server = Scope der gespeicherten Zugangsdaten), sonst `409 login_expired`. **Geprüft:** `tests/test_vault_git_sync.py` 91 grün; neuer Test `test_resume_with_an_expired_login_uses_the_stored_credentials` schlägt ohne Fix fehl. **Nicht geprüft:** nicht auf iris-server deployt, kein Test mit echtem Forgejo/29-GiB-Klon. Das Hängen bei ~97 % bleibt offen.
Author
Owner

PR #135 gemergt: docs(wire): Fortsetzen mit gespeicherten Zugangsdaten bei abgelaufener Anmeldung (iris/Iris#245)
http://docker:3000/alf/2ndbrain/pulls/135

Commits:

  • docs(wire): Fortsetzen mit gespeicherten Zugangsdaten bei abgelaufener Anmeldung (iris/Iris#245)

Stand Wire-Doku

02-Wire-Protokoll.md: Tabelle und forge/login-Absatz beschreiben die Fortsetzen-Regel (Marke iris-setup-incomplete, gleiches Repo, gleicher Server) für 409 login_expired. Reine Doku, nichts geprüft außer Abgleich mit dem Code in #246 und dem Linux-PR.

PR #135 gemergt: docs(wire): Fortsetzen mit gespeicherten Zugangsdaten bei abgelaufener Anmeldung (iris/Iris#245) http://docker:3000/alf/2ndbrain/pulls/135 Commits: - docs(wire): Fortsetzen mit gespeicherten Zugangsdaten bei abgelaufener Anmeldung (iris/Iris#245) --- ## Stand Wire-Doku `02-Wire-Protokoll.md`: Tabelle und `forge/login`-Absatz beschreiben die Fortsetzen-Regel (Marke `iris-setup-incomplete`, gleiches Repo, gleicher Server) für `409 login_expired`. Reine Doku, nichts geprüft außer Abgleich mit dem Code in #246 und dem Linux-PR.
alf 2026-10-31 09:10:22 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
iris/Iris#245
No description provided.