Sporadische Zeitueberschreitungen beim Abgleich #23
Notifications
Total Time Spent: 4 minutes
florian.wilde
4 minutes
No due date set.
Dependencies
No dependencies set.
Reference: florian.wilde/nebula#23
Reference in New Issue
Block a user
Seit #19 sichtbar: beim Abgleich von
florian.wilde/flimmerliefenissuesundpullRequestsinHTTP 408: Zeitueberschreitung nach 15000 ms. Nicht alle acht Teil-Abrufe, nur zwei.Gemessen
Dieselben Aufrufe von außen gegen dieselbe Instanz:
80 Millisekunden gegen 15 Sekunden. Der Endpunkt ist es nicht, und es sind auch nicht alle Aufrufe — es ist sporadisch und trifft wechselnde.
Zu tun
Der Befund, auf den es ankommt: derselbe Aufruf klappt, wenn er allein läuft. Das legt einen einzelnen Nachschlag nahe statt einer Umstellung ins Blaue — was in der Achterrunde hängen geblieben ist, wird danach noch einmal einzeln versucht. Bleibt es dabei, ist es kein Zufall, und der Fehler steht wie bisher am Repository.
Zusätzlich zu erwägen: die acht Aufrufe nicht alle gleichzeitig losschicken. Das ist allerdings eine Vermutung über die Ursache, kein Befund — der Nachschlag ist die Maßnahme, die sich aus dem Gemessenen ergibt.
Was dabei nicht passieren darf: dass ein Nachschlag den Abgleich spürbar verlangsamt, wenn die Gegenseite wirklich weg ist. Ein Versuch, nicht drei.
🤖 Claude Code hat mit der Umsetzung begonnen.
fix/23-nachschlag-bei-timeoutTeilabrufehängt Fehlschläge an eine Kette, sodass die Nachschläge nacheinander laufen und sich nicht erneut gegenseitig im Weg stehen. Die Aufrufstellen in den drei Clients bleiben unverändert —holliefert weiterhin den endgültigen Wert408(Zeitüberschreitung) und0(Verbindung kam nicht zustande). Ein403wird durch Wiederholen nicht besser, ein429durch sofortiges Wiederholen schlimmerWas ich nicht mache: die acht Aufrufe entzerren. Das wäre eine Vermutung über die Ursache; der Nachschlag ist die Maßnahme, die sich aus dem Gemessenen ergibt. Wenn das Problem danach bleibt, sagt uns der Vermerk genau das — und dann ist die Entzerrung dran.
Zeiterfassung läuft.
✅ Umsetzung abgeschlossen — bereit zum Testen.
Was geändert wurde
Teilabrufeschlägt hängengebliebene Aufrufe einmal nach — an einer Kette, also nacheinander statt wieder im SchwungTeilabrufestatt hinter demPromise.all: die Aufrufstellen in den drei Clients bleiben unberührt,hol()liefert weiterhin den endgültigen Wert408und0. Ein403wird durch Wiederholen nicht besser, ein429schlimmer, ein404bleibt ein404afterEach-Blöcken inhttp.test.tsfehlterestoreAllMocks, die Spies zählten über Tests hinweg weiter. Den Fehler hatte ich mit denTeilabrufe-Tests selbst hineingetragenNicht gemacht: die acht Aufrufe entzerren. Das wäre eine Vermutung über die Ursache. Bleibt das Problem, sagt der Vermerk genau das — dann ist die Entzerrung dran.
Geänderte Dateien
src/lib/git/http.ts·src/lib/git/http.test.ts·FEATURES.mdSo testest du es
git switch fix/23-nachschlag-bei-timeout,npm run devGIT_API_TIMEOUT_MS=1000in die.envund ein Repository mit vielen Commits synchronisieren. Erwartet: einzelne Felder werden nachgeschlagen, und was dann noch fehlt, trägt „(auch im zweiten Versuch)"GIT_API_TIMEOUT_MSwieder herausnehmenGeprüft:
tscsauber · 295 Unit-Tests grün (vorher 289) ·npm run builddurch · gegengeprobt, dass mit abgeschaltetem Nachschlag vier der sechs neuen Tests fallen und die beiden, die das Ausbleiben prüfen, grün bleiben.Aufgewendete Zeit: 00:05
Pull Request: #25
Nach Freigabe:
/issue-freigabe 23