-
Notifications
You must be signed in to change notification settings - Fork 1
Description
How to reproduce
Create an object with update policy to ssa-merge or ssa-override, having two annotations set. Then remove one of the annotations, and wait until component-operator-runtime has updated the object.
Expected behaviour: the removed annotation is removed from the object in the cluster.
Actual behaviour: the removed annotation is still there.
Additional information
It seems that this is because (when using ssa), the framework uses Create() to create the object. As a consequence, the fields are owned by manager reconcilerName and operation Update. The ssa update then happens with Patch(), which leads to field owner records with the same manager, but with operation Apply. Which the API server treats as independent owners. As the removed annotation is not part of the specified manifest, the API server concludes that the sender of this manifest has no opinion on the removed annotation, and therefore keeps it with the old owner (the one with operation Update).