apache / apache/rocketmq

Static topic mapping may select a stale epoch when the epoch delta overflows

Open Beginner friendly
#10,849 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

### Description

Static topic mapping sorts long epoch values by subtracting them and narrowing the result to int. When two epochs differ by more than Integer.MAX_VALUE, the comparator can reverse their order. In replacement mode, checkAndBuildMappingItems then keeps the stale broker mapping instead of the latest one.

### Expected behavior

Epochs should be ordered with Long.compare so the newest mapping always wins without arithmetic overflow.

### Reproduction

Create two mapping details for the same logical queue with epochs 0 and Long.MAX_VALUE, call checkAndBuildMappingItems with replace enabled, and observe that the epoch-0 mapping is selected.

Contributor guide

Open the contributing guide

Research direction

Start at checkAndBuildMappingItems and trace the replacement-mode ordering of mapping details for the same logical queue. Reproduce the issue with epochs 0 and Long.MAX_VALUE, then verify that the latest epoch is selected without overflow and add or run a regression check for that behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
distributed-systems
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.