Skip to content
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

release-23.1: backupccl: avoid creating spans that start or end on a .Next() key #109777

Merged
merged 1 commit into from Aug 31, 2023

Conversation

blathers-crl[bot]
Copy link

@blathers-crl blathers-crl bot commented Aug 30, 2023

Backport 1/1 commits from #109713 on behalf of @rhu713.

/cc @cockroachdb/release


Remove all calls to key.Next() from generateAndSendImportSpans so that all cover
spans have valid keys as start and end keys.

This fixes an issue where a split can be called on an invalid key that's in the
form of someValidKey.Next() during restore. These invalid keys will generally
have a NULL at the end of the key, which will result in an error when calling
EnsureSafeSplits on this split key. Currently errors from EnsureSafeSplits
are ignored, and thus a split will always be attempted on this type of invalid
split key. This split key can land in the middle of a row with column families,
and thus result in failing SQL queries when querying the restored table.

Fixes: #109483

Release note (bug fix): Fixes an issue where a split can be called on an
invalid key that's in the form of someValidKey.Next() during restore. This split
key can land in the middle of a row with column families, and thus result in
failing SQL queries when querying the restored table.


Release justification: bug fix for data corruption issue on restore

Remove all calls to key.Next() from generateAndSendImportSpans so that all cover
spans have valid keys as start and end keys.

This fixes an issue where a split can be called on an invalid key that's in the
form of `someValidKey.Next()` during restore. These invalid keys will generally
have a `NULL` at the end of the key, which will result in an error when calling
`EnsureSafeSplits` on this split key. Currently errors from `EnsureSafeSplits`
are ignored, and thus a split will always be attempted on this type of invalid
split key. This split key can land in the middle of a row with column families,
and thus result in failing SQL queries when querying the restored table.

A slight modification was also made to restore span generation to only create
spans out of the start keys of the file instead of both start and end keys.
This is not expected to change much to the generated spans as most of the time
the end key of a file span is the same as the start key of the subsequent file,
but it simplifies the restore span generation logic and may result in slighly
larger spans during restore.

Fixes: #109483

Release note (bug fix): Fixes an issue where a split can be called on an
invalid key that's in the form of someValidKey.Next() during restore. This split
key can land in the middle of a row with column families, and thus result in
failing SQL queries when querying the restored table.
@blathers-crl blathers-crl bot requested a review from a team as a code owner August 30, 2023 21:40
@blathers-crl blathers-crl bot force-pushed the blathers/backport-release-23.1-109713 branch from dbaeba7 to b5fb60b Compare August 30, 2023 21:40
@blathers-crl blathers-crl bot requested review from rhu713 and removed request for a team August 30, 2023 21:40
@blathers-crl blathers-crl bot added blathers-backport This is a backport that Blathers created automatically. O-robot Originated from a bot. labels Aug 30, 2023
@blathers-crl
Copy link
Author

blathers-crl bot commented Aug 30, 2023

Thanks for opening a backport.

Please check the backport criteria before merging:

  • Patches should only be created for serious issues or test-only changes.
  • Patches should not break backwards-compatibility.
  • Patches should change as little code as possible.
  • Patches should not change on-disk formats or node communication protocols.
  • Patches should not add new functionality.
  • Patches must not add, edit, or otherwise modify cluster versions; or add version gates.
If some of the basic criteria cannot be satisfied, ensure that the exceptional criteria are satisfied within.
  • There is a high priority need for the functionality that cannot wait until the next release and is difficult to address in another way.
  • The new functionality is additive-only and only runs for clusters which have specifically “opted in” to it (e.g. by a cluster setting).
  • New code is protected by a conditional check that is trivial to verify and ensures that it only runs for opt-in clusters.
  • The PM and TL on the team that owns the changed code have signed off that the change obeys the above rules.

Add a brief release justification to the body of your PR to justify this backport.

Some other things to consider:

  • What did we do to ensure that a user that doesn’t know & care about this backport, has no idea that it happened?
  • Will this work in a cluster of mixed patch versions? Did we test that?
  • If a user upgrades a patch version, uses this feature, and then downgrades, what happens?

@blathers-crl blathers-crl bot force-pushed the blathers/backport-release-23.1-109713 branch from d2424e0 to 409fe00 Compare August 30, 2023 21:40
@blathers-crl blathers-crl bot requested a review from dt August 30, 2023 21:40
@blathers-crl blathers-crl bot added the backport Label PR's that are backports to older release branches label Aug 30, 2023
@cockroach-teamcity
Copy link
Member

This change is Reviewable

@dt
Copy link
Member

dt commented Aug 31, 2023

Merging to make the nightly

@dt dt merged commit af1b4ad into release-23.1 Aug 31, 2023
6 checks passed
@dt dt deleted the blathers/backport-release-23.1-109713 branch August 31, 2023 02:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport Label PR's that are backports to older release branches blathers-backport This is a backport that Blathers created automatically. O-robot Originated from a bot.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants