fix: Gracefully handle large number of paths returned by pip show #193
+51
−6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
execSync in NodeJS takes a maxBuffer argument; it will not dynamically allocate
the output. When doing
pip show
, we could run into an ENOBUFS error if the buffersize was too small, as a part of path listing. This means there are two options:
We go with option 2 because it's not worth changing everything to callbacks
just for this. All the other I/O uses sync operations anyway.
For the bigger buffer case, we put in retry logic because that is 'free';
it doesn't make sense to provide a CLI flag for the user to customize this,
because what they'll do is look at the error and increase the value;
so we just do it for them.
Fixes #151