-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
importer: Check whether file exist before importing (#9522) #9544
importer: Check whether file exist before importing (#9522) #9544
Conversation
Signed-off-by: ti-srebot <ti-srebot@pingcap.com>
/run-all-tests |
@Little-Wallace you're already a collaborator in bot's repo. |
@@ -361,8 +376,14 @@ impl<W: WriteBatch + WriteBatchVecExt<RocksEngine>> ApplyContext<W> { | |||
exec_ctx: None, | |||
use_delete_range: cfg.use_delete_range, | |||
yield_duration: cfg.apply_yield_duration.0, | |||
<<<<<<< HEAD |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Merge conflict.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
Signed-off-by: Little-Wallace <bupt2013211450@gmail.com>
Signed-off-by: Little-Wallace <bupt2013211450@gmail.com>
/lgtm |
/merge |
@Little-Wallace: It seems you want to merge this PR, I will help you trigger all the tests: /run-all-tests You only need to trigger If you have any questions about the PR merge process, please refer to pr process. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository. |
@Little-Wallace: In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/LGTM
[REVIEW NOTIFICATION] This pull request has been approved by:
To complete the pull request process, please ask the reviewers in the list to review by filling The full list of commands accepted by this bot can be found here. Reviewer can indicate their review by writing |
/merge |
@NingLin-P: It seems you want to merge this PR, I will help you trigger all the tests: /run-all-tests You only need to trigger If you have any questions about the PR merge process, please refer to pr process. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository. |
This pull request has been accepted and is ready to merge. Commit hash: e848c43
|
/test |
3 similar comments
/test |
/test |
/test |
…#9544) cherry-pick tikv#9522 to release-4.0 You can switch your code base to this Pull Request by using [git-extras](https://github.com/tj/git-extras): ```bash # In tikv repo: git pr tikv#9544 ``` After apply modifications, you can push your change to this PR via: ```bash git push git@github.com:ti-srebot/tikv.git pr/9544:release-4.0-f4be3a0bf2fa ``` --- <!-- Thank you for contributing to TiKV! If you haven't already, please read TiKV's [CONTRIBUTING](https://github.com/tikv/tikv/blob/master/CONTRIBUTING.md) document. If you're unsure about anything, just ask; somebody should be along to answer within a day or two. PR Title Format: 1. module [, module2, module3]: what's changed 2. *: what's changed If you want to open the **Challenge Program** pull request, please use the following template: https://raw.githubusercontent.com/tikv/.github/master/.github/PULL_REQUEST_TEMPLATE/challenge-program.md You can use it with query parameters: https://github.com/tikv/tikv/compare/master...${you branch}?template=challenge-program.md --> ### What problem does this PR solve? Issue Number: close tikv#9496 Problem Summary: If TiKV has applied one command of ingest but tidb-lightning(import-client) thinks this request has failed, it would send the same ingest-request to TiKV again, which may cause TiKV panic because the file has been ingested and could not be found. There is many case which may cause request failed while it has been applied. Such as: 1. Network lost some packets of ingest-response. 2. The command had been copied to more than half of the members of raft-group but the original leader crashed before the entry of this command committed, then the new leader committed this entry but the client has received fail messages by the response from the original leader. ### What is changed and how it works? We can propose one ingest-request when all the following conditions are met: 1. There is not any pending ingest-request for this sst. 2. The current leader has applied to current term, and we can ensure that the file which we want to ingest exist. 3. The ingest file must be removed before we return response to client, so that the new request will never see the same file again. ### Related changes - PR to update `pingcap/docs`/`pingcap/docs-cn`: - PR to update `pingcap/tidb-ansible`: - Need to cherry-pick to the release branch ### Check List <!--REMOVE the items that are not applicable--> Tests <!-- At least one of them must be included. --> - Unit test Side effects - Performance regression - It may increase the duration of ingest request. - Breaking backward compatibility ### Release note <!-- bugfixes or new feature need a release note --> - No release note.
cherry-pick #9522 to release-4.0
You can switch your code base to this Pull Request by using git-extras:
# In tikv repo: git pr https://github.com/tikv/tikv/pull/9544
After apply modifications, you can push your change to this PR via:
What problem does this PR solve?
Issue Number: close #9496
Problem Summary:
If TiKV has applied one command of ingest but tidb-lightning(import-client) thinks this request has failed, it would send the same ingest-request to TiKV again, which may cause TiKV panic because the file has been ingested and could not be found.
There is many case which may cause request failed while it has been applied. Such as:
What is changed and how it works?
We can propose one ingest-request when all the following conditions are met:
Related changes
pingcap/docs
/pingcap/docs-cn
:pingcap/tidb-ansible
:Check List
Tests
Side effects
Release note