archive: Avoid duplicate implied-parent checks - #113
Merged
Conversation
Represent the result of resolveArchivePath as a resolvedArchivePath so callers can consume path-resolution details without adding parallel return values. Update existing callers to use the resolved path without changing extraction behavior. Signed-off-by: Paweł Gronowski <git@grono.dev>
resolveArchivePath already checks each entry's parent before createImpliedDirectories checks the same path again. Archives containing many files therefore perform a redundant filesystem lookup for every entry whose parent already exists. Record that observation in resolvedArchivePath and reuse it only while processing the current entry. This removes the duplicate lookup without caching filesystem state across entries, so a parent removed during extraction is observed and recreated for the next entry. Co-authored-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> Signed-off-by: Paweł Gronowski <git@grono.dev>
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #113 +/- ##
==========================================
+ Coverage 65.25% 65.38% +0.13%
==========================================
Files 46 46
Lines 2377 2389 +12
==========================================
+ Hits 1551 1562 +11
+ Misses 606 605 -1
- Partials 220 222 +2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
resolveArchivePathalready checks whether an entry’s parent exists beforecreateImpliedDirectorieschecks it again. Reuse that result for the current entry to avoid the duplicate lookup.Unlike #112, this approach does not persist or mutate state across archive entries. It therefore needs no cache updates or invalidation.
Each entry uses the result from its own path resolution, so the next entry always observes the current filesystem state.
This provides the same optimization with less state and simpler invalidation semantics.