[ISSUE #S5] Clamp negative maxNum in IndexService.queryOffset - #11099
Open
zjncs wants to merge 1 commit into
Open
[ISSUE #S5] Clamp negative maxNum in IndexService.queryOffset#11099zjncs wants to merge 1 commit into
zjncs wants to merge 1 commit into
Conversation
maxNum reaches queryOffset straight from QueryMessageRequestHeader, where it is only checked for null. A negative value survives the Math.min(maxNum, maxMsgsNumBatch) cap and makes new ArrayList<>(maxNum) throw IllegalArgumentException: Illegal Capacity, which propagates to the caller as an opaque failure instead of an empty result. Clamp it to 0. Signed-off-by: zjncs <18910855655@163.com>
RockteMQ-AI
approved these changes
Sep 9, 2026
RockteMQ-AI
left a comment
Contributor
There was a problem hiding this comment.
Summary
Clamps negative maxNum to 0 before using it in ArrayList allocation — prevents IllegalArgumentException from propagating as an opaque SYSTEM_ERROR. Clean, minimal fix with a regression test.
LGTM.
Automated review by github-manager-bot
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Motivation
maxNumreachesIndexService.queryOffsetstraight fromQueryMessageRequestHeader, where the field is only annotated@CFNotNull— no range validation. A negative value therefore survives the existingcap (min of a negative and a positive is still negative) and
new ArrayList<>(maxNum)throwsIllegalArgumentException: Illegal Capacity: -1before thetryblock, so it propagates uncaught throughDefaultMessageStore.queryMessageback to the request processor, answering the client with an opaqueSYSTEM_ERROR.Modifications
maxNumto a minimum of 0 before the cap:Math.min(Math.max(maxNum, 0), maxMsgsNumBatch). A negative request now simply returns an emptyQueryOffsetResult, consistent withmaxNum == 0.Verification
Fail-before (new test on unpatched code):
Pass-after — full
IndexServiceTest(5 existing + 1 new):