fix(peer): coalesce full UI view publications

Keep one queued and one replaceable pending snapshot for remote-library and Call-to-Play views while preserving lifecycle-event FIFO delivery. Generation barriers and fenced drains prevent stale nonempty views from crossing disable or acknowledgement boundaries.

Test Plan:
- just test
- just clippy
- focused burst, lifecycle ordering, fence, repeated-barrier, and stale-view tests
- independent ordering review
- git diff --check
This commit is contained in:
ddidderr committed 2026-09-12 13:06:10 +02:00
1 parent 470e119515
commit 37420e26ed
17 files changed
+828 -251

No files matched your search

@@ -504,7 +504,7 @@ mod tests {
CatalogContentManifestBody,
CatalogExtractedEntry,
};
use tokio::sync::{RwLock, mpsc};
use tokio::sync::RwLock;
use tokio_util::task::TaskTracker;
use super::*;
@@ -611,7 +611,7 @@ mod tests {
root: &Path,
manifest: &CatalogContentManifest,
provider: Arc<CountingStreamInstallProvider>,
) -> (PeerCtx, mpsc::UnboundedReceiver<crate::PeerEvent>) {
) -> (PeerCtx, crate::PeerEventReceiver) {
let catalog = Arc::new(
CatalogBundle::from_manifests([manifest.clone()])
.expect("test catalog should be complete"),
@@ -643,7 +643,7 @@ mod tests {
availability: Availability::Ready,
},
);
let (tx, rx) = mpsc::unbounded_channel();
let (tx, rx) = crate::peer_event_channel();
(ctx.to_peer_ctx(tx, CancellationToken::new()), rx)
}