@@ -226,7 +226,8 @@ 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+ sc , tr := convertedMerged .Schema (), convertedMerged .TypeRef ()
230+ pruned := convertedMerged .RemoveItems (lastSet .Set ().EnsureNamedFieldsAreMembers (sc , tr ))
230231 pruned , err = s .addBackOwnedItems (convertedMerged , pruned , managers , applyingManager )
231232 if err != nil {
232233 return nil , fmt .Errorf ("failed add back owned items: %v" , err )
@@ -272,7 +273,8 @@ func (s *Updater) addBackOwnedItems(merged, pruned *typed.TypedValue, managedFie
272273 if err != nil {
273274 return nil , fmt .Errorf ("failed to create field set from pruned object at version %v: %v" , version , err )
274275 }
275- pruned = merged .RemoveItems (mergedSet .Difference (prunedSet .Union (managed )))
276+ sc , tr := merged .Schema (), merged .TypeRef ()
277+ pruned = merged .RemoveItems (mergedSet .EnsureNamedFieldsAreMembers (sc , tr ).Difference (prunedSet .EnsureNamedFieldsAreMembers (sc , tr ).Union (managed .EnsureNamedFieldsAreMembers (sc , tr ))))
276278 }
277279 return pruned , nil
278280}
@@ -296,7 +298,11 @@ func (s *Updater) addBackDanglingItems(merged, pruned *typed.TypedValue, lastSet
296298 if err != nil {
297299 return nil , fmt .Errorf ("failed to create field set from merged object in last applied version: %v" , err )
298300 }
299- return merged .RemoveItems (mergedSet .Difference (prunedSet ).Intersection (lastSet .Set ())), nil
301+ sc , tr := merged .Schema (), merged .TypeRef ()
302+ prunedSet = prunedSet .EnsureNamedFieldsAreMembers (sc , tr )
303+ mergedSet = mergedSet .EnsureNamedFieldsAreMembers (sc , tr )
304+ last := lastSet .Set ().EnsureNamedFieldsAreMembers (sc , tr )
305+ return merged .RemoveItems (mergedSet .Difference (prunedSet ).Intersection (last )), nil
300306}
301307
302308// reconcileManagedFieldsWithSchemaChanges reconciles the managed fields with any changes to the
0 commit comments