Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2020-11-27 13:04:58 +0300
committerÆvar Arnfjörð Bjarmason <avarab@gmail.com>2020-12-04 18:07:03 +0300
commit11923ef0923e109936d6bbdbf44f46e32b1fb2a5 (patch)
treee019e114f8d4f6ee4bf6173438b6dcfe2aae9e1a
parent2711d9f78b073414b2993fd01b301e1cb6c872d9 (diff)
coordinator: Categorize RPCs by whether they need transaction or not
The list of repository-scoped mutating RPCs which is consulted for whether a given RPC shall use transactions or not currently only has two blocks, one for unconditionally enabled respectively disabled ones. In the next commit, we're going to conditionally enable a subset of the disabled RPCs via feature flags. But in fact it doesn't make any sense to set up transactions for some of the RPCs. If we know that a given RPC won't ever update any reference, then it's fine to not use them. Most importantly, this includes RPCs which do repo optimizations, change config, maintain object pools and the transaction voting RPCs themselves. So let's group together all calls which fall into the same category as a preparatory step to keep the actual code changes small. This shouldn't yet trigger any change in behaviour.
-rw-r--r--internal/praefect/coordinator.go86
1 files changed, 46 insertions, 40 deletions
diff --git a/internal/praefect/coordinator.go b/internal/praefect/coordinator.go
index c5f9963b6..ca0bf14db 100644
--- a/internal/praefect/coordinator.go
+++ b/internal/praefect/coordinator.go
@@ -38,45 +38,59 @@ func transactionsDisabled(context.Context) bool { return false }
// transactions. An optional feature flag can be added to conditionally enable transactional
// behaviour. If none is given, it's always enabled.
var transactionRPCs = map[string]transactionsCondition{
- "/gitaly.CleanupService/ApplyBfgObjectMapStream": transactionsDisabled,
- "/gitaly.ConflictsService/ResolveConflicts": transactionsDisabled,
+ "/gitaly.CleanupService/ApplyBfgObjectMapStream": transactionsDisabled,
+ "/gitaly.ConflictsService/ResolveConflicts": transactionsDisabled,
+ "/gitaly.ObjectPoolService/FetchIntoObjectPool": transactionsDisabled,
+ "/gitaly.OperationService/UserApplyPatch": transactionsDisabled,
+ "/gitaly.OperationService/UserCherryPick": transactionsDisabled,
+ "/gitaly.OperationService/UserCommitFiles": transactionsDisabled,
+ "/gitaly.OperationService/UserFFBranch": transactionsDisabled,
+ "/gitaly.OperationService/UserMergeBranch": transactionsDisabled,
+ "/gitaly.OperationService/UserMergeToRef": transactionsDisabled,
+ "/gitaly.OperationService/UserRebaseConfirmable": transactionsDisabled,
+ "/gitaly.OperationService/UserRevert": transactionsDisabled,
+ "/gitaly.OperationService/UserSquash": transactionsDisabled,
+ "/gitaly.OperationService/UserUpdateSubmodule": transactionsDisabled,
+ "/gitaly.RefService/DeleteRefs": transactionsDisabled,
+ "/gitaly.RemoteService/AddRemote": transactionsDisabled,
+ "/gitaly.RemoteService/FetchInternalRemote": transactionsDisabled,
+ "/gitaly.RemoteService/RemoveRemote": transactionsDisabled,
+ "/gitaly.RemoteService/UpdateRemoteMirror": transactionsDisabled,
+ "/gitaly.RepositoryService/CloneFromPool": transactionsDisabled,
+ "/gitaly.RepositoryService/CloneFromPoolInternal": transactionsDisabled,
+ "/gitaly.RepositoryService/CreateFork": transactionsDisabled,
+ "/gitaly.RepositoryService/CreateRepositoryFromBundle": transactionsDisabled,
+ "/gitaly.RepositoryService/CreateRepositoryFromSnapshot": transactionsDisabled,
+ "/gitaly.RepositoryService/CreateRepositoryFromURL": transactionsDisabled,
+ "/gitaly.RepositoryService/FetchRemote": transactionsDisabled,
+ "/gitaly.RepositoryService/FetchSourceBranch": transactionsDisabled,
+ "/gitaly.RepositoryService/ReplicateRepository": transactionsDisabled,
+ "/gitaly.RepositoryService/WriteRef": transactionsDisabled,
+ "/gitaly.WikiService/WikiDeletePage": transactionsDisabled,
+ "/gitaly.WikiService/WikiUpdatePage": transactionsDisabled,
+ "/gitaly.WikiService/WikiWritePage": transactionsDisabled,
+
+ "/gitaly.OperationService/UserCreateBranch": transactionsEnabled,
+ "/gitaly.OperationService/UserCreateTag": transactionsEnabled,
+ "/gitaly.OperationService/UserDeleteBranch": transactionsEnabled,
+ "/gitaly.OperationService/UserDeleteTag": transactionsEnabled,
+ "/gitaly.OperationService/UserUpdateBranch": transactionsEnabled,
+ "/gitaly.SSHService/SSHReceivePack": transactionsEnabled,
+ "/gitaly.SmartHTTPService/PostReceivePack": transactionsEnabled,
+
+ // The following RPCs don't perform any reference updates and thus
+ // shouldn't use transactions.
"/gitaly.ObjectPoolService/CreateObjectPool": transactionsDisabled,
"/gitaly.ObjectPoolService/DeleteObjectPool": transactionsDisabled,
"/gitaly.ObjectPoolService/DisconnectGitAlternates": transactionsDisabled,
- "/gitaly.ObjectPoolService/FetchIntoObjectPool": transactionsDisabled,
"/gitaly.ObjectPoolService/LinkRepositoryToObjectPool": transactionsDisabled,
"/gitaly.ObjectPoolService/ReduplicateRepository": transactionsDisabled,
"/gitaly.ObjectPoolService/UnlinkRepositoryFromObjectPool": transactionsDisabled,
- "/gitaly.OperationService/UserApplyPatch": transactionsDisabled,
- "/gitaly.OperationService/UserCherryPick": transactionsDisabled,
- "/gitaly.OperationService/UserCommitFiles": transactionsDisabled,
- "/gitaly.OperationService/UserFFBranch": transactionsDisabled,
- "/gitaly.OperationService/UserMergeBranch": transactionsDisabled,
- "/gitaly.OperationService/UserMergeToRef": transactionsDisabled,
- "/gitaly.OperationService/UserRebaseConfirmable": transactionsDisabled,
- "/gitaly.OperationService/UserRevert": transactionsDisabled,
- "/gitaly.OperationService/UserSquash": transactionsDisabled,
- "/gitaly.OperationService/UserUpdateSubmodule": transactionsDisabled,
- "/gitaly.RefService/DeleteRefs": transactionsDisabled,
"/gitaly.RefService/PackRefs": transactionsDisabled,
- "/gitaly.RefTransaction/StopTransaction": transactionsDisabled,
- "/gitaly.RefTransaction/VoteTransaction": transactionsDisabled,
- "/gitaly.RemoteService/AddRemote": transactionsDisabled,
- "/gitaly.RemoteService/FetchInternalRemote": transactionsDisabled,
- "/gitaly.RemoteService/RemoveRemote": transactionsDisabled,
- "/gitaly.RemoteService/UpdateRemoteMirror": transactionsDisabled,
"/gitaly.RepositoryService/ApplyGitattributes": transactionsDisabled,
"/gitaly.RepositoryService/Cleanup": transactionsDisabled,
- "/gitaly.RepositoryService/CloneFromPool": transactionsDisabled,
- "/gitaly.RepositoryService/CloneFromPoolInternal": transactionsDisabled,
- "/gitaly.RepositoryService/CreateFork": transactionsDisabled,
"/gitaly.RepositoryService/CreateRepository": transactionsDisabled,
- "/gitaly.RepositoryService/CreateRepositoryFromBundle": transactionsDisabled,
- "/gitaly.RepositoryService/CreateRepositoryFromSnapshot": transactionsDisabled,
- "/gitaly.RepositoryService/CreateRepositoryFromURL": transactionsDisabled,
"/gitaly.RepositoryService/DeleteConfig": transactionsDisabled,
- "/gitaly.RepositoryService/FetchRemote": transactionsDisabled,
- "/gitaly.RepositoryService/FetchSourceBranch": transactionsDisabled,
"/gitaly.RepositoryService/Fsck": transactionsDisabled,
"/gitaly.RepositoryService/GarbageCollect": transactionsDisabled,
"/gitaly.RepositoryService/MidxRepack": transactionsDisabled,
@@ -85,22 +99,14 @@ var transactionRPCs = map[string]transactionsCondition{
"/gitaly.RepositoryService/RenameRepository": transactionsDisabled,
"/gitaly.RepositoryService/RepackFull": transactionsDisabled,
"/gitaly.RepositoryService/RepackIncremental": transactionsDisabled,
- "/gitaly.RepositoryService/ReplicateRepository": transactionsDisabled,
"/gitaly.RepositoryService/RestoreCustomHooks": transactionsDisabled,
"/gitaly.RepositoryService/SetConfig": transactionsDisabled,
"/gitaly.RepositoryService/WriteCommitGraph": transactionsDisabled,
- "/gitaly.RepositoryService/WriteRef": transactionsDisabled,
- "/gitaly.WikiService/WikiDeletePage": transactionsDisabled,
- "/gitaly.WikiService/WikiUpdatePage": transactionsDisabled,
- "/gitaly.WikiService/WikiWritePage": transactionsDisabled,
- "/gitaly.OperationService/UserCreateBranch": transactionsEnabled,
- "/gitaly.OperationService/UserCreateTag": transactionsEnabled,
- "/gitaly.OperationService/UserDeleteBranch": transactionsEnabled,
- "/gitaly.OperationService/UserDeleteTag": transactionsEnabled,
- "/gitaly.OperationService/UserUpdateBranch": transactionsEnabled,
- "/gitaly.SSHService/SSHReceivePack": transactionsEnabled,
- "/gitaly.SmartHTTPService/PostReceivePack": transactionsEnabled,
+ // These shouldn't ever use transactions for the sake of not creating
+ // cyclic dependencies.
+ "/gitaly.RefTransaction/StopTransaction": transactionsDisabled,
+ "/gitaly.RefTransaction/VoteTransaction": transactionsDisabled,
}
func init() {