Skip to content

Enable transactions for all repository-scoped mutators

While we're already using transactions for a subset of RPCs, most of our RPCs don't actually use them. This issue tracks the required work to enable them for transactions.

Enabled on February 25th via gitlab-com/gl-infra/production#3799 (closed)

  • ConflictsService/ResolveConflicts
    • staging: /chatops run feature set gitaly_tx_resolve_conflicts true --staging
    • production: /chatops run feature set gitaly_tx_resolve_conflicts true
  • OperationService/UserApplyPatch
    • staging: /chatops run feature set gitaly_tx_user_apply_patch true --staging
    • production: /chatops run feature set gitaly_tx_user_apply_patch true
  • OperationService/UserCherryPick
    • staging: /chatops run feature set gitaly_tx_user_cherry_pick true --staging
    • production: /chatops run feature set gitaly_tx_user_cherry_pick true
  • OperationService/UserCommitFiles
    • staging: /chatops run feature set gitaly_tx_user_commit_files true --staging
    • production: /chatops run feature set gitaly_tx_user_commit_files true
  • OperationService/UserFFBranch
    • staging: /chatops run feature set gitaly_tx_user_ff_branch true --staging
    • production: /chatops run feature set gitaly_tx_user_ff_branch true
  • OperationService/UserMergeBranch
    • staging: /chatops run feature set gitaly_tx_user_merge_branch true --staging
    • production: /chatops run feature set gitaly_tx_user_merge_branch true
  • OperationService/UserMergeToRef
    • staging: /chatops run feature set gitaly_tx_user_merge_to_ref true --staging
    • production: /chatops run feature set gitaly_tx_user_merge_to_ref true
  • OperationService/UserRebaseConfirmable
    • staging: /chatops run feature set gitaly_tx_user_rebase_confirmable true --staging
    • production: /chatops run feature set gitaly_tx_user_rebase_confirmable true
  • OperationService/UserRevert
    • staging: /chatops run feature set gitaly_tx_user_revert true --staging
    • production: /chatops run feature set gitaly_tx_user_revert true
  • OperationService/UserSquash
    • staging: /chatops run feature set gitaly_tx_user_squash true --staging
    • production: /chatops run feature set gitaly_tx_user_squash true
  • OperationService/UserUpdateSubmodule
    • staging: /chatops run feature set gitaly_tx_user_update_submodule true --staging
    • production: /chatops run feature set gitaly_tx_user_update_submodule true

Enabled on February 24th via gitlab-com/gl-infra/production#3706 (closed)

  • RepositoryService/ApplyGitattributes
    • staging: /chatops run feature set gitaly_tx_apply_gitattributes true --staging
    • production: /chatops run feature set gitaly_tx_apply_gitattributes true
  • RemoteService/RemoveRemote
    • staging: /chatops run feature set gitaly_tx_remove_remote true --staging
    • production: /chatops run feature set gitaly_tx_remove_remote true
  • RemoteService/UpdateRemoteMirror
    • staging: /chatops run feature set gitaly_tx_update_remote_mirror true --staging
    • production: /chatops run feature set gitaly_tx_update_remote_mirror true
  • WikiService/WikiDeletePage
    • staging: /chatops run feature set gitaly_tx_wiki_delete_page true --staging
    • production: /chatops run feature set gitaly_tx_wiki_delete_page true
  • WikiService/WikiUpdatePage
    • staging: /chatops run feature set gitaly_tx_wiki_update_page true --staging
    • production: /chatops run feature set gitaly_tx_wiki_update_page true
  • WikiService/WikiWritePage
    • staging: /chatops run feature set gitaly_tx_wiki_write_page true --staging
    • production: /chatops run feature set gitaly_tx_wiki_write_page true

