Repository navigation
Conversation
…in a channel it excludes A message.new for a watched channel outside the list refreshed the whole list every time, so a busy channel the filter excludes caused one QueryChannels per message and hit the rate limit. Keep the refresh, but back off per channel once a refresh leaves it out (30 s, doubling to 10 min), and run at most one refresh at a time with one trailing refresh. Refs FLU-1013 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #3069 +/- ##
==========================================
+ Coverage 78.56% 78.62% +0.05%
==========================================
Files 452 452
Lines 29451 29482 +31
==========================================
+ Hits 23139 23180 +41
+ Misses 6312 6302 -10 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Resolves FLU-1013 (sub-ticket of FLU-1012).
When a
message.newarrived for a watched channel that wasn't in aStreamChannelListController's items,onMessageNewran a fullrefresh()every time. If the list's filter excludes that channel, the refresh can never add it, so a busy channel caused one QueryChannels per message. In a livestream load test (50 bots, ~15 msg/s, list filter excluding the watched livestream channel), both test phones got429 Too Many Requestswithin a few bursts.Fix
Keep the refresh, since it's how a hidden channel comes back on a new message; the server sends no
channel.visiblein that case. But remember, per channel, when a refresh left the channel out:connection.recovered;In the load-test scenario that's about 1 query per 30 s → 10 min instead of ~15/s.
How the other SDKs handle this
None of them re-queries the list because of a message event.
allowNotLoadedChannelPromotionForEvent.Matching the filter locally isn't possible on v10 because there's no client-side filter matcher. v11 has one (
stream_core'sFilter<T>.matches); that fix is tracked in FLU-1014.Tests
Handler tests for the backoff, doubling and cap, connection recovery, hidden channels and the shared refresh. A controller test checks that 50
message.newevents for an excluded channel cause exactly one QueryChannels.🤖 Generated with Claude Code
Summary by CodeRabbit