[Bug] Replacing topic metadata preserves a stale update timestamp
- 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
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