mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
Merge pull request #78853 from tcmichael/bugfix
Fix a bug that StatefulSet applies the revision incorrectly
This commit is contained in:
commit
8865cb3c24
@ -344,11 +344,12 @@ func ApplyRevision(set *apps.StatefulSet, revision *apps.ControllerRevision) (*a
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
err = json.Unmarshal(patched, clone)
|
restoredSet := &apps.StatefulSet{}
|
||||||
|
err = json.Unmarshal(patched, restoredSet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return clone, nil
|
return restoredSet, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// nextRevision finds the next valid revision number based on revisions. If the length of revisions
|
// nextRevision finds the next valid revision number based on revisions. If the length of revisions
|
||||||
|
@ -289,6 +289,39 @@ func TestCreateApplyRevision(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRollingUpdateApplyRevision(t *testing.T) {
|
||||||
|
set := newStatefulSet(1)
|
||||||
|
set.Status.CollisionCount = new(int32)
|
||||||
|
currentSet := set.DeepCopy()
|
||||||
|
currentRevision, err := newRevision(set, 1, set.Status.CollisionCount)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
set.Spec.Template.Spec.Containers[0].Env = []v1.EnvVar{{Name: "foo", Value: "bar"}}
|
||||||
|
updateSet := set.DeepCopy()
|
||||||
|
updateRevision, err := newRevision(set, 2, set.Status.CollisionCount)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
restoredCurrentSet, err := ApplyRevision(set, currentRevision)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(currentSet.Spec.Template, restoredCurrentSet.Spec.Template) {
|
||||||
|
t.Errorf("want %v got %v", currentSet.Spec.Template, restoredCurrentSet.Spec.Template)
|
||||||
|
}
|
||||||
|
|
||||||
|
restoredUpdateSet, err := ApplyRevision(set, updateRevision)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(updateSet.Spec.Template, restoredUpdateSet.Spec.Template) {
|
||||||
|
t.Errorf("want %v got %v", updateSet.Spec.Template, restoredUpdateSet.Spec.Template)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestGetPersistentVolumeClaims(t *testing.T) {
|
func TestGetPersistentVolumeClaims(t *testing.T) {
|
||||||
|
|
||||||
// nil inherits statefulset labels
|
// nil inherits statefulset labels
|
||||||
|
Loading…
Reference in New Issue
Block a user