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>2022-06-30 14:59:47 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2022-07-06 09:13:23 +0300
commitd3701bb9efdd2cbfdf21b2560ea22f273ee1120b (patch)
treec1c83e72f5aedcbaeffe82bc8daeeb2618aaeda0
parent8a7bee35e279a75a4e861ccff4d1eb222df15adc (diff)
git2go: Convert injection of feature flags to not use raw flags
Convert the logic to inject and extract feature flags in `gitaly-git2go` to not use raw feature flags anymore. Instead, use `FromMetadataKey()` and `FromContext()` to work on typed `FeatureFlag`s. This prepares for the removal of `featureflag.Raw`.
-rw-r--r--cmd/gitaly-git2go-v15/main.go35
-rw-r--r--internal/git2go/executor.go12
2 files changed, 25 insertions, 22 deletions
diff --git a/cmd/gitaly-git2go-v15/main.go b/cmd/gitaly-git2go-v15/main.go
index 060cdb033..2ce2796ae 100644
--- a/cmd/gitaly-git2go-v15/main.go
+++ b/cmd/gitaly-git2go-v15/main.go
@@ -9,7 +9,6 @@ import (
"flag"
"fmt"
"os"
- "strconv"
"strings"
"github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
@@ -17,7 +16,6 @@ import (
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v15/internal/git2go"
glog "gitlab.com/gitlab-org/gitaly/v15/internal/log"
- "gitlab.com/gitlab-org/gitaly/v15/internal/metadata"
"gitlab.com/gitlab-org/gitaly/v15/internal/metadata/featureflag"
"gitlab.com/gitlab-org/labkit/correlation"
)
@@ -133,12 +131,8 @@ func main() {
subcmdLogger.Infof("starting %s command", subcmdFlags.Name())
ctx = ctxlogrus.ToContext(ctx, subcmdLogger)
-
- featureFlags := make(featureflag.Raw)
- enabledFeatureFlags.SetRaw(featureFlags, true)
- disabledFeatureFlags.SetRaw(featureFlags, false)
-
- ctx = metadata.OutgoingToIncoming(featureflag.OutgoingWithRaw(ctx, featureFlags))
+ ctx = enabledFeatureFlags.ToContext(ctx, true)
+ ctx = disabledFeatureFlags.ToContext(ctx, false)
if err := subcmd.Run(ctx, decoder, encoder); err != nil {
subcmdLogger.WithError(err).Errorf("%s command failed", subcmdFlags.Name())
@@ -148,10 +142,14 @@ func main() {
subcmdLogger.Infof("%s command finished", subcmdFlags.Name())
}
-type featureFlagArg []string
+type featureFlagArg []featureflag.FeatureFlag
func (v *featureFlagArg) String() string {
- return strings.Join(*v, ",")
+ metadataKeys := make([]string, 0, len(*v))
+ for _, flag := range *v {
+ metadataKeys = append(metadataKeys, flag.MetadataKey())
+ }
+ return strings.Join(metadataKeys, ",")
}
func (v *featureFlagArg) Set(s string) error {
@@ -159,15 +157,22 @@ func (v *featureFlagArg) Set(s string) error {
return nil
}
- for _, enabledFF := range strings.Split(s, ",") {
- *v = append(*v, enabledFF)
+ for _, metadataKey := range strings.Split(s, ",") {
+ flag, err := featureflag.FromMetadataKey(metadataKey)
+ if err != nil {
+ return err
+ }
+
+ *v = append(*v, flag)
}
return nil
}
-func (v featureFlagArg) SetRaw(raw featureflag.Raw, enabled bool) {
- for _, ff := range v {
- raw[ff] = strconv.FormatBool(enabled)
+func (v featureFlagArg) ToContext(ctx context.Context, enabled bool) context.Context {
+ for _, flag := range v {
+ ctx = featureflag.IncomingCtxWithFeatureFlag(ctx, flag, enabled)
}
+
+ return ctx
}
diff --git a/internal/git2go/executor.go b/internal/git2go/executor.go
index c1e220f43..5007b6c6f 100644
--- a/internal/git2go/executor.go
+++ b/internal/git2go/executor.go
@@ -59,14 +59,12 @@ func (b *Executor) run(ctx context.Context, repo repository.GitRepo, stdin io.Re
var enabledFeatureFlags, disabledFeatureFlags []string
- for ff, value := range featureflag.RawFromContext(ctx) {
+ for flag, value := range featureflag.FromContext(ctx) {
switch value {
- case "true":
- enabledFeatureFlags = append(enabledFeatureFlags, ff)
- case "false":
- disabledFeatureFlags = append(disabledFeatureFlags, ff)
- default:
- return nil, fmt.Errorf("invalid value for feature flag %q: %q", ff, value)
+ case true:
+ enabledFeatureFlags = append(enabledFeatureFlags, flag.MetadataKey())
+ case false:
+ disabledFeatureFlags = append(disabledFeatureFlags, flag.MetadataKey())
}
}