-
Notifications
You must be signed in to change notification settings - Fork 807
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Return ErrInvalidArgument in cloud upon EC2 ModifyVolume #1960
Conversation
Code Coverage Diff
|
/lgtm |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
/approve
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: torredil 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:
Approvers can indicate their approval by writing |
/retest |
Is this a bug fix or adding new feature?
Feature
What is this PR about? / Why do we need it?
Today, if a user changes the VolumeAttributeClass of a PVC to one that is infeasible (i.e. volume type
gp7
), the external-resizer will immediately and continuously resend the infeasible request (with backoff). This leads to wasted work by the driver/k8s API and possible EC2 API throttling.In order to fix this,
ebs-plugin
must report anINVALID_ARGUMENT
gRPC error code to theexternal-resizer
when the VAC could never be possible, so that theexternal-resizer
marks status as infeasible and re-queues the request with a much longer backoff (as shown by This VolumeAttributesClass-ModifyVolume-Flow diagram.Note: As of today, it seems that external-resizer modifycontroller may have a bug or incomplete infeasible status implementation, because the RPC is not re-queued with a much longer backoff. I will create an issue about this after diving a bit deeper. We should still make this change so that the driver will support this infeasible backoff behavior once resizer is fixed.
What testing is done?
Following our modify-volume via VAC example and
InvalidParameterCombination
InvalidParameterValue
(e.g. "Iops to volume size ratio too high")UnknownVolumeType
ebs-plugin
logs: