fix(aster): Messages dropped in Aster private WS methods #27821
Merged
+27
−24
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related to Issue #27804
Problem: When two WebSocket messages arrive in quick succession, the second message is lost entirely.
Root Cause: In
handleOrderandhandlePositions, the code checksfindMessageHashesto see if there's an active subscriber before adding data to the cache. Whenclient.resolve()is called, it deletes the future from client.futures. If a second message arrives before the caller can re-invokewatchOrders,findMessageHashesreturns empty and the entire handler body is skipped. The order/position is never added to the cache.The Fix: Always add incoming data to the cache first, then check for subscribers only when deciding whether to call
client.resolve().Questions/Discussion: I noticed that
handleBalanceandhandleMyTradedon't callfindMessageHasheslikehandleOrderandhandlePositionsdo. There may be some context that I'm missing that could make this PR more correct.