From c9df15cd873f2be9dda64e967715b2d3b1893593 Mon Sep 17 00:00:00 2001 From: yuluo-yx Date: Sun, 9 Aug 2026 12:26:07 +0800 Subject: [PATCH] fix(tieredstore): refresh replaced topic metadata timestamp --- .../tieredstore/metadata/DefaultMetadataStore.java | 2 +- .../metadata/DefaultMetadataStoreTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/metadata/DefaultMetadataStore.java b/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/metadata/DefaultMetadataStore.java index dd5a7a68a48..bdd13d17fc1 100644 --- a/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/metadata/DefaultMetadataStore.java +++ b/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/metadata/DefaultMetadataStore.java @@ -144,7 +144,7 @@ public void updateTopic(TopicMetadata topicMetadata) { if (metadata == null) { return; } - metadata.setUpdateTimestamp(System.currentTimeMillis()); + topicMetadata.setUpdateTimestamp(System.currentTimeMillis()); topicMetadataTable.put(topicMetadata.getTopic(), topicMetadata); persist(); } diff --git a/tieredstore/src/test/java/org/apache/rocketmq/tieredstore/metadata/DefaultMetadataStoreTest.java b/tieredstore/src/test/java/org/apache/rocketmq/tieredstore/metadata/DefaultMetadataStoreTest.java index 7a33903d84f..dd0b505f4dd 100644 --- a/tieredstore/src/test/java/org/apache/rocketmq/tieredstore/metadata/DefaultMetadataStoreTest.java +++ b/tieredstore/src/test/java/org/apache/rocketmq/tieredstore/metadata/DefaultMetadataStoreTest.java @@ -145,6 +145,18 @@ public void testTopic() { Assert.assertNotNull(metadataStore.getTopic(topic1)); } + @Test + public void testUpdateTopicRefreshesReplacementTimestamp() { + TopicMetadata existing = metadataStore.addTopic(mq0.getTopic(), 1); + TopicMetadata replacement = new TopicMetadata(existing.getTopicId(), existing.getTopic(), 2); + replacement.setUpdateTimestamp(0); + + metadataStore.updateTopic(replacement); + + Assert.assertSame(replacement, metadataStore.getTopic(mq0.getTopic())); + Assert.assertTrue(replacement.getUpdateTimestamp() > 0); + } + private long countFileSegment(MetadataStore metadataStore) { AtomicLong count = new AtomicLong(); metadataStore.iterateFileSegment(segmentMetadata -> count.incrementAndGet());