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

[bug fix] Take into account PD peer port and PD client port when pdAddresses from TidbCluster manifest used over Discovery service in pd, tidb and tikv startup scripts #5438

Merged
merged 33 commits into from
Dec 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
6a9990a
test
smineyev81 Nov 7, 2023
d94bf00
code that make PD and TiKV to wait until local IP address matches the…
smineyev81 Nov 9, 2023
b936f58
Revert "test"
smineyev81 Nov 9, 2023
cd2e8ce
moved this new feature under new feature flag: TidbCluster.Spec.WaitF…
smineyev81 Nov 11, 2023
f63b452
moved this new feature under new feature flag: TidbCluster.Spec.WaitF…
smineyev81 Nov 11, 2023
98ff19a
Merge branch 'master' into 1.5.1-airbnb-dev
smineyev81 Nov 11, 2023
94f4fad
unit tests fixed
smineyev81 Nov 11, 2023
81db0bd
Merge remote-tracking branch 'origin/1.5.1-airbnb-dev' into 1.5.1-air…
smineyev81 Nov 11, 2023
131a25f
debug message made generic
smineyev81 Nov 13, 2023
adce8b6
regenerated (hack/update-all.sh)
smineyev81 Nov 13, 2023
249874c
Merge branch 'master' into 1.5.1-airbnb-dev
smineyev81 Nov 13, 2023
46a5ee5
comment about availability of WaitForDnsNameIpMatchOnStartup feature …
smineyev81 Nov 14, 2023
fbf1333
Merge branch '1.5.1-airbnb-dev' of github.com:smineyev81/tidb-operato…
smineyev81 Nov 15, 2023
197999b
openapi and docs regenerated
smineyev81 Nov 15, 2023
ae5be4d
WaitForDnsNameIpMatchOnStartup replaced with StartScriptV2FeatureFlags
smineyev81 Nov 15, 2023
f22a32b
Merge branch 'master' into 1.5.1-airbnb-dev
smineyev81 Nov 16, 2023
f925376
Merge branch 'master' into 1.5.1-airbnb-dev
csuzhangxc Nov 16, 2023
cea49e1
making sure that StartScriptFeatureFlags values are valid
smineyev81 Nov 17, 2023
84a58af
Merge remote-tracking branch 'origin/1.5.1-airbnb-dev' into 1.5.1-air…
smineyev81 Nov 17, 2023
3b90ee3
making sure that StartScriptFeatureFlags values are valid
smineyev81 Nov 17, 2023
81b57ef
preferPDAddressesOverDiscovery with tests
smineyev81 Nov 17, 2023
9eaddfc
Merge branch 'master' into 1.5.1-airbnb-dev
smineyev81 Nov 17, 2023
43f2852
start script feature flag validation removed from pd_start_script.go
smineyev81 Nov 18, 2023
9240baf
start script feature flag values validation
smineyev81 Nov 19, 2023
1c739a2
Merge branch 'master' into 1.5.1-airbnb-dev
smineyev81 Nov 19, 2023
3951c9b
Merge branch 'master' into 1.5.1-airbnb-dev
csuzhangxc Nov 21, 2023
365d66a
Merge remote-tracking branch 'upstream/master' into 1.5.1-airbnb-dev
smineyev81 Dec 4, 2023
75b3b16
fixed problem with pdAddresses
smineyev81 Dec 4, 2023
2438f64
fixed problem with pdAddresses
smineyev81 Dec 4, 2023
c5b57a2
fixed problem with pdAddresses
smineyev81 Dec 4, 2023
1c47d6a
fixed problem with pdAddresses
smineyev81 Dec 4, 2023
acce204
scheme support for PD
smineyev81 Dec 5, 2023
13db432
Merge branch 'master' into 1.5.1-airbnb-dev
smineyev81 Dec 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions pkg/manager/member/startscript/v2/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ package v2

import (
"bytes"
"fmt"
"net/url"
"text/template"
)

Expand Down Expand Up @@ -118,3 +120,19 @@ func renderTemplateFunc(tpl *template.Template, model interface{}) (string, erro
}
return buff.String(), nil
}

