-
Notifications
You must be signed in to change notification settings - Fork 1k
Question: does ensure need to reach out to the network as much as it does? #67
Comments
(Almost) all of this comes down to how gps operates.
gps can't not do this at the moment, as it needs the list of possible versions for each project to operate on. (Though there is a happy path where, if we have data in the lock and are not upgrading, we avoid fetching versions until we know we have to break the lock). We could cache version lists locally, and that's a goal. However, at least part of the slowness issue with this was that git repo sources were blocking the whole solving algorithm in a way that they weren't supposed to. That should be fixed...though allowing more parallelization there might also have the effect of exacerbating #66.
This one's just the nature of the beast. Any update can potentially introduce new transitive deps, including new shared deps, which may result in conflicts; it's unsafe to treat any update in isolation.
Yes, enormously. Here's one of the solver wall time listings from your testing runs:
All three of the top items are completely cache-friendly. Dealing with each:
It won't be totally smooth sailing, but Once that caching's in place - and especially if we put logic in the source manager to pre-warm these caches in the background of solve runs - then I expect we'll see solve times drop precipitously.
Returning to this just to say...no. I need to open issues for many of the above-named things, and this one, too: there needs to be an option that seals off gps from any network activity. It's an important operational mode to offer, just in general. Once the caches are in place, it should be reasonably easy to accomplish this - it'll just operate from cache, or fail. The one thing that might be a bit hinky is dealing with imports that rely on |
Closing this in favor of the more formal #289 |
This is feedback based on my first run with the tool. I was surprised that ensure seemed to always re/query each dep's source of truth, and re/solve the entire graph, even if I was just updating a single dep. It led to significant frustration due to mismatched expectations. Is this necessary? Can it be improved with e.g. a local cache?
The text was updated successfully, but these errors were encountered: