Skip to content

Commit 4de60f2

Browse files
authored
fix: dynamic reload before restart (#9796)
1 parent 45a065e commit 4de60f2

File tree

5 files changed

+38
-22
lines changed

5 files changed

+38
-22
lines changed

controllers/parameters/policy_util.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -338,10 +338,7 @@ func buildReloadActionTask(reloadPolicy parametersv1alpha1.ReloadPolicy, templat
338338
ClusterComponent: rctx.ClusterComObj,
339339
SynthesizedComponent: rctx.BuiltinComponent,
340340
ReconfigureClientFactory: GetClientFactory(),
341-
}
342-
343-
if reloadPolicy == parametersv1alpha1.SyncDynamicReloadPolicy {
344-
reCtx.UpdatedParameters = generateOnlineUpdateParams(patch, &pd.Spec, *configDescription)
341+
Patch: patch,
345342
}
346343

347344
return reconfigureTask{ReloadPolicy: reloadPolicy, taskCtx: reCtx}

controllers/parameters/policy_util_test.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import (
3939
appsv1 "github.com/apecloud/kubeblocks/apis/apps/v1"
4040
parametersv1alpha1 "github.com/apecloud/kubeblocks/apis/parameters/v1alpha1"
4141
workloads "github.com/apecloud/kubeblocks/apis/workloads/v1"
42+
"github.com/apecloud/kubeblocks/pkg/configuration/core"
4243
"github.com/apecloud/kubeblocks/pkg/controller/component"
4344
intctrlutil "github.com/apecloud/kubeblocks/pkg/controllerutil"
4445
)
@@ -137,9 +138,15 @@ func withConfigDescription(formatter *parametersv1alpha1.FileFormatConfig) Param
137138
}
138139
}
139140

140-
func withUpdatedParameters(patch map[string]string) ParamsOps {
141+
func withUpdatedParameters(patch *core.ConfigPatchInfo) ParamsOps {
141142
return func(params *reconfigureContext) {
142-
params.UpdatedParameters = patch
143+
params.Patch = patch
144+
}
145+
}
146+
147+
func withParamDef(pd *parametersv1alpha1.ParametersDefinitionSpec) ParamsOps {
148+
return func(params *reconfigureContext) {
149+
params.ParametersDef = pd
143150
}
144151
}
145152

controllers/parameters/reconfigure_policy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ type reconfigureContext struct {
104104

105105
ConfigDescription *parametersv1alpha1.ComponentConfigDescription
106106
ParametersDef *parametersv1alpha1.ParametersDefinitionSpec
107-
UpdatedParameters map[string]string
107+
Patch *core.ConfigPatchInfo
108108
}
109109

110110
var (

controllers/parameters/sync_upgrade_policy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func (o *syncPolicy) GetPolicyName() string {
4444
}
4545

4646
func (o *syncPolicy) Upgrade(rctx reconfigureContext) (ReturnedStatus, error) {
47-
updatedParameters := rctx.UpdatedParameters
47+
updatedParameters := generateOnlineUpdateParams(rctx.Patch, rctx.ParametersDef, *rctx.ConfigDescription)
4848
if len(updatedParameters) == 0 {
4949
return makeReturnedStatus(ESNone), nil
5050
}

controllers/parameters/sync_upgrade_policy_test.go

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@ import (
2727
corev1 "k8s.io/api/core/v1"
2828
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2929
"k8s.io/apimachinery/pkg/runtime"
30+
"k8s.io/utils/pointer"
3031

3132
parametersv1alpha1 "github.com/apecloud/kubeblocks/apis/parameters/v1alpha1"
33+
"github.com/apecloud/kubeblocks/pkg/configuration/core"
3234
cfgproto "github.com/apecloud/kubeblocks/pkg/configuration/proto"
3335
mockproto "github.com/apecloud/kubeblocks/pkg/configuration/proto/mocks"
3436
testutil "github.com/apecloud/kubeblocks/pkg/testutil/k8s"
@@ -65,8 +67,15 @@ var _ = Describe("Reconfigure OperatorSyncPolicy", func() {
6567
withMockInstanceSet(3, nil),
6668
withConfigSpec("for_test", map[string]string{"a": "c b e f"}),
6769
withConfigDescription(&parametersv1alpha1.FileFormatConfig{Format: parametersv1alpha1.RedisCfg}),
68-
withUpdatedParameters(map[string]string{
69-
"a": "c b e f",
70+
withUpdatedParameters(&core.ConfigPatchInfo{
71+
IsModify: true,
72+
UpdateConfig: map[string][]byte{
73+
"for-test": []byte(`{"a":"c b e f"}`),
74+
},
75+
}),
76+
withParamDef(&parametersv1alpha1.ParametersDefinitionSpec{
77+
MergeReloadAndRestart: pointer.Bool(false),
78+
ReloadStaticParamsBeforeRestart: pointer.Bool(true),
7079
}),
7180
withClusterComponent(3))
7281

@@ -116,21 +125,24 @@ var _ = Describe("Reconfigure OperatorSyncPolicy", func() {
116125
withMockInstanceSet(3, nil),
117126
withConfigSpec("for_test", map[string]string{"a": "c b e f"}),
118127
withConfigDescription(&parametersv1alpha1.FileFormatConfig{Format: parametersv1alpha1.RedisCfg}),
119-
withUpdatedParameters(map[string]string{
120-
"a": "c b e f",
128+
withUpdatedParameters(&core.ConfigPatchInfo{
129+
IsModify: true,
130+
UpdateConfig: map[string][]byte{
131+
"for-test": []byte(`{"a":"c b e f"}`),
132+
},
121133
}),
122-
withClusterComponent(3))
123-
124-
// add selector
125-
mockParam.ParametersDef = &parametersv1alpha1.ParametersDefinitionSpec{
126-
ReloadAction: &parametersv1alpha1.ReloadAction{
127-
TargetPodSelector: &metav1.LabelSelector{
128-
MatchLabels: map[string]string{
129-
"primary": "true",
134+
withParamDef(&parametersv1alpha1.ParametersDefinitionSpec{
135+
MergeReloadAndRestart: pointer.Bool(false),
136+
ReloadStaticParamsBeforeRestart: pointer.Bool(true),
137+
ReloadAction: &parametersv1alpha1.ReloadAction{
138+
TargetPodSelector: &metav1.LabelSelector{
139+
MatchLabels: map[string]string{
140+
"primary": "true",
141+
},
130142
},
131143
},
132-
},
133-
}
144+
}),
145+
withClusterComponent(3))
134146

135147
By("mock client get pod caller")
136148
k8sMockClient.MockListMethod(testutil.WithListReturned(

0 commit comments

Comments
 (0)