diff options
author | Zeger-Jan van de Weg <git@zjvandeweg.nl> | 2020-11-27 19:48:20 +0300 |
---|---|---|
committer | Zeger-Jan van de Weg <git@zjvandeweg.nl> | 2020-11-27 19:48:20 +0300 |
commit | 301b803aa070a589670983ff302df7bd94f7b5f4 (patch) | |
tree | ba6af4a52e02a3794ab4305986ff807effb9ee03 | |
parent | ede84a5d993a3205a5646b39780cbb1514e0f7d6 (diff) | |
parent | 082aee0718cac43d7cf6601a479e0dae3f710f8e (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.yml | 5 | ||||
-rw-r--r-- | internal/praefect/coordinator.go | 8 | ||||
-rw-r--r-- | internal/praefect/coordinator_test.go | 20 |
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() |