[Bug] TopicConfig DataVersion not persisted in split registration path
- 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 asking a question, which should be created in [GitHub Discussions](https://github.com/apache/rocketmq/discussions).
- [x] I have searched the [GitHub Issues](https://github.com/apache/rocketmq/issues) and [GitHub Discussions](https://github.com/apache/rocketmq/discussions) of this repository and believe that this is not a duplicate.
- [x] I have confirmed that this bug belongs to the current repository, not other repositories of RocketMQ.
### Runtime platform environment
.
### RocketMQ version
.
### JDK Version
.
### Describe the Bug
In TopicConfigManager#buildSerializeWrapper, when enableSplitRegistration
is enabled, the DataVersion was advanced by directly calling getDataVersion().nextVersion().
Under RocksDB config storage, the version was only bumped in memory
and never persisted, since RocksDBTopicConfigManager overrides
updateDataVersion() to write the version into RocksDB.
We should use updateDataVersion() to advance the version through the unified,
overridable path so it is persisted correctly and carries the proper stateMachineVersion.
### Steps to Reproduce
.
### What Did You Expect to See?
.
### What Did You See Instead?
.
### Additional Context
.
Contributor guide
Research direction
Start at TopicConfigManager#buildSerializeWrapper and read the RocksDBTopicConfigManager override of updateDataVersion(). Trace the split registration path and verify that advancing DataVersion is persisted in RocksDB and retains the proper stateMachineVersion.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, databases, distributed-systems
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 72/100