func addressesWithSchemeAndPort(addresses []string, scheme string, port int32) []string {
res := make([]string, len(addresses))
for i, a := range addresses {
u, err := url.Parse(a)
if err != nil {
res[i] = fmt.Sprintf("%s%s:%d", scheme, a, port)
} else if u.Hostname() != "" {
res[i] = fmt.Sprintf("%s%s:%d", scheme, u.Hostname(), port)
} else {
res[i] = fmt.Sprintf("%s%s:%d", scheme, u.Path, port)
}

}
return res
}
9 changes: 9 additions & 0 deletions pkg/manager/member/startscript/v2/common_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,12 @@ func validateScript(script string) error {
_, err := syntax.NewParser().Parse(strings.NewReader(script), "")
return err
}

func TestAddressesWithSchemeAndPort(t *testing.T) {
g := gomega.NewGomegaWithT(t)

result := addressesWithSchemeAndPort([]string{"example.com", "http://test.com:7777", "https://blah.com"}, "https://", 8080)

expected := []string{"https://example.com:8080", "https://test.com:8080", "https://blah.com:8080"}
g.Expect(result).Should(gomega.Equal(expected))
}
3 changes: 2 additions & 1 deletion pkg/manager/member/startscript/v2/pd_start_script.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ func RenderPDStartScript(tc *v1alpha1.TidbCluster) (string, error) {
preferPDAddressesOverDiscovery := slices.Contains(
tc.Spec.StartScriptV2FeatureFlags, v1alpha1.StartScriptV2FeatureFlagPreferPDAddressesOverDiscovery)
if preferPDAddressesOverDiscovery {
m.PDAddresses = strings.Join(tc.Spec.PDAddresses, ",")
pdAddressesWithSchemeAndPort := addressesWithSchemeAndPort(tc.Spec.PDAddresses, tc.Scheme()+"://", v1alpha1.DefaultPDPeerPort)
m.PDAddresses = strings.Join(pdAddressesWithSchemeAndPort, ",")
}

m.DataDir = filepath.Join(constants.PDDataVolumeMountPath, tc.Spec.PD.DataSubDir)
Expand Down
6 changes: 3 additions & 3 deletions pkg/manager/member/startscript/v2/pd_start_script_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ exec /pd-server ${ARGS}
{
name: "with PDAddresses but without preferPDAddressesOverDiscovery",
modifyTC: func(tc *v1alpha1.TidbCluster) {
tc.Spec.PDAddresses = []string{"${PD_DOMAIN}:2380", "another.pd:2380"}
tc.Spec.PDAddresses = []string{"${PD_DOMAIN}", "another.pd"}
},
expectScript: `#!/bin/sh

Expand Down Expand Up @@ -201,7 +201,7 @@ exec /pd-server ${ARGS}
{
name: "with PDAddresses and preferPDAddressesOverDiscovery",
modifyTC: func(tc *v1alpha1.TidbCluster) {
tc.Spec.PDAddresses = []string{"${PD_DOMAIN}:2380", "another.pd:2380"}
tc.Spec.PDAddresses = []string{"${PD_DOMAIN}", "another.pd"}
tc.Spec.StartScriptV2FeatureFlags = []v1alpha1.StartScriptV2FeatureFlag{
v1alpha1.StartScriptV2FeatureFlagPreferPDAddressesOverDiscovery,
}
Expand Down Expand Up @@ -265,7 +265,7 @@ ARGS="--data-dir=/var/lib/pd \
--advertise-client-urls=http://${PD_DOMAIN}:2379 \
--config=/etc/pd/pd.toml"

ARGS="${ARGS} --join=${PD_DOMAIN}:2380,another.pd:2380"
ARGS="${ARGS} --join=http://${PD_DOMAIN}:2380,http://another.pd:2380"

echo "starting pd-server ..."
sleep $((RANDOM % 10))
Expand Down
3 changes: 2 additions & 1 deletion pkg/manager/member/startscript/v2/tidb_start_script.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ func RenderTiDBStartScript(tc *v1alpha1.TidbCluster) (string, error) {
preferPDAddressesOverDiscovery := slices.Contains(
tc.Spec.StartScriptV2FeatureFlags, v1alpha1.StartScriptV2FeatureFlagPreferPDAddressesOverDiscovery)
if preferPDAddressesOverDiscovery {
m.PDAddresses = strings.Join(tc.Spec.PDAddresses, ",")
pdAddressesWithSchemeAndPort := addressesWithSchemeAndPort(tc.Spec.PDAddresses, "", v1alpha1.DefaultPDClientPort)
m.PDAddresses = strings.Join(pdAddressesWithSchemeAndPort, ",")
}
if len(m.PDAddresses) == 0 {
if tc.AcrossK8s() {
Expand Down
6 changes: 3 additions & 3 deletions pkg/manager/member/startscript/v2/tidb_start_script_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ exec /tidb-server ${ARGS}
{
name: "with PDAddresses but without PreferPDAddressesOverDiscovery",
modifyTC: func(tc *v1alpha1.TidbCluster) {
tc.Spec.PDAddresses = []string{"${PD_DOMAIN}:2380", "another.pd:2380"}
tc.Spec.PDAddresses = []string{"${PD_DOMAIN}", "another.pd"}
},
expectScript: `#!/bin/sh

Expand Down Expand Up @@ -120,7 +120,7 @@ exec /tidb-server ${ARGS}
{
name: "with PDAddresses and PreferPDAddressesOverDiscovery",
modifyTC: func(tc *v1alpha1.TidbCluster) {
tc.Spec.PDAddresses = []string{"${PD_DOMAIN}:2380", "another.pd:2380"}
tc.Spec.PDAddresses = []string{"${PD_DOMAIN}", "another.pd"}
tc.Spec.StartScriptV2FeatureFlags = []v1alpha1.StartScriptV2FeatureFlag{
v1alpha1.StartScriptV2FeatureFlagPreferPDAddressesOverDiscovery,
}
Expand Down Expand Up @@ -149,7 +149,7 @@ TIDB_POD_NAME=${POD_NAME:-$HOSTNAME}
ARGS="--store=tikv \
--advertise-address=${TIDB_POD_NAME}.start-script-test-tidb-peer.start-script-test-ns.svc \
--host=0.0.0.0 \
--path=${PD_DOMAIN}:2380,another.pd:2380 \
--path=${PD_DOMAIN}:2379,another.pd:2379 \
--config=/etc/tidb/tidb.toml"

SLOW_LOG_FILE=${SLOW_LOG_FILE:-""}
Expand Down
3 changes: 2 additions & 1 deletion pkg/manager/member/startscript/v2/tikv_start_script.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ func RenderTiKVStartScript(tc *v1alpha1.TidbCluster) (string, error) {
preferPDAddressesOverDiscovery := slices.Contains(
tc.Spec.StartScriptV2FeatureFlags, v1alpha1.StartScriptV2FeatureFlagPreferPDAddressesOverDiscovery)
if preferPDAddressesOverDiscovery {
m.PDAddresses = strings.Join(tc.Spec.PDAddresses, ",")
pdAddressesWithSchemeAndPort := addressesWithSchemeAndPort(tc.Spec.PDAddresses, "", v1alpha1.DefaultPDClientPort)
m.PDAddresses = strings.Join(pdAddressesWithSchemeAndPort, ",")
}
if len(m.PDAddresses) == 0 {
if tc.AcrossK8s() {
Expand Down
6 changes: 3 additions & 3 deletions pkg/manager/member/startscript/v2/tikv_start_script_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ exec /tikv-server ${ARGS}
{
name: "with PDAddresses but without PDAddressesOverDiscovery",
modifyTC: func(tc *v1alpha1.TidbCluster) {
tc.Spec.PDAddresses = []string{"${PD_DOMAIN}:2380", "another.pd:2380"}
tc.Spec.PDAddresses = []string{"${PD_DOMAIN}", "another.pd"}
},
expectScript: `#!/bin/sh

Expand Down Expand Up @@ -122,7 +122,7 @@ exec /tikv-server ${ARGS}
{
name: "with PDAddresses and PDAddressesOverDiscovery",
modifyTC: func(tc *v1alpha1.TidbCluster) {
tc.Spec.PDAddresses = []string{"${PD_DOMAIN}:2380", "another.pd:2380"}
tc.Spec.PDAddresses = []string{"${PD_DOMAIN}", "another.pd"}
tc.Spec.StartScriptV2FeatureFlags = []v1alpha1.StartScriptV2FeatureFlag{
v1alpha1.StartScriptV2FeatureFlagPreferPDAddressesOverDiscovery,
}
Expand All @@ -148,7 +148,7 @@ fi

TIKV_POD_NAME=${POD_NAME:-$HOSTNAME}

ARGS="--pd=${PD_DOMAIN}:2380,another.pd:2380 \
ARGS="--pd=${PD_DOMAIN}:2379,another.pd:2379 \
--advertise-addr=${TIKV_POD_NAME}.start-script-test-tikv-peer.start-script-test-ns.svc:20160 \
--addr=0.0.0.0:20160 \
--status-addr=0.0.0.0:20180 \
Expand Down