Skip to content

Commit

Permalink
Clean up deep copy needed for UpdateStatefulSet
Browse files Browse the repository at this point in the history
Change-Id: Id732358183d682d1a945cfee56f83bcaac0d7c31
  • Loading branch information
mattcary committed Nov 23, 2021
1 parent 806e38a commit 0e2b901
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 3 deletions.
3 changes: 1 addition & 2 deletions pkg/controller/statefulset/stateful_set.go
Original file line number Diff line number Diff line change
Expand Up @@ -472,8 +472,7 @@ func (ssc *StatefulSetController) syncStatefulSet(ctx context.Context, set *apps
klog.V(4).Infof("Syncing StatefulSet %v/%v with %d pods", set.Namespace, set.Name, len(pods))
var status *apps.StatefulSetStatus
var err error
// TODO: investigate where we mutate the set during the update as it is not obvious.
status, err = ssc.control.UpdateStatefulSet(ctx, set.DeepCopy(), pods)
status, err = ssc.control.UpdateStatefulSet(ctx, set, pods)
if err != nil {
return err
}
Expand Down
2 changes: 2 additions & 0 deletions pkg/controller/statefulset/stateful_set_control.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ type defaultStatefulSetControl struct {
// in no particular order. Clients using the burst strategy should be careful to ensure they
// understand the consistency implications of having unpredictable numbers of pods available.
func (ssc *defaultStatefulSetControl) UpdateStatefulSet(ctx context.Context, set *apps.StatefulSet, pods []*v1.Pod) (*apps.StatefulSetStatus, error) {
set = set.DeepCopy() // set is modified when a new revision is created in performUpdate. Make a copy now to avoid mutation errors.

// list all revisions and sort them
revisions, err := ssc.ListRevisions(set)
if err != nil {
Expand Down
1 change: 0 additions & 1 deletion pkg/controller/statefulset/stateful_set_control_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2326,7 +2326,6 @@ func scaleUpStatefulSetControl(set *apps.StatefulSet,
if err := invariants(set, om); err != nil {
return err
}
//fmt.Printf("Ravig pod conditions %v %v", set.Status.ReadyReplicas, *set.Spec.Replicas)
}
return invariants(set, om)
}
Expand Down

0 comments on commit 0e2b901

Please sign in to comment.