Commit Graph

14 Commits

Author SHA1 Message Date
1c2d30cbe9 debuggage des stream 2025-11-15 12:21:30 +01:00
Claude
07dcc5bef1 Make is_valid_pk() async to use tokio::time::sleep
Changed is_valid_pk() from sync to async to properly wait for file
creation without blocking. This is a breaking change but we're in
active development.

Changes:
- is_valid_pk() signature: fn -> async fn
- Replaced std:🧵:sleep with tokio::time::sleep
- Updated all 6 call sites in pmoplaylist to add .await:
  - WriteHandle::push()
  - WriteHandle::push_set()
  - ReadHandle::pop()
  - ReadHandle::peek()
  - ReadHandle::remaining()
  - ReadHandle::get_all()

Benefits:
- Non-blocking wait for file creation during ingestion
- More idiomatic async Rust code
- Better integration with tokio runtime
2025-11-11 13:33:10 +00:00
Claude
cdf24b0143 Fix race condition in is_valid_pk() for files being ingested
When add_from_reader() returns after prebuffering, the file may not
exist on disk yet due to tokio::spawn() scheduling. This caused
"Cache entry not found" errors when playlist tried to validate the pk.

Solution:
- If DB entry exists but file doesn't, wait up to 1 second for file creation
- This handles the race condition between prebuffer completion and
  File::create() in the background task
- Deterministic and robust: either file exists or we timeout with error

The fix preserves the progressive caching design while ensuring
validation is deterministic.

Test: Verified no "Cache entry not found" errors with clean cache.
2025-11-11 13:19:55 +00:00
Claude
ff859372cf Fix is_valid_pk to support progressive caching properly
Changes:
1. pmocache/cache_trait.rs - Fixed is_valid_pk() logic:
   - Accept files WITH completion markers (complete downloads)
   - Accept files WITHOUT markers but recent (< 60s) (downloads in progress)
   - Reject files WITHOUT markers and old (>= 60s) (failed downloads)

   This preserves progressive caching: files are valid as soon as prebuffer
   completes, without waiting for completion marker.

2. pmoupnp/cache_registry.rs - Added compatibility layer:
   - Re-exports get_audio_cache/get_cover_cache from singletons
   - Provides build_audio_url/build_cover_url for pmosource
   - Uses PMO_SERVER_URL env var for base URL

3. pmoupnp/lib.rs - Added cache_registry module to public API

This fixes "Cache entry not found" errors while maintaining progressive
caching functionality for play_and_cache example.
2025-11-07 08:09:20 +00:00
Claude
a5a2ea1181 WIP: Fix is_valid_pk to accept files being downloaded
Added heuristic to accept files modified within last 60 seconds,
which should catch files currently being downloaded.

Also added debug logging to diagnose why validation fails.

Still debugging - need to test with logs to see what's happening.
2025-11-07 07:34:11 +00:00
Claude
5d88d3a25e refactor: Fix compilation warnings across multiple crates
- Remove unused imports (Filter, Digest, Resource, etc.)
- Prefix unused variables with underscore (_pk, _size)
- Fix snake_case naming for local variables
- Remove unused ArgumentError enum in pmoupnp
- Apply cargo fix suggestions for unused imports

Remaining warnings are async_fn_in_trait style warnings which
would require API breaking changes to address.
2025-11-04 22:20:35 +00:00
5b60fdbe1d Refactoring de pmoflac -factorisation de code ogg et opus 2025-10-29 22:36:36 +01:00
93db9c25e7 la crate des playlists 2025-10-29 22:36:36 +01:00
fc093743c1 Refactoring du cache pour une meilleur gestion des metadonnées 2025-10-29 22:35:10 +01:00
37c3d9daf6 refactoring des caches 2025-10-25 17:46:53 +02:00
032b55a6f1 ebuggage transcodage audio en flac 2025-10-20 16:18:21 +02:00
ebc15b0518 nouveau mediarenderer 2025-10-18 14:33:52 +02:00
fdd6cb6401 Ajout de fonctionnalité de download asynchrone au pmocache 2025-10-17 22:14:30 +02:00
2f9abff6f1 Refactoring manuel 2025-10-17 19:28:04 +02:00