Fix for #1743 - do not exit early if no blobs found for a period when prefetching. by tyrielv · Pull Request #1745 · microsoft/VFSForGit (original) (raw)
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Conversation5 Commits2 Checks0 Files changed
Conversation
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
[ Show hidden characters]({{ revealButtonHref }})
Fix for #1743 - do not exit early if no blobs found for a period when prefetching.
@tyrielv: did you build and install this locally to verify that it fixes your larger scenario? I'm not seeing a clear reason why this fixes your case.
I'm still working on verifying it, but here's the reasoning:
If it takes more than ChunkSize * TimeoutMs (ie about 7 minutes) for the missingBlobs collection to produce its first value, then the loop currently exits and returns false. If it returns false, then the while loop on line 74 never runs and won't try again, even though the producer for missingBlobs is still running.
In my scenario it took about 1 hour for the missingBlobs producer to finish running and it only discovered 3 missing blobs out of 1.6 million, so it is very likely that there was at least one 7 minute gap before the 3 blobs were all discovered.
(It's considerably less likely on the machine I'm trying to repro on, which only takes about 10 minutes instead of 60 to check all the blobs)
I'm still working on verifying it, but here's the reasoning:
If it takes more than ChunkSize * TimeoutMs (ie about 7 minutes) for the missingBlobs collection to produce its first value, then the loop currently exits and returns false. If it returns false, then the while loop on line 74 never runs and won't try again, even though the producer for missingBlobs is still running.
I see. I now can connect the dots that the early stage is really slow in some cases.
In my scenario it took about 1 hour for the missingBlobs producer to finish running and it only discovered 3 missing blobs out of 1.6 million, so it is very likely that there was at least one 7 minute gap before the 3 blobs were all discovered.
And I didn't expect this to be so slow, but I suppose it would be when checking 1.6 million blobs via libgit2. I'm more convinced that this is a fix, but I appreciate you doing the extra testing.
We won't want to merge this until after #1744 is merged, anyway.
@tyrielv: #1744 is merged. Could you update your branch to kick off a new merge? That will allow us to run the PR validation builds. One easy way is to run git commit --amend --no-edit && git push -f <remote> issue1743
derrickstolee added a commit that referenced this pull request
Major Updates
- Comes with
microsoft/git
v2.32.0.vfs.0.4. - This release will be available via
winget
. - The
gvfs upgrade
verb is deprecated. Any future updates will be taken viawinget
. - This version of Git has an upgrade mechanism that can advance independently of VFS for Git. Run
git update-microsoft-git
to update your Git version. - The build system has been updated to use a more recent version of .NET.
- All macOS and POSIX code has been removed to simplify the build system.
- A FastFetch bug around deleting files has been fixed.
- A prefetch bug around downloading a small number of files has been fixed.
Special thanks to contributors @ldennington, @tyrielv, @50Wliu, and @SteveBenz.
Pull Requests
- #1738: Bumping version of update-winget action
- #1747: UpgradeVerb: write deprecation notice
- #1745: do not exit early if no blobs found for a period when prefetching
- #1740: Skip launching UI if running unattended
- #1737: Update Git to v2.32.0
- #1746: Delete custom upgrader
- #1741: Fix winget tag specification
- #1744: Overhaul build and project systems and drop Mac/POSIX code
- #1736: Update Git to v2.31.1.vfs.0.3
- #1735: Bumping winget action version
- #1734: Adding winget workflow
- #1733: Update Git to include 2.31.1
- #1730: Fix an issue with FastFetch when deleting files
- #1732: Use one NuGet feed
- #1726: Config: commitGraph.generationVersion=1
2 participants