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

Give feedback on failed dependency resolution #15

Open
msteiger opened this issue Apr 20, 2015 · 4 comments
Open

Give feedback on failed dependency resolution #15

msteiger opened this issue Apr 20, 2015 · 4 comments

Comments

@msteiger
Copy link
Member

msteiger commented Apr 20, 2015

Currently, the ResolutionResult class returns false when the resolutions fails. I would find it helpful to get more information on why that happened.

This could include the modules (version ranges) in the DAG that were missing or the dependency links (as modeled by the Constraint class).

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/11606101-give-feedback-on-failed-dependency-resolution?utm_campaign=plugin&utm_content=tracker%2F12992746&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F12992746&utm_medium=issues&utm_source=github).
@Cervator
Copy link
Member

This could also be what we need to give the user more choice in the game setup menu - accepting newer module dependency versions after a disclaimer, for instance. Sounded like @Josharias was interested in helping out with that in the game menu piece :-)

@immortius
Copy link
Member

immortius commented Apr 20, 2015 via email

@keturn
Copy link
Member

keturn commented Jun 4, 2020

To be honest I had thrown this one in the too hard basket to worry about much later.

checks watch

Is five years later “much later” yet? 😉

but seriously, this is a huge source of frustration in trying to work in Terasology. You just get this message that says “failed” with nothing to follow up on and your only options are to walk away or try slamming your face into the wall again and hoping it doesn't hurt this time.

So after spending a couple hours with a debugger, I'm here in ResolutionAttempt.​VersionConstraint.​ConstrainFrom, figuring this is where stuff gets thrown out. (which is itself information! it was loaded in the first place and then excluded by a constraint, which is different than never-found.)

and I've got the debugger spitting this out when something's invalid

String.format("INCOMPATIBLE %s %s %s %s %s", 
    fromVersions, this, toVersions, 
    version.version.orElse(null), compatibility.versionRange);

which is starting to look almost useful, except I can't read this very well

[org.terasology.module.ResolutionAttempt$PossibleVersion@e9495]

so I think the bare minimum here is:

  • implement PossibleVersion.toString
  • implement CompatibleVersions.toString
  • log something here at DEBUG severity when a constraint changes something
    • probably with an extra flag if that removal left only the empty set behind

and I guess that goes for constrainTo as well as constrainFrom

That's not going to make it back to ResolutionResult in a way that we can put a UI on top of, and it's not going to conclusively identify the point of failure (as you said, not all constraints lead to failure), but at least it'll give a person something to go on.

@keturn
Copy link
Member

keturn commented Jun 4, 2020

seems like it may also be useful to filter on dependencyVersion.isPresent(), I'm getting a lot of null there in constrainTo

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

4 participants