This repository was archived by the owner on Sep 11, 2020. It is now read-only.
storage: keep a certain amount of pack files open by default #1109
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.
The
MaxOpenDescriptors
option provides a middle ground solution between keeping all pack files open (as offered by theKeepDescriptors
option) and keeping none open.By default, 100 pack files can be kept open. Files are closed in a FIFO fashion, so the oldest files opened are the first closed.
In addition to this, this change uses the packfile's hash as the map key, instead of the path name. This results in a nice performance boost when iterating over many files, as
objectPackPath
(using path.Join) isn't as fast as you'd imagine. If this PR isn't accepted, that modification will probably still be worth doing.The
MaxOpenDescriptors
being set to 100 is pretty arbitrary, but it feels like lots of people get a large performance penalty when they don't enableKeepDescriptors
, and I guess enabling that by default is going to lead to max file open errors.