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:
authorZeger-Jan van de Weg <git@zjvandeweg.nl>2020-11-27 19:48:20 +0300
committerZeger-Jan van de Weg <git@zjvandeweg.nl>2020-11-27 19:48:20 +0300
commit301b803aa070a589670983ff302df7bd94f7b5f4 (patch)
treeba6af4a52e02a3794ab4305986ff807effb9ee03
parentede84a5d993a3205a5646b39780cbb1514e0f7d6 (diff)
parent082aee0718cac43d7cf6601a479e0dae3f710f8e (diff)
Merge branch 'zj-env-var-disable-transactions' into 'master'
transactions: Allow disabling with an env var See merge request gitlab-org/gitaly!2853
-rw-r--r--changelogs/unreleased/zj-env-var-disable-transactions.yml5
-rw-r--r--internal/praefect/coordinator.go8
-rw-r--r--internal/praefect/coordinator_test.go20
3 files changed, 33 insertions, 0 deletions
diff --git a/changelogs/unreleased/zj-env-var-disable-transactions.yml b/changelogs/unreleased/zj-env-var-disable-transactions.yml
new file mode 100644
index 000000000..b76cae272
--- /dev/null
+++ b/changelogs/unreleased/zj-env-var-disable-transactions.yml
@@ -0,0 +1,5 @@
+---
+title: 'transactions: Allow disabling with an env var'
+merge_request: 2853
+author:
+type: changed
diff --git a/internal/praefect/coordinator.go b/internal/praefect/coordinator.go
index fa974a4d2..c5f9963b6 100644
--- a/internal/praefect/coordinator.go
+++ b/internal/praefect/coordinator.go
@@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
+ "os"
"github.com/golang/protobuf/proto"
"github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
@@ -129,7 +130,14 @@ func init() {
}
}
+const gitalyDisabledRefEnvVar = "GITALY_DISABLE_REF_TRANSACTIONS"
+
func shouldUseTransaction(ctx context.Context, method string) bool {
+ // Disabling based on a environment variable, as a poor mans feature flag.
+ if _, ok := os.LookupEnv(gitalyDisabledRefEnvVar); ok {
+ return false
+ }
+
condition, ok := transactionRPCs[method]
if !ok {
return false
diff --git a/internal/praefect/coordinator_test.go b/internal/praefect/coordinator_test.go
index 45e5eb917..cddcbb4ba 100644
--- a/internal/praefect/coordinator_test.go
+++ b/internal/praefect/coordinator_test.go
@@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"io/ioutil"
+ "os"
"sync"
"testing"
"time"
@@ -1196,6 +1197,25 @@ func TestStreamDirectorStorageScopeError(t *testing.T) {
})
}
+func TestDisabledTransactionsWithEnvVar(t *testing.T) {
+ os.Setenv(gitalyDisabledRefEnvVar, "1")
+ defer os.Unsetenv(gitalyDisabledRefEnvVar)
+
+ ctx, cancel := testhelper.Context()
+ defer cancel()
+
+ var rpcname string
+ for name, enabledFn := range transactionRPCs {
+ if enabledFn(ctx) {
+ rpcname = name
+ break
+ }
+ }
+
+ require.NotEmpty(t, rpcname, "no enabled reference transaction RPCs")
+ require.False(t, shouldUseTransaction(ctx, rpcname))
+}
+
func requireScopeOperation(t *testing.T, registry *protoregistry.Registry, fullMethod string, scope protoregistry.Scope, op protoregistry.OpType) {
t.Helper()