kubernetes-csi / external-snapshotter

Sidecar container that watches Kubernetes Snapshot CRD objects and triggers CreateSnapshot/DeleteSnapshot against a CSI endpoint.
Apache License 2.0
483 stars 367 forks source link

Avoid conflicts in updateSnapshotContentStatus #1066

Closed leonardoce closed 5 months ago

leonardoce commented 5 months ago

This patch replace the usage of UpdateStatus with a patch against the status subresource in the updateSnapshotContentStatus.

The reason behind this change is to avoid conflicts that could potentially arise, as they pose a risk within the context of the calling function createGroupSnapshotWrapper.

If createGroupSnapshotWrapper is called multiple times for the same GroupSnapshot, this will lead to multiple stale VolumeSnapshot and VolumeSnapshotContent being created.

Related: #1050

What type of PR is this?

Uncomment only one /kind <> line, hit enter to put that in a new line, and remove leading whitespaces from that line:

/kind api-change /kind bug /kind cleanup /kind design /kind documentation /kind failing-test /kind feature /kind flake

What this PR does / why we need it:

Which issue(s) this PR fixes:

Special notes for your reviewer:

Does this PR introduce a user-facing change?:

Prevent VolumeSnapshotContent's update from erroring out because of conflicts in the CSI snapshotter sidecar.
k8s-ci-robot commented 5 months ago

Hi @leonardoce. Thanks for your PR.

I'm waiting for a kubernetes-csi member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md). If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
nixpanic commented 5 months ago

/unassign /assign xing-yang

xing-yang commented 5 months ago

In the release note, can you specify that this change is in the CSI snapshotter sidecar.

leonardoce commented 5 months ago

In the release note, can you specify that this change is in the CSI snapshotter sidecar.

Done, and removed that stray line too. Thank you @xing-yang

xing-yang commented 5 months ago

/lgtm /approve

k8s-ci-robot commented 5 months ago

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: leonardoce, xing-yang

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files: - ~~[OWNERS](https://github.com/kubernetes-csi/external-snapshotter/blob/master/OWNERS)~~ [xing-yang] Approvers can indicate their approval by writing `/approve` in a comment Approvers can cancel approval by writing `/approve cancel` in a comment