[Bug] Replacing topic metadata preserves a stale update timestamp

Open Beginner friendly
#10,879 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

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

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.

Description

Before Creating the Bug Report
  • I found a bug, not just a question.
  • I searched open GitHub Issues and pull requests and found no duplicate.
  • 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.

Dominant language
Java
Stars
22.6k
Forks
12k
Avg merge
3d 12h
Merged PRs (30d)
25

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from apache/rocketmq

All issues in apache/rocketmq

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.