-
Notifications
You must be signed in to change notification settings - Fork 5.9k
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
lightning: add precheck that PD and TiDB must belongs to same cluster #57709
Conversation
Signed-off-by: lance6716 <lance6716@gmail.com>
Hi @lance6716. Thanks for your PR. PRs from untrusted users cannot be marked as trusted with I understand the commands that are listed here. 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 kubernetes-sigs/prow repository. |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #57709 +/- ##
================================================
+ Coverage 72.8318% 73.7008% +0.8690%
================================================
Files 1677 1707 +30
Lines 463944 476191 +12247
================================================
+ Hits 337899 350957 +13058
+ Misses 105169 103631 -1538
- Partials 20876 21603 +727
Flags with carried forward coverage won't be shown. Click here to find out more.
|
/retest |
@lance6716: Cannot trigger testing until a trusted user reviews the PR and leaves an 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 kubernetes-sigs/prow repository. |
/retest |
@lance6716: Cannot trigger testing until a trusted user reviews the PR and leaves an 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 kubernetes-sigs/prow repository. |
/retest |
@wuhuizuo: Cannot trigger testing until a trusted user reviews the PR and leaves an 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 kubernetes-sigs/prow repository. |
return nil, errors.Trace(err) | ||
} | ||
|
||
// if intersection is not empty, we can say URLs from TiDB and PD are from the same cluster |
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.
please comment that there will be false positive if user configs a LB address
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.
PD addresses read from PD or TiDB are from the same source, which is the etcd member's ClientURL. If PD has multiple reachable endpoints on network, it will not cause false positive. I will add comment to explain the source of addresses in next commit
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.
if it fails to get, will return user configured address
pdAddrsGetter = func(ctx context.Context) []string {
leaderInfo, err := pdHTTPCli.GetLeader(ctx)
if err != nil {
return []string{cfg.TiDB.PdAddr}
}
addrs := leaderInfo.GetClientUrls()
if len(addrs) == 0 {
return []string{cfg.TiDB.PdAddr}
}
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.
Signed-off-by: lance6716 <lance6716@gmail.com>
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: D3Hunter, tangenta The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/hold wait for CDC reuse our logic |
/unhold |
/hold |
db *sql.DB | ||
pdAddrsGetter func(context.Context) []string |
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.
I recommend replacing these fields in the struct like:
getPDAddrsFromSQL func(context.Context) []string
getPDAddrsFromPD func(context.Context) []string
This change improves flexibility and provides a clearer abstraction by distinguishing between two different PD address getters(and it's better for CDC to use in upstream and downstream). Additionally, it simplifies unit testing, as you can now mock and test the two getters independently.
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.
distinguishing between upstream and downstream PD address
There's no upstream PD addresses. However I understand your meaning is check the two ways to get PD addresses.
- I don't know how CDC can reuse this struct
pdTiDBFromSameClusterCheckItem
, because the intersection assertion can not be configurated, and CDC wants to assert non-intersection.
Signed-off-by: lance6716 <lance6716@gmail.com>
return true, addrs, addrs2, nil | ||
} | ||
} | ||
return false, addrs, addrs2, nil |
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.
We can add a log to print addrs
and addrs2
. And it's no need to return these addrs.
LGTM |
/unhold |
What problem does this PR solve?
Issue Number: close #57704
Problem Summary:
What changed and how does it work?
Check List
Tests
Side effects
Documentation
Release note
Please refer to Release Notes Language Style Guide to write a quality release note.