After network turbulence or an OS-frozen app (Android Doze), FwLite''s SignalR push listener can end up dead-but-cached:
- Opening a project intermittently fails with
InvalidOperationException: The 'SendCoreAsync' method cannot be called if the connection is not active (seen in production logs; recurs after connectivity loss followed by a few minutes of idle).
- More commonly the failure is silent: push notifications (auto-download of other users'' changes) stop and don''t recover until a manual sync or app restart. FwLiteWeb has no recovery trigger at all once the initial listener start fails. Likely overlaps the long-standing "auto-download stops" report (internal lb-8mg).
Log analysis of the crash: the cached HubConnection was stuck in Reconnecting (infinite retry, up to 60s between attempts); HTTP connectivity recovered before the next retry tick, so user actions raced ahead of the listener — the crash landed 76 ms after the first successful HTTP request post-outage. The same stuck state explains the silent variant.
Fixed by #2317 (signalr-retry-improvements-v2). Depends on the #2306 fix (#2308) landing first: the listener''s logout detection consumes auth state that was unreliable before it.
After network turbulence or an OS-frozen app (Android Doze), FwLite''s SignalR push listener can end up dead-but-cached:
InvalidOperationException: The 'SendCoreAsync' method cannot be called if the connection is not active(seen in production logs; recurs after connectivity loss followed by a few minutes of idle).Log analysis of the crash: the cached HubConnection was stuck in
Reconnecting(infinite retry, up to 60s between attempts); HTTP connectivity recovered before the next retry tick, so user actions raced ahead of the listener — the crash landed 76 ms after the first successful HTTP request post-outage. The same stuck state explains the silent variant.Fixed by #2317 (
signalr-retry-improvements-v2). Depends on the #2306 fix (#2308) landing first: the listener''s logout detection consumes auth state that was unreliable before it.