Skip to content

operations: Always use Git-based implementation of UserCherryPick

Patrick Steinhardt requested to merge pks-drop-git2go-cherry-pick into master

In order to advance our deprecation of libgit2, we have implemented the UserCherryPick RPC with plain Git commands. This feature flag was rolled out to production systems two weeks ago without any observed fallout. We have thus removed the flag once in the past via a0246dcb (operations: Remove CherryPickInPureGit feature flag, 2023-08-08).

Unfortunately, we had to roll back that change because we have observed failures in QA. As it turns out, this failure was caused by a real, but unrelated issue: Rails didn't pass a timestamp to both UserCherryPick and UserRevert, which means that the committer time was computed on the Gitaly host. While this works in standalone Gitaly setups, it results in a race in Gitaly Cluster where each of the backing Gitaly nodes may arrive at a different committer time. The consequence is that in many cases, the transactional vote will fail and thus we abort the change.

This issue exists regardless of whether we use Git2go or Git, and it has been fixed in Rails. So let's try a second time to remove the feature flag.

Closes [Feature flag] Enable pure git UserCherryPick (#5421 - closed).

Merge request reports