Skip to content

Commit 2ebcd25

Browse files
authored
Merge pull request kubernetes#83110 from deads2k/finalizer-ordering
explain why finalizers are not processed in order
2 parents c2c8215 + 8f78484 commit 2ebcd25

File tree

7 files changed

+23
-5
lines changed

7 files changed

+23
-5
lines changed

api/openapi-spec/swagger.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/apiextensions-apiserver/pkg/generated/openapi/zz_generated.openapi.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/types.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,15 @@ type ObjectMeta struct {
250250
// is an identifier for the responsible component that will remove the entry
251251
// from the list. If the deletionTimestamp of the object is non-nil, entries
252252
// in this list can only be removed.
253+
// Finalizers may be processed and removed in any order. Order is NOT enforced
254+
// because it introduces significant risk of stuck finalizers.
255+
// finalizers is a shared field, any actor with permission can reorder it.
256+
// If the finalizer list is processed in order, then this can lead to a situation
257+
// in which the component responsible for the first finalizer in the list is
258+
// waiting for a signal (field value, external system, or other) produced by a
259+
// component responsible for a finalizer later in the list, resulting in a deadlock.
260+
// Without enforced ordering finalizers are free to order amongst themselves and
261+
// are not vulnerable to ordering changes in the list.
253262
// +optional
254263
// +patchStrategy=merge
255264
Finalizers []string `json:"finalizers,omitempty" patchStrategy:"merge" protobuf:"bytes,14,rep,name=finalizers"`

staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/code-generator/_examples/apiserver/openapi/zz_generated.openapi.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/sample-apiserver/pkg/generated/openapi/zz_generated.openapi.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)