@@ -226,7 +226,7 @@ func (s *Updater) prune(merged *typed.TypedValue, managers fieldpath.ManagedFiel
226226 return nil , fmt .Errorf ("failed to convert merged object to last applied version: %v" , err )
227227 }
228228
229- pruned := convertedMerged .RemoveItems (lastSet .Set ())
229+ pruned := convertedMerged .RemoveItems (lastSet .Set (). NestedSet () )
230230 pruned , err = s .addBackOwnedItems (convertedMerged , pruned , managers , applyingManager )
231231 if err != nil {
232232 return nil , fmt .Errorf ("failed add back owned items: %v" , err )
@@ -247,7 +247,11 @@ func (s *Updater) addBackOwnedItems(merged, pruned *typed.TypedValue, managedFie
247247 if _ , ok := managedAtVersion [managerSet .APIVersion ()]; ! ok {
248248 managedAtVersion [managerSet .APIVersion ()] = fieldpath .NewSet ()
249249 }
250- managedAtVersion [managerSet .APIVersion ()] = managedAtVersion [managerSet .APIVersion ()].Union (managerSet .Set ())
250+ managed := managerSet .Set ()
251+ if managerSet .Applied () {
252+ managed = managed .NestedSet ()
253+ }
254+ managedAtVersion [managerSet .APIVersion ()] = managedAtVersion [managerSet .APIVersion ()].Union (managed )
251255 }
252256 for version , managed := range managedAtVersion {
253257 merged , err = s .Converter .Convert (merged , version )
@@ -272,7 +276,7 @@ func (s *Updater) addBackOwnedItems(merged, pruned *typed.TypedValue, managedFie
272276 if err != nil {
273277 return nil , fmt .Errorf ("failed to create field set from pruned object at version %v: %v" , version , err )
274278 }
275- pruned = merged .RemoveItems (mergedSet .Difference (prunedSet .Union (managed )))
279+ pruned = merged .RemoveItems (mergedSet .NestedSet (). Difference (prunedSet . NestedSet () .Union (managed )))
276280 }
277281 return pruned , nil
278282}
@@ -296,7 +300,7 @@ func (s *Updater) addBackDanglingItems(merged, pruned *typed.TypedValue, lastSet
296300 if err != nil {
297301 return nil , fmt .Errorf ("failed to create field set from merged object in last applied version: %v" , err )
298302 }
299- return merged .RemoveItems (mergedSet .Difference (prunedSet ) .Intersection (lastSet .Set ())), nil
303+ return merged .RemoveItems (mergedSet .NestedSet (). Difference (prunedSet . NestedSet ()) .Intersection (lastSet .Set (). NestedSet ())), nil
300304}
301305
302306// reconcileManagedFieldsWithSchemaChanges reconciles the managed fields with any changes to the
0 commit comments