Skip to content
This repository has been archived by the owner on Sep 9, 2020. It is now read-only.

Error and failure reporting #288

Closed
sdboyer opened this issue Mar 6, 2017 · 0 comments
Closed

Error and failure reporting #288

sdboyer opened this issue Mar 6, 2017 · 0 comments

Comments

@sdboyer
Copy link
Member

sdboyer commented Mar 6, 2017

Dependency management is a complex problem. We have tried to eliminate incidental complexities in dep, but the fundamental challenges remain. Consequently, dep has complex failure modes. We need to mitigate the confusion arising from such failures by making errors and failures as comprehensible as possible.

The primary difficulty with these errors is reporting them to the user in a way that links cause and effect, so that the errors are comprehensible and actionable.

There are three main classes of errors to deal with:

  • Bad inputs: problems with either the user's CLI input, or the state of thecurrent project (manifest/lock/code) on disk. These are relatively easy, as these failure modes involve only local (non-network, non-dependency) information.
  • IO problems: any of the classic errors that can occur with network or disk interaction. Network/name resolution failures are particularly important for correctness.
  • Solve failures: when the solver (gps) fails to find an acceptable dependency set, it (usually) reports a set of errors for each version of the project it failed to satisfy. This is the really hard one - hard enough that gps just as a meta-issue for it right now: Handle errors more sanely sdboyer/gps#20

It's quite likely that getting the errors really good will be something we iterate on for a long time to come. The criteria we need to meet here is mostly that we've put handling in place for the easier and more common cases with errors, as well as building some rules and patterns that provide structure and prevent future, iterative work from being totally ad hoc.

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

No branches or pull requests

2 participants