You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We're invoking a listener on the wrong thread, potentially without the mutual-exclusion or happens-before boundary we expected. It's racing with the update processing that needs to actually happen for the completion condition to be properly detected. It might even be racing with another notification that is supposed to trigger completion; that is, we might trigger completion early, from the wrong thread, in the case where we get a message with only removes.
Let's start by reverting the original change and making a deeper one.
We need to be delivering this completion notification after processing the barrage message from the update graph root. 2. The "extra" completion check should only happen on the sole message delivered for the initial snapshot of an empty table.
We seem to have some sloppiness/raciness with error handling. I don't see how an error will propagate from BarrageSubscriptionImpl or BarrageSnapshotImpl back to a blocked caller, for instance.
Description
If an empty update is received on a Barrage subscription after the initial subscription has been completed, you get an NPE
Steps to reproduce
Expected results
You get a functional subscription
Actual results
You get an NPE on the first empty table update
Versions
The text was updated successfully, but these errors were encountered: