Merge pull request #78853 from tcmichael/bugfix

Fix a bug that StatefulSet applies the revision incorrectly
This commit is contained in:
Kubernetes Prow Robot 2019-06-29 20:43:21 -07:00 committed by GitHub
commit 8865cb3c24
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 2 deletions

View File

@ -344,11 +344,12 @@ func ApplyRevision(set *apps.StatefulSet, revision *apps.ControllerRevision) (*a
if err != nil {
return nil, err
}
err = json.Unmarshal(patched, clone)
restoredSet := &apps.StatefulSet{}
err = json.Unmarshal(patched, restoredSet)
if err != nil {
return nil, err
}
return clone, nil
return restoredSet, nil
}
// nextRevision finds the next valid revision number based on revisions. If the length of revisions

View File

@ -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) {
// nil inherits statefulset labels