Use Server-Side Apply patch to manage finalizers #9013
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Originally using Merge Patch + resourceVersion to manage finalizers leads to many retries when multiple controllers are managing the same type of object. The issue is especially apparent for PipelineRuns and TaskRuns. Using Server-Side Apply (SSA) patch eliminates that problem as well as other issues where one controller overrides another controller field.
When using SSA patch it's mandatory to provide fieldManager indicating which controller/client is managing a particular field. To communicate that from a controller, we leverage the Knative controller AgentName option. So far none of the Tekton controllers is using that, so we can use it as an indicator of intention to use an SSA patch to manage the finalizer. When a controller does not set AgentName, we keep the original behavior. This allows seamless transition for all controllers at their own time.
Changes
Submitter Checklist
As the author of this PR, please check off the items in this checklist:
/kind <type>
. Valid types are bug, cleanup, design, documentation, feature, flake, misc, question, tep/kind feature
Release Notes