James Liu activity https://gitlab.com/jamesliu-gitlab 2026-03-18T00:25:16Z tag:gitlab.com,2026-03-18:5215243648 James Liu pushed to project branch jliu/praefect-pool-subcommand at GitLab.org / Gitaly 2026-03-18T00:25:16Z jamesliu-gitlab James Liu [email protected]

James Liu (73e70ae2) at 18 Mar 00:25

pools: Translate between replica and relative path

... and 1 more commit

tag:gitlab.com,2026-03-18:5215190436 James Liu pushed new project branch jliu/praefect-pool-subcommand at GitLab.org / Gitaly 2026-03-18T00:01:25Z jamesliu-gitlab James Liu [email protected]

James Liu (e8572f8d) at 18 Mar 00:01

pools: Create a praefect pool subcommand

tag:gitlab.com,2026-03-17:5215001431 James Liu commented on merge request !8571 at GitLab.org / Gitaly 2026-03-17T22:24:20Z jamesliu-gitlab James Liu [email protected]

@eread it seems like these might have some value in centralising links that could change over time, so that only the single link needs to be updated. Do you think we should keep them around? I don't mind either way, but I thought you might have some opinions about it!

tag:gitlab.com,2026-03-17:5214998505 James Liu commented on merge request !8571 at GitLab.org / Gitaly 2026-03-17T22:22:56Z jamesliu-gitlab James Liu [email protected]

TIL about these footer-style link things. I've never used these in Markdown before.

tag:gitlab.com,2026-03-17:5214993505 James Liu commented on merge request !2983 at GitLab.org / cli 2026-03-17T22:21:02Z jamesliu-gitlab James Liu [email protected]

Sorry @timofurrer! I don't have capacity at the moment

tag:gitlab.com,2026-03-17:5214991813 James Liu commented on merge request !227341 at GitLab.org / GitLab 2026-03-17T22:20:07Z jamesliu-gitlab James Liu [email protected]

Thanks @jcaigitlab, LGTM! I'm not sure what the bot is complaining about here, since the format you have is what I've always seen in the past.

tag:gitlab.com,2026-03-17:5214991299 James Liu approved merge request !227341: Docs: Praefect configuration - Enable TLS + DNS at GitLab.org / GitLab 2026-03-17T22:19:51Z jamesliu-gitlab James Liu [email protected]

What does this MR do and why?

Praefect configuration: Enable TLS + DNS

A recent addition enables dns + tls. Document how this works and how to use it.

References

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

tag:gitlab.com,2026-03-17:5214959458 James Liu commented on merge request !8539 at GitLab.org / Gitaly 2026-03-17T22:07:32Z jamesliu-gitlab James Liu [email protected]

@jcaigitlab @divya_gitlab I think this is ready for another look!

As mentioned here, I've had to change the implementation to call git-diff --numstat which incurs more latency overhead. Even with this overhead, I think there's a net reduction in latency as far as the user is concerned, since Rails no longer needs to make another DiffStats call after CommitDiff.

Let me know what you think, and if you're comfortable with the latency increase.

tag:gitlab.com,2026-03-17:5210924660 James Liu commented on issue #5406 at GitLab.org / Gitaly 2026-03-17T04:43:11Z jamesliu-gitlab James Liu [email protected]

@jcaigitlab cool thanks!

Also, the diagram has a step Git writes refs. Should there be a separate step where Git is writing the objects? Does that come before or after the reference-transaction hook?

So the practical difference would be pipelines and such would take slightly longer to get triggered.

Makes sense! Do you know what would happen if the secondaries were lagging behind in generation number?

tag:gitlab.com,2026-03-17:5210885855 James Liu commented on issue #7087 at GitLab.org / Gitaly 2026-03-17T04:21:00Z jamesliu-gitlab James Liu [email protected]

@patrickbajao I'm honestly not sure. I've only worked very sparingly on the Gitaly client code in Ruby.

It looks like the limitation was introduced in gitlab!136294 (merged) and specifically designed to stop Gitaly requests from being made within the async HTTP client. I don't know if the limitation is supposed to apply universally.

If I've read the code properly:

  1. When the Gitaly client is invoked, it checks if the concurrency limitation is in effect.
  2. The restriction is enabled by calling a helper function here, and the only caller seems to be the HTTP client.

