[8.4] Fixed an edge case where a shard that hasn't yet received cluster topology could reject internal queries with 'Query requires unavailable slots' during the first moments after server startup - [MOD-13828]#8394
Conversation
|
| local: SlotSet::from_ranges(&[SlotRange { | ||
| start: 0, | ||
| end: 16383, | ||
| }]), |
There was a problem hiding this comment.
Suggest a concise release note for user impact
Low Severity
Per the project rule, here is a suggested release note: "Fixed an edge case where a shard that hasn't received cluster topology yet could reject internal queries with 'Query requires unavailable slots' during the first moments after server startup." This covers the user-facing impact concisely; OSS users could encounter it in the first second after spawn, while RE users are unlikely to be affected in production.
Triggered by project rule: Please assist in writing a GitHub release note for this PR, which is concise and focused on the user impact.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## 8.4 #8394 +/- ##
==========================================
- Coverage 85.46% 85.45% -0.01%
==========================================
Files 335 335
Lines 53010 53027 +17
Branches 11000 11017 +17
==========================================
+ Hits 45303 45314 +11
- Misses 7564 7570 +6
Partials 143 143
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|





Description
Backport of #8388 to
8.4.Describe the changes in the pull request
Fix an edge case where some shard doesn't know the topology yet, but has to reply to some internal query from another shard. We prefer the shard to accept the request rather than fail with "Query requires unavailable slots". The uninitialized shard cannot be a coordinator until it knows the topology, and this change doesn't affect that.
Main objects this PR modified
Mark if applicable
Release Notes
If a release note is required (bug fix / new feature / enhancement), describe the user impact of this PR in the title.
Note
Medium Risk
Changes default slot-availability semantics at startup, which can affect whether queries are accepted/rejected before topology is received; test updates reduce regression risk but behavior change impacts cluster edge cases.
Overview
Prevents startup-time internal queries from being rejected due to an uninitialized cluster topology by changing
SlotsTracker::new()to start with the full slot range (0..=16383) aslocalinstead of an empty set.Because
new()is no longerconst, the FFIthread_local!initialization drops theconst {}wrapper, and unit tests are updated to explicitly simulate the “no local slots yet” import scenario viaset_local_slots(&[])and to adjust version expectations accordingly.Written by Cursor Bugbot for commit fa11607. This will update automatically on new commits. Configure here.