Skip to content

Commit c4f4ebe

Browse files
author
Antoine Pelisse
committed
Remove duplicate run to Compare
1 parent b047686 commit c4f4ebe

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

merge/update.go

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ func (s *Updater) EnableUnionFeature() {
4141
s.enableUnions = true
4242
}
4343

44-
func (s *Updater) update(oldObject, newObject *typed.TypedValue, version fieldpath.APIVersion, managers fieldpath.ManagedFields, workflow string, force bool) (fieldpath.ManagedFields, error) {
44+
func (s *Updater) update(oldObject, newObject *typed.TypedValue, version fieldpath.APIVersion, managers fieldpath.ManagedFields, workflow string, force bool) (fieldpath.ManagedFields, *typed.Comparison, error) {
4545
conflicts := fieldpath.ManagedFields{}
4646
removed := fieldpath.ManagedFields{}
4747
compare, err := oldObject.Compare(newObject)
4848
if err != nil {
49-
return nil, fmt.Errorf("failed to compare objects: %v", err)
49+
return nil, nil, fmt.Errorf("failed to compare objects: %v", err)
5050
}
5151

5252
versions := map[fieldpath.APIVersion]*typed.Comparison{
@@ -66,19 +66,19 @@ func (s *Updater) update(oldObject, newObject *typed.TypedValue, version fieldpa
6666
delete(managers, manager)
6767
continue
6868
}
69-
return nil, fmt.Errorf("failed to convert old object: %v", err)
69+
return nil, nil, fmt.Errorf("failed to convert old object: %v", err)
7070
}
7171
versionedNewObject, err := s.Converter.Convert(newObject, managerSet.APIVersion())
7272
if err != nil {
7373
if s.Converter.IsMissingVersionError(err) {
7474
delete(managers, manager)
7575
continue
7676
}
77-
return nil, fmt.Errorf("failed to convert new object: %v", err)
77+
return nil, nil, fmt.Errorf("failed to convert new object: %v", err)
7878
}
7979
compare, err = versionedOldObject.Compare(versionedNewObject)
8080
if err != nil {
81-
return nil, fmt.Errorf("failed to compare objects: %v", err)
81+
return nil, nil, fmt.Errorf("failed to compare objects: %v", err)
8282
}
8383
versions[managerSet.APIVersion()] = compare
8484
}
@@ -94,7 +94,7 @@ func (s *Updater) update(oldObject, newObject *typed.TypedValue, version fieldpa
9494
}
9595

9696
if !force && len(conflicts) != 0 {
97-
return nil, ConflictsFromManagers(conflicts)
97+
return nil, nil, ConflictsFromManagers(conflicts)
9898
}
9999

100100
for manager, conflictSet := range conflicts {
@@ -111,7 +111,7 @@ func (s *Updater) update(oldObject, newObject *typed.TypedValue, version fieldpa
111111
}
112112
}
113113

114-
return managers, nil
114+
return managers, compare, nil
115115
}
116116

117117
// Update is the method you should call once you've merged your final
@@ -128,14 +128,10 @@ func (s *Updater) Update(liveObject, newObject *typed.TypedValue, version fieldp
128128
}
129129
}
130130
managers = shallowCopyManagers(managers)
131-
managers, err = s.update(liveObject, newObject, version, managers, manager, true)
131+
managers, compare, err := s.update(liveObject, newObject, version, managers, manager, true)
132132
if err != nil {
133133
return nil, fieldpath.ManagedFields{}, err
134134
}
135-
compare, err := liveObject.Compare(newObject)
136-
if err != nil {
137-
return nil, fieldpath.ManagedFields{}, fmt.Errorf("failed to compare live and new objects: %v", err)
138-
}
139135
if _, ok := managers[manager]; !ok {
140136
managers[manager] = fieldpath.NewVersionedSet(fieldpath.NewSet(), version, false)
141137
}
@@ -182,7 +178,7 @@ func (s *Updater) Apply(liveObject, configObject *typed.TypedValue, version fiel
182178
if err != nil {
183179
return nil, fieldpath.ManagedFields{}, fmt.Errorf("failed to prune fields: %v", err)
184180
}
185-
managers, err = s.update(liveObject, newObject, version, managers, manager, force)
181+
managers, _, err = s.update(liveObject, newObject, version, managers, manager, force)
186182
if err != nil {
187183
return nil, fieldpath.ManagedFields{}, err
188184
}

0 commit comments

Comments
 (0)