Commit Graph

14 Commits

Author SHA1 Message Date
1c2d30cbe9 debuggage des stream 2025-11-15 12:21:30 +01:00
Claude
ac2d5c9501 Fix REAL bug: HTTP timeout was truncating Radio Paradise blocks
ROOT CAUSE IDENTIFIED:
The previous "wait for playback duration" workaround was masking the real
issue. Radio Paradise blocks last ~20 minutes (1200s), but the HTTP timeout
was only 180 seconds, causing premature stream termination.

With backpressure from the audio pipeline, HTTP download proceeds at real-time
pace. A 20-minute block takes ~20 minutes to download. The 180s timeout
was killing the connection after 3 minutes, resulting in incomplete blocks.

Changes:
1. **Increase HTTP block_timeout: 180s → 7200s (2 hours)**
   - Allows complete download of even the longest blocks
   - Comment explains why such a long timeout is needed

2. **Increase MPSC channel sizes: 16 → 60 chunks**
   - Matches TimerNode max_lead_time (3.0s / 0.05s = 60 chunks)
   - Prevents stop-and-go backpressure pattern
   - Allows smooth buffering as intended

3. **Replace workaround with proper channel drainage**
   - Use tx.closed().await instead of sleep()
   - Guarantees all buffered chunks are processed
   - More architecturally sound solution

4. **Add comprehensive diagnostic traces**
   - Log expected vs actual block duration
   - Detect premature EOF (< 95% of expected duration)
   - Track bytes decoded and HTTP Content-Length
   - Monitor backpressure blocking with timing

This fixes the streaming completely. The block will now:
- Download for the full ~20 minutes (real-time with backpressure)
- Decode all audio data without truncation
- Process all chunks before pipeline shutdown
2025-11-12 10:32:47 +00:00
Claude
bac4a94cad refactor: Eliminate remaining duplications in client.rs
Corrections :
1. Supprimé le commentaire obsolète sur block_base (ligne 277)
2. Créé la constante DEFAULT_CHANNEL pour éviter de coder "0" en dur
3. Utilisé DEFAULT_CHANNEL dans with_client(), ClientBuilder::default() et tests
4. Amélioré la documentation de with_client() pour guider vers le builder

Bien que with_client() et ClientBuilder::default() aient encore une structure
similaire, ils utilisent maintenant les mêmes constantes, réduisant ainsi
le risque d'incohérence lors de modifications futures.
2025-11-05 12:00:55 +00:00
Claude
0a54db5963 refactor: Replace block_base field with dynamic calculation
Supprime complètement la duplication d'information en transformant
block_base d'un champ stocké en une méthode calculée dynamiquement.

Changements:
- Supprimé le champ block_base de RadioParadiseClient
- Ajouté la constante BLOCK_BASE_URL pour éviter la duplication de l'URL
- Transformé block_base en méthode publique qui calcule à partir de channel
- Simplifié with_client() et clone_with_channel()
- Simplifié le builder qui n'a plus besoin d'initialiser block_base

Cette approche garantit que block_base est toujours cohérent avec channel,
éliminant définitivement toute possibilité de bug de synchronisation.
2025-11-05 12:00:50 +00:00
Claude
cc3e31dbd0 fix: Eliminate channel/block_base duplication in ClientBuilder
Le bug identifié était que le block_base n'était pas synchronisé avec
le channel dans le ClientBuilder, causant le téléchargement du même
bloc pour différents channels.

Changements:
- Supprimé le champ block_base du ClientBuilder (duplication)
- Supprimé la constante DEFAULT_BLOCK_BASE (plus nécessaire)
- Supprimé la méthode .block_base() du builder (complexité inutile)
- Le block_base est maintenant calculé dynamiquement dans build()
  à partir du channel, éliminant toute possibilité de désynchronisation

Cette approche suit le principe DRY et élimine une source de bugs.
2025-11-05 12:00:45 +00:00
fc093743c1 Refactoring du cache pour une meilleur gestion des metadonnées 2025-10-29 22:35:10 +01:00
882b6e2886 retire le support des codec non flac de radio paradise 2025-10-26 07:33:52 +01:00
6c40b93089 on retravaille les sources et pmoparadise en particulier 2025-10-25 22:01:02 +02:00
1567beee2e Refactoring profond de pmoparadise 2025-10-21 18:37:40 +02:00
f510e59b1a Patch of the web logger 2025-10-20 19:50:58 +02:00
2632233dbd Correction on cache system 2025-10-20 16:18:21 +02:00
f3e6c59143 Correction de la source radio paradise pour avoir un sous dossier par canal 2025-10-20 16:18:21 +02:00
776c535862 amélioration de la webapp 2025-10-20 16:18:21 +02:00
ffecc219b5 implemente pmoparadise 2025-10-12 21:34:59 +02:00