apache / apache/rocketmq

[Bug] StatisticsBrief accepts invalid percentile metadata

Open Beginner friendly
#10,871 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
22.6k
Forks
12k
Avg merge
3d 1h
Merged PRs (30d)
27

Description

### Before Creating the Bug Report

- [x] I found a bug, not just a question.
- [x] I searched open GitHub Issues and pull requests and found no duplicate.
- [x] I confirmed that this bug belongs to Apache RocketMQ.

### Runtime platform environment

macOS (Darwin), reproduced with an isolated local unit test.

### RocketMQ version

Branch: develop
Git commit: fd0c95920e0deac96ce2ae27442747cc5e65e930

### JDK Version

Zulu OpenJDK 8 (8.94.0.17)

### Describe the Bug

StatisticsBrief validates only the outer shape of percentile metadata. Non-positive slot counts, non-increasing range boundaries, and slot counts wider than their range are accepted. These values can later cause division by zero, invalid slot calculations, or array-size overflow.

### Steps to Reproduce

1. Construct StatisticsBrief with metadata such as {{10, 0}}, {{10, 2}, {10, 2}}, or {{10, 11}}.
2. Sample a value or calculate the slot count.
3. Observe invalid arithmetic or inconsistent bucket behavior.

### What Did You Expect to See?

The constructor should reject invalid metadata with IllegalArgumentException.

### What Did You See Instead?

Malformed metadata passes validation and fails later in statistics processing.

### Additional Context

The invalid cases are reproducible with focused StatisticsBrief unit tests.

Contributor guide

Open the contributing guide

Research direction

Locate the StatisticsBrief class and its constructor validation, then review the focused unit tests mentioned in the report. Add coverage for non-positive slot counts, non-increasing range boundaries, and slot counts wider than their ranges; done means each malformed metadata case is rejected with IllegalArgumentException and valid metadata still works.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.