apache / apache/rocketmq

[Bug] Replacing topic metadata preserves a stale update timestamp

Open Beginner friendly
#10,879 2 comments 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

DefaultMetadataStore.updateTopic refreshes the update timestamp on the currently stored metadata object, then replaces the map entry with the caller-provided TopicMetadata. When the caller supplies a distinct replacement object, the stored object keeps its stale timestamp.

### Steps to Reproduce

1. Add topic metadata to DefaultMetadataStore.
2. Create a distinct TopicMetadata replacement for the same topic with updateTimestamp set to 0.
3. Call updateTopic with the replacement.
4. Read the metadata back from the store.

### What Did You Expect to See?

The replacement object stored in the table should have a fresh positive update timestamp.

### What Did You See Instead?

The replacement is stored with updateTimestamp still equal to 0; only the discarded old object was refreshed.

### Additional Context

The behavior is deterministic in DefaultMetadataStoreTest.

Contributor guide

Open the contributing guide

Research direction

Start with DefaultMetadataStore.updateTopic and the deterministic reproduction in DefaultMetadataStoreTest. Trace which TopicMetadata instance receives the timestamp before the map entry is replaced. Done means reading back the replacement object shows a fresh positive updateTimestamp, with the regression test passing.

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.