Enabled on February 1st via gitlab-com/gl-infra/production#3444 (closed)

  • CleanupService/ApplyBfgObjectMapStream
    • staging: /chatops run feature set gitaly_tx_apply_bfg_object_map_stream true --staging
    • production: /chatops run feature set gitaly_tx_apply_bfg_object_map_stream true
  • ObjectPoolService/FetchIntoObjectPool
    • staging: /chatops run feature set gitaly_tx_fetch_into_object_pool true --staging
    • production: /chatops run feature set gitaly_tx_fetch_into_object_pool true
  • RefService/DeleteRefs
    • staging: /chatops run feature set gitaly_tx_delete_refs true --staging
    • production: /chatops run feature set gitaly_tx_delete_refs true
  • RemoteService/AddRemote
    • staging: /chatops run feature set gitaly_tx_add_remote true --staging
    • production: /chatops run feature set gitaly_tx_add_remote true
  • RemoteService/FetchInternalRemote
    • staging: /chatops run feature set gitaly_tx_fetch_internal_remote true --staging
    • production: /chatops run feature set gitaly_tx_fetch_internal_remote true

Enabled on January 27th via gitlab-com/gl-infra/production#3431 (closed)

  • RepositoryService/CloneFromPool
    • staging: /chatops run feature set gitaly_tx_clone_from_pool true --staging
    • production: /chatops run feature set gitaly_tx_clone_from_pool true
  • RepositoryService/CloneFromPoolInternal
    • staging: /chatops run feature set gitaly_tx_clone_from_pool_internal true --staging
    • production: /chatops run feature set gitaly_tx_clone_from_pool_internal true
  • RepositoryService/CreateFork
    • staging: /chatops run feature set gitaly_tx_create_fork true --staging
    • production: /chatops run feature set gitaly_tx_create_fork true
  • RepositoryService/CreateRepositoryFromBundle
    • staging: /chatops run feature set gitaly_tx_create_repository_from_bundle true --staging
    • production: /chatops run feature set gitaly_tx_create_repository_from_bundle true
  • RepositoryService/CreateRepositoryFromSnapshot
    • staging: /chatops run feature set gitaly_tx_create_repository_from_snapshot true --staging
    • production: /chatops run feature set gitaly_tx_create_repository_from_snapshot true
  • RepositoryService/CreateRepositoryFromURL
    • staging: /chatops run feature set gitaly_tx_create_repository_from_u_r_l true --staging
    • production: /chatops run feature set gitaly_tx_create_repository_from_u_r_l true
  • RepositoryService/FetchRemote
    • staging: /chatops run feature set gitaly_tx_fetch_remote true --staging
    • production: /chatops run feature set gitaly_tx_fetch_remote true
  • RepositoryService/FetchSourceBranch
    • staging: /chatops run feature set gitaly_tx_fetch_source_branch true --staging
    • production: /chatops run feature set gitaly_tx_fetch_source_branch true
  • RepositoryService/ReplicateRepository
    • staging: /chatops run feature set gitaly_tx_replicate_repository true --staging
    • production: /chatops run feature set gitaly_tx_replicate_repository true
  • RepositoryService/WriteRef
    • staging: /chatops run feature set gitaly_tx_write_ref true --staging
    • production: /chatops run feature set gitaly_tx_write_ref true

Repository-scoped RPCs which don't change references

  • ObjectPoolService/CreateObjectPool
  • ObjectPoolService/DeleteObjectPool
  • ObjectPoolService/DisconnectGitAlternates
  • ObjectPoolService/LinkRepositoryToObjectPool
  • ObjectPoolService/ReduplicateRepository
  • ObjectPoolService/UnlinkRepositoryFromObjectPool
  • RefService/PackRefs
  • RefTransaction/StopTransaction
  • RefTransaction/VoteTransaction
  • RepositoryService/Cleanup
  • RepositoryService/CreateRepository
  • RepositoryService/DeleteConfig
  • RepositoryService/Fsck
  • RepositoryService/GarbageCollect
  • RepositoryService/MidxRepack
  • RepositoryService/OptimizeRepository
  • RepositoryService/RemoveRepository
  • RepositoryService/RenameRepository
  • RepositoryService/RepackFull
  • RepositoryService/RepackIncremental
  • RepositoryService/RestoreCustomHooks
  • RepositoryService/SetConfig
  • RepositoryService/WriteCommitGraph
Edited by Patrick Steinhardt
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information