Refactor recovery to support Stores belonging to multiple topics #774
+468
−645
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Main changes
Updated the format of the
"__processed_offsets__"
headers in the changelog messages__processed_offsets__
(previously__processed_offset__
){"topic": 123}
)Upgrade considerations:
Otherwise, the app won't be able to filter out over-produced changelog messages because it won't recognize the old header format used previously.
Removed the warning about processed offset being behind the committed offset.
Long before implementing changelog recovery, we added a mechanism to check if the processed offset in the state is aligned with the committed offset as a best-effort to signal state inconsistency.
Since changelog topics are widely used now, we can remove the check without any harm, and also stop storing the processed offsets directly in the State.
Moved Recovery checks and validations to
RecoveryPartition
Previously,
StorePartition
subclasses verified the changelog message format and checked the processed and committed offsets.It was a repeatable code, and it now lives in
RecoveryPartition
.Also, I added the
StorePartition.write_changelog_offsets()
method to roll the changelog offsets for the skipped overproduced changelogs.