Skip to content

gitserver: Add BatchLog

Administrator requested to merge ef/batch-gitserver into main

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: 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.

Frontend dashboard: Frontend dashboard

Git Server dashboard: Git Server dashboard

(New) Local Jaeger trace: Local Jaeger trace

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.

Merge request reports

Loading