Filter for oversized blobs using blobs sitcher
What does this MR do and why?
Previously we used GitalyClient::BlobsStitcher to return all blobs. We then checked if these blobs were over the filesize limit. Those operations were expensive.
In this MR we pass a filter to BlobStitcher and only return blobs over the specified size.
See #482936 (comment 2158778314) for performance comparison when pushing the Linux repo.
MR acceptance checklist
Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
How to set up and validate locally
- Enable the Feature Flag
check_oversized_blobs_without_blob_stitcher
. - Clone the Linux kernel: https://github.com/torvalds/linux
- Create a new project in your GDK and push the Linux kernel master branch to it.
- Notice that the push is successful.
- Check the filesize check is still working by commiting a file over 100mb to the linux kernel.
- Create a new project in the GDK and push the Linux kernel master branch to it.
- Notice that the push is rejected because a file is over the size limit.
Related to #438245
Edited by Gavin Hinfey