-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix lost compaction data due to compaction properties missed during reset-cursor #12698
Merged
codelipenghui
merged 1 commit into
apache:master
from
codelipenghui:penghui/compaction_properties
Nov 10, 2021
Merged
Fix lost compaction data due to compaction properties missed during reset-cursor #12698
codelipenghui
merged 1 commit into
apache:master
from
codelipenghui:penghui/compaction_properties
Nov 10, 2021
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Fix lost compaction data due to compaction properties missed during reset-cursor. 1. The compaction reader will seek to the earliest position to read data from the topic, but the compaction properties missed during the cursor reset, this will lead to the inited compaction subscribe without compaction horizon, so the compaction reader will skip the last compacted data. It will only happen when init the compaction subscription, so can introduced by the loadbalance or topic unloading manually. 2. Advance the cursor should also keep the properties, otherwise, the properties will lost during the cursor trimming. ### Changes 1. Keep the properties for resetting the cursor while the cursor is for data compaction. 2. Copy the properties to the new mark delete entry while advance the cursor, this is triggered byt the managed ledger internal, so it's not only for compacted topic, the internal task should not loss the properties when trimming the cursor. ### Tests New tests added to make sure the compaction will not loss data during topic unloading and the reader can read all the compacted data after the compaction task complete
merlimat
approved these changes
Nov 10, 2021
codelipenghui
added a commit
that referenced
this pull request
Nov 18, 2021
Fix lost compaction data due to compaction properties missed during reset-cursor. 1. The compaction reader will seek to the earliest position to read data from the topic, but the compaction properties missed during the cursor reset, this will lead to the inited compaction subscribe without compaction horizon, so the compaction reader will skip the last compacted data. It will only happen when init the compaction subscription, so can introduced by the loadbalance or topic unloading manually. 2. Advance the cursor should also keep the properties, otherwise, the properties will lost during the cursor trimming. ### Changes 1. Keep the properties for resetting the cursor while the cursor is for data compaction. 2. Copy the properties to the new mark delete entry while advance the cursor, this is triggered byt the managed ledger internal, so it's not only for compacted topic, the internal task should not loss the properties when trimming the cursor. ### Tests New tests added to make sure the compaction will not loss data during topic unloading and the reader can read all the compacted data after the compaction task complete (cherry picked from commit 98e2c66)
eolivelli
pushed a commit
to eolivelli/pulsar
that referenced
this pull request
Nov 29, 2021
Fix lost compaction data due to compaction properties missed during reset-cursor. 1. The compaction reader will seek to the earliest position to read data from the topic, but the compaction properties missed during the cursor reset, this will lead to the inited compaction subscribe without compaction horizon, so the compaction reader will skip the last compacted data. It will only happen when init the compaction subscription, so can introduced by the loadbalance or topic unloading manually. 2. Advance the cursor should also keep the properties, otherwise, the properties will lost during the cursor trimming. ### Changes 1. Keep the properties for resetting the cursor while the cursor is for data compaction. 2. Copy the properties to the new mark delete entry while advance the cursor, this is triggered byt the managed ledger internal, so it's not only for compacted topic, the internal task should not loss the properties when trimming the cursor. ### Tests New tests added to make sure the compaction will not loss data during topic unloading and the reader can read all the compacted data after the compaction task complete
codelipenghui
added a commit
that referenced
this pull request
Dec 20, 2021
Fix lost compaction data due to compaction properties missed during reset-cursor. 1. The compaction reader will seek to the earliest position to read data from the topic, but the compaction properties missed during the cursor reset, this will lead to the inited compaction subscribe without compaction horizon, so the compaction reader will skip the last compacted data. It will only happen when init the compaction subscription, so can introduced by the loadbalance or topic unloading manually. 2. Advance the cursor should also keep the properties, otherwise, the properties will lost during the cursor trimming. ### Changes 1. Keep the properties for resetting the cursor while the cursor is for data compaction. 2. Copy the properties to the new mark delete entry while advance the cursor, this is triggered byt the managed ledger internal, so it's not only for compacted topic, the internal task should not loss the properties when trimming the cursor. ### Tests New tests added to make sure the compaction will not loss data during topic unloading and the reader can read all the compacted data after the compaction task complete (cherry picked from commit 98e2c66)
3 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
area/broker
area/compaction
cherry-picked/branch-2.7
Archived: 2.7 is end of life
cherry-picked/branch-2.8
Archived: 2.8 is end of life
cherry-picked/branch-2.9
Archived: 2.9 is end of life
doc-not-needed
Your PR changes do not impact docs
release/2.7.5
release/2.8.2
release/2.9.2
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.
Motivation
Fix lost compaction data due to compaction properties missed during reset-cursor.
The compaction reader will seek to the earliest position to read data from the topic, but the compaction properties missed during the cursor reset, this will lead to the inited compaction subscribe without compaction horizon, so the compaction reader will skip the last compacted data. It will only happen when init the compaction subscription, so can introduced by the loadbalance or topic unloading manually.
Advance the cursor should also keep the properties, otherwise, the properties will lost during the cursor trimming.
Changes
Tests
New tests added to make sure the compaction will not loss data during topic unloading and the reader can read all the compacted data after the compaction task complete
Documentation
Check the box below and label this PR (if you have committer privilege).
Need to update docs?
doc-required
(If you need help on updating docs, create a doc issue)
no-need-doc
(Please explain why)
doc
(If this PR contains doc changes)