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.
28 lines
1.8 KiB
Markdown
28 lines
1.8 KiB
Markdown
# Perf/Stabilität Audit Log
|
|
|
|
## Abgeschlossen in dieser Session
|
|
|
|
- [x] **3.1.3** — Doppel-Render beim Retry vieler Jobs entfernt.
|
|
- [x] **3.1.4** — Byse disk-space als account-level klassifiziert (vorher fälschlich file-rejected).
|
|
- [x] **3.1.5** — Pre-job-swap hinter Semaphore-Queue + Late-Resolve bei save-config.
|
|
- [x] **3.1.6** — `JSON.stringify(files/hosters)` aus start-upload debugLog raus.
|
|
- [x] **3.1.7** — Status-Change-Events im Renderer via rAF coalesced.
|
|
- [x] **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.
|