Problem (PROBLEMS.md H7)
The ChangeNotification broadcast channel has a fixed capacity (1024). Under sustained high-frequency writes a slow Dioxus subscriber falls behind, recv() returns RecvError::Lagged, and the hook degrades to continuous full-table refreshes. No data loss, but a reactivity DoS under load. (Partially mitigated by D3's in-place column_values apply, but the lag fallback remains.)
Proposed approach (Phase 2/3 — low priority)
Per-table coalescing channel, or a larger/segmented buffer, so bursts coalesce instead of forcing full-table refreshes. Keep the Lagged → full re-query path as a correctness backstop.
Files
wavesyncdb/src/connection.rs (broadcast channel), wavesyncdb/src/dioxus/hooks.rs.
Ref: docs/research/sync-reliability.md §4, PROBLEMS.md H7.
Problem (PROBLEMS.md H7)
The
ChangeNotificationbroadcast channel has a fixed capacity (1024). Under sustained high-frequency writes a slow Dioxus subscriber falls behind,recv()returnsRecvError::Lagged, and the hook degrades to continuous full-table refreshes. No data loss, but a reactivity DoS under load. (Partially mitigated by D3's in-placecolumn_valuesapply, but the lag fallback remains.)Proposed approach (Phase 2/3 — low priority)
Per-table coalescing channel, or a larger/segmented buffer, so bursts coalesce instead of forcing full-table refreshes. Keep the
Lagged→ full re-query path as a correctness backstop.Files
wavesyncdb/src/connection.rs(broadcast channel),wavesyncdb/src/dioxus/hooks.rs.Ref:
docs/research/sync-reliability.md§4, PROBLEMS.md H7.