Skip to content
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

[MIG-663] Migrations should not block on a single bad DVM dependency with multi-PVCs #1108

Open
eriknelson opened this issue May 6, 2021 · 0 comments
Labels
kind/feature Categorizes issue or PR as related to a new feature.

Comments

@eriknelson
Copy link
Contributor

eriknelson commented May 6, 2021

Raised by @alaypatel07 and tracked here: https://issues.redhat.com/browse/MIG-663

I'm opening this issue so a solution can be agreed upon here @alaypatel07 / @pranavgaikwad to open enhancement doc for discussion; a PR can close this issue once implemented.

The issue:

If DVM controller is not able to process the dependency of the rsync transfer on any one PVC the entire DVM CR is blocked in the itinerary and hence the migmgiration

An example from the BZ would be quotas, we recommend 10 namespaces in a single plan on any migration at scale, if any one of the namespaces has quota problems all the 9 namespaces will be blocked

In order to solve this, I propose the following.

  • Add a status field to the DVM CR called skippedPVCs containing a list of PVC Ref
  • For all places where we create dependency pods if the requests are not server by quota, find that error and add the PVCs in that namespace on the skippedPVCs
  • For the next phases in the itinerary just look at the remaining PVC and try to migrate them
  • if all the other PVCs complete rsync transfer, make this a partially failed DVM, and migmigration will complete with warnings

This gives the user the ability to migrate the remaining resources, identify the failing PVCs and retry if needed. This also allows us to add more logic in the future(if needed) to make other cases of skipping a PVC.

Resources to identify the error:

apierrors.IsForbidden(err) && strings.Contains(fmt.Sprintf("%#v", err), "quota"), will do the trick see the error code 403 and message in the following debugger snippet.

image

@eriknelson eriknelson added the kind/feature Categorizes issue or PR as related to a new feature. label May 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature Categorizes issue or PR as related to a new feature.
Projects
None yet
Development

No branches or pull requests

1 participant