Three small, unrelated reliability improvements bundled: 1. lib/hosters.js (_resolveByseUploadByName): drop the "only one new file → claim it" fallback. Under parallel byse uploads, job A's poller could claim job B's newly-uploaded file and return the wrong URL. Now requires exact normalized name match. Trade-off: a few false negatives if byse rewrites the filename beyond our normalizer, but parallel correctness wins. 2. tests/upload-manager.test.js: pin the transient-network classifier behaviour with 2 new tests covering common transient strings (ENOTFOUND, ECONNRESET, socket hang up, fetch failed, EAI_AGAIN…) and verifying real account-level / file-rejected errors are NOT misclassified as transient. Baseline stays clean: 82/82 green. 3. main.js: log process.memoryUsage() snapshot at batch-start and batch-done. One line each — harmless in the happy path, gives us the data points needed to spot long-session RSS/heap growth across batches without DevTools instrumentation.
1.8 KiB
1.8 KiB
Perf/Stabilität Audit Log
Abgeschlossen in dieser Session
- 3.1.3 — Doppel-Render beim Retry vieler Jobs entfernt.
- 3.1.4 — Byse disk-space als account-level klassifiziert (vorher fälschlich file-rejected).
- 3.1.5 — Pre-job-swap hinter Semaphore-Queue + Late-Resolve bei save-config.
- 3.1.6 —
JSON.stringify(files/hosters)aus start-upload debugLog raus. - 3.1.7 — Status-Change-Events im Renderer via rAF coalesced.
- 3.1.8 — Byse-Poller race-condition fix (kein "newFiles.length===1"-Fallback mehr) + transient-network-classifier mit 2 Tests abgesichert + Memory-Snapshot-Logger bei Batch-Boundaries.
Getestet / validiert
- 82 Unit-Tests grün
- Error-Klassifikation (fileRejected / accountError / transient) hat jetzt eindeutige, getestete Trennlinien
- Rotation-Pipeline durchspielbar in Tests (session memory, late-add, override-precedence)
Nicht angegangen (Follow-ups)
- Throughput bei 20+ parallelen Uploads — bräuchte Lasttest-Setup mit Mock-Hoster; speculative ohne User-Beschwerde.
- Netz-Ausfall-Recovery — Klassifikator getestet, echter Network-Interrupt-Integrationstest nicht gemacht (aufwendiger Setup, real-world: Transients werden korrekt erkannt).
- Live Memory-Tracking — Batch-Boundary-Logging liefert jetzt Datenpunkte. Bei wachsendem
rss/heapUsedüber Batches hinweg: Leak-Verdacht, dann in DevTools profilen.
Bekannte externe Issues (nicht fixbar bei uns)
- Byse "Not video file format" bei manchen MKV-Releases ist Byse-seitige Codec/Container-Validierung. Lösung: Datei vorher remuxen (z.B. mit mkvtoolnix).
- Real-Debrid-Downloader + Multi-Hoster-Upload konkurrieren um File-Handles → WinError 5 beim Rename. Workaround: Downloader komplett durchlaufen lassen bevor Queue gezogen wird.