Does this mean that the concurrency limitation is basically a no-op everywhere else?

tag:gitlab.com,2026-03-17:5210818523 James Liu commented on merge request !8568 at GitLab.org / Gitaly 2026-03-17T03:39:57Z jamesliu-gitlab James Liu [email protected]

Is this cost calculation something that already exists?

tag:gitlab.com,2026-03-17:5210818521 James Liu commented on merge request !8568 at GitLab.org / Gitaly 2026-03-17T03:39:57Z jamesliu-gitlab James Liu [email protected]

This link is for Gitaly on Kubernetes 😂

Did you mean to add #7097 instead?

tag:gitlab.com,2026-03-17:5210818516 James Liu commented on merge request !8568 at GitLab.org / Gitaly 2026-03-17T03:39:57Z jamesliu-gitlab James Liu [email protected]

I think we might need to include other clients like Workhorse and GitLab Shell. Most of the heaviest requests like fetches and pushes wouldn't go through Rails at all.

I like the idea of exposing a Gitaly pressure metric to (internal) clients as a means of encouraging them to throttle requests. Would the Gitaly team be responsible for implementing the client-side code too?

X-Score header

I couldn't find any information about this header. How is it supposed to work with Cloudflare?

tag:gitlab.com,2026-03-17:5210818506 James Liu commented on merge request !8568 at GitLab.org / Gitaly 2026-03-17T03:39:56Z jamesliu-gitlab James Liu [email protected]

I noticed that several issues were created recently around load monitoring and shedding. Should we link this document back to the work items?

There are many components that are changing, so it would be good for this to serve as an overview of what each component is, and the issue that is implementing the component.

tag:gitlab.com,2026-03-17:5210818489 James Liu commented on merge request !8568 at GitLab.org / Gitaly 2026-03-17T03:39:55Z jamesliu-gitlab James Liu [email protected]

The 2 second interval suggests the BurdenTracker is only really useful for long-running commands. For short-lived commands, we may not even get the chance to scrape /proc/<pid>/stat and /proc/<pid>/status before the command exits. Should we mention that here?

tag:gitlab.com,2026-03-17:5210563635 James Liu commented on merge request !8554 at GitLab.org / Gitaly 2026-03-17T00:58:07Z jamesliu-gitlab James Liu [email protected]

I'm very confused with how http.proactiveAuth is meant to work within Gitaly. I think it worked in the Runner because it already configures a Git credentials helper. The helper injects $CI_JOB_TOKEN making it implicitly available to Git when http.proactiveAuth is used.

We don't do anything with credential helpers in Gitaly, so I see only a few options where this would work:

  • If the URL directly contains the username and password, like in this block of code.
  • If auth headers were provided by Rails, which seems to happen in cases like Geo replication or when repositories are imported.

Should we enable http.proactiveAuth in the case when auth headers are provided too (in the block below)?


Another case would be that if FetchRemote is called against a public project, and the caller wouldn't supply any auth information even if they had the capacity to. Those requests would then contribute to the unauthenticated rate limit.

tag:gitlab.com,2026-03-17:5210558427 James Liu opened issue #7122: Create pools subcommand for Praefect at GitLab.org / Gitaly 2026-03-17T00:54:20Z jamesliu-gitlab James Liu [email protected] tag:gitlab.com,2026-03-16:5206570375 James Liu commented on merge request !8565 at GitLab.org / Gitaly 2026-03-16T06:20:17Z jamesliu-gitlab James Liu [email protected]

@oli.campeau @echui-gitlab mind having a look? Thanks!

tag:gitlab.com,2026-03-16:5206569243 James Liu commented on merge request !8565 at GitLab.org / Gitaly 2026-03-16T06:19:47Z jamesliu-gitlab James Liu [email protected]

The logic in the Rails API makes the scenario you described impossible. The comment also describes the intended behaviour with 0 upstreams.

tag:gitlab.com,2026-03-16:5206567940 James Liu pushed to project branch jliu/invoke-object-pool-members-api at GitLab.org / Gitaly 2026-03-16T06:19:13Z jamesliu-gitlab James Liu [email protected]

James Liu (9b557947) at 16 Mar 06:19

test: Add .git suffix to all ScanPoolMetadata tests

... and 1 more commit