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

Improve how resoloution errors are provided to the user #670

Open
laeubi opened this issue Sep 14, 2024 · 0 comments
Open

Improve how resoloution errors are provided to the user #670

laeubi opened this issue Sep 14, 2024 · 0 comments

Comments

@laeubi
Copy link
Member

laeubi commented Sep 14, 2024

Currently the resolver gives quite complicated and hard to analyze error messages when a resolution fails, here are some examples:

  • Uses constraint violation problems show a dependency chain to the two chains of where a violation occurred, but there is no easy way to know why these chains are actually pulled in and selected
  • Sometimes requirements are reported as missing even if there are providers in the system, but the reason is that the provider can simply not be selected
  • Optional requirements are listed as "unresolved" and even if this is true from a technical perspective these are often more confusing than they help.
  • Often a larger list of (not yet) resolvable requirements are given, so one has to guess what problem to tackle first

I think we should improve this and for this adapt the resolver in the following ways:

  • Removing a capability from the list of possible options should include a reason string and the capability should be "marked" with that so we later can use this to reveal useful information
  • Unresolved optional should not be reported at all
  • We should only report the one problem that ultimately failed the resolution in the message, we might additional add something like "Current Resource Resolve State" that makes clear it is an intermediate state
  • Reason should include if the Resolver has gave up (e.g. due to timeouts) or if it is an ultimate failure, e.g. "Resolution timed out increase XXXX or specify YYYY to give the Resolver more time to find a better solution"
  • ...

A very good example is this:

where it is very hard to impossible for the usual user to understand the reason of the failure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant