Skip to content

Commit 90d9d28

Browse files
committed
fix: its2 revision tracking (#10513)
(cherry picked from commit fa7ed3b)
1 parent 1838113 commit 90d9d28

7 files changed

Lines changed: 407 additions & 118 deletions

File tree

pkg/controller/instanceset2/instance_util.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ func buildInstanceByTemplate(tree *kubebuilderx.ObjectTree,
147147
}
148148

149149
inst := b.GetObject()
150+
stampInstanceRevision(inst)
150151
if !shouldCloneInstanceAssistantObjects(its) {
151152
if err := controllerutil.SetControllerReference(its, inst, model.GetScheme()); err != nil {
152153
return nil, err
@@ -425,12 +426,12 @@ func buildDesiredInstancesByName(tree *kubebuilderx.ObjectTree, its *workloads.I
425426
// return requests, limits
426427
// }
427428

428-
func isInstanceUpdated(its *workloads.InstanceSet, inst, desired *workloads.Instance) bool {
429+
func isInstanceUpdated(its *workloads.InstanceSet, inst *workloads.Instance) bool {
429430
updateRevisions, err := revisionmap.Decode(its.Status.UpdateRevisions)
430431
if err != nil {
431432
return false
432433
}
433-
return isInstanceUpdatedWithRevisions(inst, buildCurrentInstanceRevision(inst, desired), updateRevisions)
434+
return isInstanceUpdatedWithRevisions(inst, getInstanceRevision(inst), updateRevisions)
434435
}
435436

436437
func isInstanceUpdatedWithRevisions(inst *workloads.Instance, currentRevision string, updateRevisions map[string]string) bool {

pkg/controller/instanceset2/reconciler_revision_update.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func (r *revisionUpdateReconciler) Reconcile(tree *kubebuilderx.ObjectTree) (kub
5353

5454
updateRevisions := make(map[string]string, len(names))
5555
for _, name := range names {
56-
updateRevisions[name] = buildInstanceRevision(desiredInstances[name])
56+
updateRevisions[name] = getInstanceRevision(desiredInstances[name])
5757
}
5858
revisions, err := revisionmap.Encode(updateRevisions)
5959
if err != nil {
@@ -64,19 +64,19 @@ func (r *revisionUpdateReconciler) Reconcile(tree *kubebuilderx.ObjectTree) (kub
6464
its.Status.UpdateRevision = updateRevisions[names[len(names)-1]]
6565
}
6666

67-
updatedReplicas := r.calculateUpdatedReplicas(its, tree.List(&workloads.Instance{}), desiredInstances)
67+
updatedReplicas := r.calculateUpdatedReplicas(its, tree.List(&workloads.Instance{}))
6868
its.Status.UpdatedReplicas = updatedReplicas
6969

7070
its.Status.ObservedGeneration = its.Generation
7171

7272
return kubebuilderx.Continue, nil
7373
}
7474

75-
func (r *revisionUpdateReconciler) calculateUpdatedReplicas(its *workloads.InstanceSet, instances []client.Object, desiredInstances map[string]*workloads.Instance) int32 {
75+
func (r *revisionUpdateReconciler) calculateUpdatedReplicas(its *workloads.InstanceSet, instances []client.Object) int32 {
7676
updatedReplicas := int32(0)
7777
for i := range instances {
7878
inst, _ := instances[i].(*workloads.Instance)
79-
if isInstanceUpdated(its, inst, desiredInstances[inst.Name]) {
79+
if isInstanceUpdated(its, inst) {
8080
updatedReplicas++
8181
}
8282
}

pkg/controller/instanceset2/reconciler_status.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,6 @@ func (r *statusReconciler) PreCondition(tree *kubebuilderx.ObjectTree) *kubebuil
5555
func (r *statusReconciler) Reconcile(tree *kubebuilderx.ObjectTree) (kubebuilderx.Result, error) {
5656
its, _ := tree.GetRoot().(*workloads.InstanceSet)
5757

58-
desiredInstances, _, err := buildDesiredInstancesByName(tree, its)
59-
if err != nil {
60-
return kubebuilderx.Continue, err
61-
}
62-
6358
instances := tree.List(&workloads.Instance{})
6459
var instanceList []*workloads.Instance
6560
for _, object := range instances {
@@ -111,7 +106,7 @@ func (r *statusReconciler) Reconcile(tree *kubebuilderx.ObjectTree) (kubebuilder
111106
notAvailableNames.Insert(inst.Name)
112107
}
113108
}
114-
currentRevisions[inst.Name] = buildCurrentInstanceRevision(inst, desiredInstances[inst.Name])
109+
currentRevisions[inst.Name] = getInstanceRevision(inst)
115110
if !intctrlutil.IsInstanceTerminating(inst) {
116111
if isInstanceUpdatedWithRevisions(inst, currentRevisions[inst.Name], updateRevisions) {
117112
updatedReplicas++

0 commit comments

Comments
 (0)