gitserver: Add BatchLog
Created by: efritz
Reviewers: Please review by commit. I've separated out the stuff that's just observability framework and separated code, test, and generated code additions to help aid in understanding of the new code.
This PR adds a BatchLog
method to the gitserver client, which makes a minimal number of network requests to issue git log <format> <commit>
commands for a set of repositories. This is a partial fix for #32328 (closed), which concerns the performance of certain cross-repository code intelligence queries. See the following partial trace for the dominating areas of the query:
Bad, sequential network requests in trace:
This PR also provides full observability including metrics and tracing. A Honeycomb dataset would also be trivial to add on the server side as we used internal/observation
, which supports all of our supported observability sinks today.
Test plan
Additional unit tests should provide good coverage (for confidence regarding batch construction and multiple request paths), and existing Code Intel QA tests exercise this path with exactly one gitserver instance (as a sanity check).
See a main-dry-run.