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
Changes to tombstone GC (mode, gc period, etc) settings don't take full effect till restart (or all sstables are recompacted) #15643
Labels
area/compaction
area/schema changes
Backport candidate
backport/5.2
Issues that should be backported to 5.2 branch once they'll be fixed
P1
Urgent
type/bug
Milestone
Comments
mykaul
added
P1
Urgent
Backport candidate
backport/5.2
Issues that should be backported to 5.2 branch once they'll be fixed
Requires-Backport-to-5.1
labels
Oct 11, 2023
raphaelsc
added a commit
to raphaelsc/scylla
that referenced
this issue
Oct 17, 2023
After "repair: Get rid of the gc_grace_seconds", the sstable's schema (mode, gc period if applicable, etc) is used to estimate the amount of droppable data (or determine full expiration = max_deletion_time < gc_before). It could happen that the user switched from timeout to repair mode, but sstables will still use the old mode, despite the user asked for a new one. Another example is when you play with value of grace period, to prevent data resurrection if repair won't be able to run in a timely manner. The problem persists until all sstables using old GC mode are recompacted or node is restarted. To fix this, we have to feed latest schema into sstable procedures used for expiration purposes. Fixes scylladb#15643. Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com>
raphaelsc
added a commit
to raphaelsc/scylla
that referenced
this issue
Oct 17, 2023
After "repair: Get rid of the gc_grace_seconds", the sstable's schema (mode, gc period if applicable, etc) is used to estimate the amount of droppable data (or determine full expiration = max_deletion_time < gc_before). It could happen that the user switched from timeout to repair mode, but sstables will still use the old mode, despite the user asked for a new one. Another example is when you play with value of grace period, to prevent data resurrection if repair won't be able to run in a timely manner. The problem persists until all sstables using old GC settings are recompacted or node is restarted. To fix this, we have to feed latest schema into sstable procedures used for expiration purposes. Fixes scylladb#15643. Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com>
denesb
pushed a commit
that referenced
this issue
Dec 18, 2023
After "repair: Get rid of the gc_grace_seconds", the sstable's schema (mode, gc period if applicable, etc) is used to estimate the amount of droppable data (or determine full expiration = max_deletion_time < gc_before). It could happen that the user switched from timeout to repair mode, but sstables will still use the old mode, despite the user asked for a new one. Another example is when you play with value of grace period, to prevent data resurrection if repair won't be able to run in a timely manner. The problem persists until all sstables using old GC settings are recompacted or node is restarted. To fix this, we have to feed latest schema into sstable procedures used for expiration purposes. Fixes #15643. Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com> Closes #15746 (cherry picked from commit fded314)
denesb
pushed a commit
that referenced
this issue
Dec 18, 2023
After "repair: Get rid of the gc_grace_seconds", the sstable's schema (mode, gc period if applicable, etc) is used to estimate the amount of droppable data (or determine full expiration = max_deletion_time < gc_before). It could happen that the user switched from timeout to repair mode, but sstables will still use the old mode, despite the user asked for a new one. Another example is when you play with value of grace period, to prevent data resurrection if repair won't be able to run in a timely manner. The problem persists until all sstables using old GC settings are recompacted or node is restarted. To fix this, we have to feed latest schema into sstable procedures used for expiration purposes. Fixes #15643. Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com> Closes #15746 (cherry picked from commit fded314)
Backported to 5.4 and 5.2. |
denesb
removed
Backport candidate
backport/5.2
Issues that should be backported to 5.2 branch once they'll be fixed
labels
Dec 18, 2023
5.2 backport dequeued, it breaks the build. @raphaelsc please prepare a backport PR. |
denesb
added
Backport candidate
backport/5.2
Issues that should be backported to 5.2 branch once they'll be fixed
labels
Dec 18, 2023
ping @raphaelsc , @denesb for backport. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
area/compaction
area/schema changes
Backport candidate
backport/5.2
Issues that should be backported to 5.2 branch once they'll be fixed
P1
Urgent
type/bug
After "repair: Get rid of the gc_grace_seconds", the sstable's schema (mode, gc period if applicable, etc) is used to estimate the amount of droppable data (or determine full expiration, max_deletion_time < gc_before), but it could happen that the user switched from timeout to repair mode, but sstables will still use the old mode, despite the user asked for a new one. To fix this, we have to feed latest schema into procedures for estimation of droppable data, which in turn uses schema settings for calculation of gc before.
The text was updated successfully, but these errors were encountered: