From fcb672f84846b5503eca20b06bbb0b6f393ec75b Mon Sep 17 00:00:00 2001 From: George MacRorie Date: Fri, 9 Sep 2022 11:17:04 +0100 Subject: [PATCH 1/3] feat: replace logrus with zap --- cmd/flipt/export.go | 5 +- cmd/flipt/import.go | 9 +- cmd/flipt/main.go | 136 +++--- go.mod | 5 +- go.sum | 7 + internal/telemetry/telemetry.go | 8 +- internal/telemetry/telemetry_test.go | 13 +- rpc/flipt/flipt.pb.go | 2 +- rpc/flipt/flipt.pb.gw.go | 594 +++++++++++++++------------ server/evaluator.go | 17 +- server/evaluator_test.go | 96 +++-- server/flag.go | 29 +- server/flag_test.go | 41 +- server/middleware.go | 30 +- server/middleware_test.go | 11 +- server/rule.go | 31 +- server/rule_test.go | 46 ++- server/segment.go | 29 +- server/segment_test.go | 41 +- server/server.go | 7 +- storage/sql/migrator.go | 11 +- storage/sql/migrator_test.go | 9 +- 22 files changed, 643 insertions(+), 534 deletions(-) diff --git a/cmd/flipt/export.go b/cmd/flipt/export.go index d6e1a80df4..15170b79dd 100644 --- a/cmd/flipt/export.go +++ b/cmd/flipt/export.go @@ -15,11 +15,12 @@ import ( "go.flipt.io/flipt/storage/sql/mysql" "go.flipt.io/flipt/storage/sql/postgres" "go.flipt.io/flipt/storage/sql/sqlite" + "go.uber.org/zap" ) var exportFilename string -func runExport(ctx context.Context) error { +func runExport(ctx context.Context, logger *zap.Logger) error { ctx, cancel := context.WithCancel(ctx) defer cancel() @@ -55,7 +56,7 @@ func runExport(ctx context.Context) error { // export to file if exportFilename != "" { - l.Debugf("exporting to %q", exportFilename) + logger.Debug("exporting flags", zap.String("destination_path", exportFilename)) out, err = os.Create(exportFilename) if err != nil { diff --git a/cmd/flipt/import.go b/cmd/flipt/import.go index 8266b7c570..842f836b10 100644 --- a/cmd/flipt/import.go +++ b/cmd/flipt/import.go @@ -16,6 +16,7 @@ import ( "go.flipt.io/flipt/storage/sql/mysql" "go.flipt.io/flipt/storage/sql/postgres" "go.flipt.io/flipt/storage/sql/sqlite" + "go.uber.org/zap" ) var ( @@ -23,7 +24,7 @@ var ( importStdin bool ) -func runImport(ctx context.Context, args []string) error { +func runImport(ctx context.Context, logger *zap.Logger, args []string) error { ctx, cancel := context.WithCancel(ctx) defer cancel() @@ -64,7 +65,7 @@ func runImport(ctx context.Context, args []string) error { f := filepath.Clean(importFilename) - l.Debugf("importing from %q", f) + logger.Debug("importing flags", zap.String("source_path", f)) in, err = os.Open(f) if err != nil { @@ -76,7 +77,7 @@ func runImport(ctx context.Context, args []string) error { // drop tables if specified if dropBeforeImport { - l.Debug("dropping tables before import") + logger.Debug("dropping tables before import") tables := []string{"schema_migrations", "distributions", "rules", "constraints", "variants", "segments", "flags"} @@ -87,7 +88,7 @@ func runImport(ctx context.Context, args []string) error { } } - migrator, err := sql.NewMigrator(*cfg, l) + migrator, err := sql.NewMigrator(*cfg, logger) if err != nil { return err } diff --git a/cmd/flipt/main.go b/cmd/flipt/main.go index 18e1f6e67c..2bc80cce75 100644 --- a/cmd/flipt/main.go +++ b/cmd/flipt/main.go @@ -17,6 +17,7 @@ import ( "path/filepath" "runtime" "strings" + "sync" "syscall" "text/template" "time" @@ -29,7 +30,6 @@ import ( "github.com/google/go-github/v32/github" "github.com/phyber/negroni-gzip/gzip" "github.com/prometheus/client_golang/prometheus/promhttp" - "github.com/sirupsen/logrus" "github.com/spf13/cobra" "go.flipt.io/flipt/config" "go.flipt.io/flipt/internal/info" @@ -46,6 +46,7 @@ import ( "go.flipt.io/flipt/storage/sql/sqlite" "go.flipt.io/flipt/swagger" "go.flipt.io/flipt/ui" + "go.uber.org/zap" "golang.org/x/sync/errgroup" "google.golang.org/grpc" "google.golang.org/grpc/credentials" @@ -57,7 +58,7 @@ import ( _ "github.com/golang-migrate/migrate/source/file" grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware" - grpc_logrus "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus" + grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap" grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/recovery" grpc_ctxtags "github.com/grpc-ecosystem/go-grpc-middleware/tags" grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" @@ -68,12 +69,12 @@ import ( otgrpc "github.com/opentracing-contrib/go-grpc" "github.com/opentracing/opentracing-go" jaeger_config "github.com/uber/jaeger-client-go/config" + jaeger_zap "github.com/uber/jaeger-client-go/log/zap" ) const devVersion = "dev" var ( - l = logrus.New() cfg *config.Config cfgPath string @@ -88,15 +89,35 @@ var ( ) func main() { + var ( + once sync.Once + loggerConfig = zap.Config{ + Level: zap.NewAtomicLevelAt(zap.InfoLevel), + Development: true, + Encoding: "console", + EncoderConfig: zap.NewDevelopmentEncoderConfig(), + OutputPaths: []string{"stdout"}, + ErrorOutputPaths: []string{"stderr"}, + } + l *zap.Logger + logger = func() *zap.Logger { + once.Do(func() { l = zap.Must(loggerConfig.Build()) }) + return l + } + ) + + defer func() { + logger().Sync() + }() + var ( rootCmd = &cobra.Command{ Use: "flipt", Short: "Flipt is a modern feature flag solution", Version: version, Run: func(cmd *cobra.Command, _ []string) { - if err := run(cmd.Context()); err != nil { - logrus.Error(err) - logrus.Exit(1) + if err := run(cmd.Context(), logger()); err != nil { + logger().Fatal("flipt", zap.Error(err)) } }, CompletionOptions: cobra.CompletionOptions{ @@ -108,9 +129,8 @@ func main() { Use: "export", Short: "Export flags/segments/rules to file/stdout", Run: func(cmd *cobra.Command, _ []string) { - if err := runExport(cmd.Context()); err != nil { - logrus.Error(err) - logrus.Exit(1) + if err := runExport(cmd.Context(), logger()); err != nil { + logger().Fatal("export", zap.Error(err)) } }, } @@ -119,9 +139,8 @@ func main() { Use: "import", Short: "Import flags/segments/rules from file", Run: func(cmd *cobra.Command, args []string) { - if err := runImport(cmd.Context(), args); err != nil { - logrus.Error(err) - logrus.Exit(1) + if err := runImport(cmd.Context(), logger(), args); err != nil { + logger().Fatal("import", zap.Error(err)) } }, } @@ -130,17 +149,15 @@ func main() { Use: "migrate", Short: "Run pending database migrations", Run: func(cmd *cobra.Command, _ []string) { - migrator, err := sql.NewMigrator(*cfg, l) + migrator, err := sql.NewMigrator(*cfg, logger()) if err != nil { - logrus.Error(err) - logrus.Exit(1) + logger().Fatal("initializing migrator", zap.Error(err)) } defer migrator.Close() if err := migrator.Run(true); err != nil { - logrus.Error(err) - logrus.Exit(1) + logger().Fatal("running migrator", zap.Error(err)) } }, } @@ -157,8 +174,7 @@ func main() { Date: date, GoVersion: goVersion, }); err != nil { - l.Errorf("executing template: %v", err) - logrus.Exit(1) + logger().Fatal("executing template", zap.Error(err)) } banner = buf.String() @@ -169,36 +185,19 @@ func main() { // read in config cfg, err = config.Load(cfgPath) if err != nil { - l.Error(err) - logrus.Exit(1) + logger().Fatal("loading configuration", zap.Error(err)) } - l.SetOutput(os.Stdout) - // log to file if enabled if cfg.Log.File != "" { - logFile, err := os.OpenFile(cfg.Log.File, os.O_CREATE|os.O_WRONLY, 0600) - if err != nil { - l.Errorf("opening log file: %s %v", cfg.Log.File, err) - logrus.Exit(1) - } - - l.SetOutput(logFile) - logrus.RegisterExitHandler(func() { - if logFile != nil { - _ = logFile.Close() - } - }) + loggerConfig.OutputPaths = []string{cfg.Log.File} } // parse/set log level - lvl, err := logrus.ParseLevel(cfg.Log.Level) + loggerConfig.Level, err = zap.ParseAtomicLevel(cfg.Log.Level) if err != nil { - l.Errorf("parsing log level: %s %v", cfg.Log.Level, err) - logrus.Exit(1) + logger().Fatal("parsing log level", zap.String("level", cfg.Log.Level), zap.Error(err)) } - - l.SetLevel(lvl) }) rootCmd.SetVersionTemplate(banner) @@ -215,14 +214,11 @@ func main() { rootCmd.AddCommand(importCmd) if err := rootCmd.Execute(); err != nil { - l.Error(err) - logrus.Exit(1) + logger().Fatal("execute", zap.Error(err)) } - - logrus.Exit(0) } -func run(ctx context.Context) error { +func run(ctx context.Context, logger *zap.Logger) error { color.Cyan(banner) fmt.Println() @@ -254,15 +250,15 @@ func run(ctx context.Context) error { // print out any warnings from config parsing for _, warning := range cfg.Warnings { - l.Warn(warning) + logger.Warn("configuration warning", zap.String("message", warning)) } if cfg.Meta.CheckForUpdates && isRelease { - l.Debug("checking for updates...") + logger.Debug("checking for updates") release, err := getLatestRelease(ctx) if err != nil { - l.Warn(err) + logger.Warn("getting latest release", zap.Error(err)) } if release != nil { @@ -272,7 +268,7 @@ func run(ctx context.Context) error { return fmt.Errorf("parsing latest version: %w", err) } - l.Debugf("current version: %s; latest version: %s", cv, lv) + logger.Debug("version info", zap.Stringer("current_version", cv), zap.Stringer("latest_version", lv)) switch cv.Compare(lv) { case 0: @@ -295,7 +291,7 @@ func run(ctx context.Context) error { } if os.Getenv("CI") == "true" || os.Getenv("CI") == "1" { - l.Debug("CI detected, disabling telemetry") + logger.Debug("CI detected, disabling telemetry") cfg.Meta.TelemetryEnabled = false } @@ -303,10 +299,10 @@ func run(ctx context.Context) error { if cfg.Meta.TelemetryEnabled && isRelease { if err := initLocalState(); err != nil { - l.Warnf("error getting local state directory: %s, disabling telemetry: %s", cfg.Meta.StateDirectory, err) + logger.Warn("error getting local state directory, disabling telemetry", zap.String("path", cfg.Meta.StateDirectory), zap.Error(err)) cfg.Meta.TelemetryEnabled = false } else { - l.Debugf("local state directory exists: %s", cfg.Meta.StateDirectory) + logger.Debug("local state directory exists", zap.String("path", cfg.Meta.StateDirectory)) } var ( @@ -318,7 +314,7 @@ func run(ctx context.Context) error { // start telemetry if enabled g.Go(func() error { - logger := l.WithField("component", "telemetry") + logger := logger.With(zap.String("component", "telemetry")) // don't log from analytics package analyticsLogger := func() analytics.Logger { @@ -332,7 +328,7 @@ func run(ctx context.Context) error { Logger: analyticsLogger(), }) if err != nil { - logger.Warnf("error initializing telemetry client: %s", err) + logger.Warn("error initializing telemetry client", zap.Error(err)) return nil } @@ -341,14 +337,14 @@ func run(ctx context.Context) error { logger.Debug("starting telemetry reporter") if err := telemetry.Report(ctx, info); err != nil { - logger.Warnf("reporting telemetry: %v", err) + logger.Warn("reporting telemetry", zap.Error(err)) } for { select { case <-ticker.C: if err := telemetry.Report(ctx, info); err != nil { - logger.Warnf("reporting telemetry: %v", err) + logger.Warn("reporting telemetry", zap.Error(err)) } case <-ctx.Done(): ticker.Stop() @@ -365,9 +361,9 @@ func run(ctx context.Context) error { // starts grpc server g.Go(func() error { - logger := l.WithField("server", "grpc") + logger := logger.With(zap.String("server", "grpc")) - migrator, err := sql.NewMigrator(*cfg, l) + migrator, err := sql.NewMigrator(*cfg, logger) if err != nil { return err } @@ -411,7 +407,7 @@ func run(ctx context.Context) error { store = mysql.NewStore(db) } - logger.Debugf("store: %q enabled", store.String()) + logger.Debug("store enabled", zap.Stringer("driver", store)) var tracer opentracing.Tracer = &opentracing.NoopTracer{} @@ -431,7 +427,7 @@ func run(ctx context.Context) error { var closer io.Closer - tracer, closer, err = jaegerCfg.NewTracer(jaeger_config.Logger(&jaegerLogAdapter{logger})) + tracer, closer, err = jaegerCfg.NewTracer(jaeger_config.Logger(jaeger_zap.NewLogger(logger))) if err != nil { return fmt.Errorf("configuring tracing: %w", err) } @@ -444,7 +440,7 @@ func run(ctx context.Context) error { interceptors := []grpc.UnaryServerInterceptor{ grpc_recovery.UnaryServerInterceptor(), grpc_ctxtags.UnaryServerInterceptor(), - grpc_logrus.UnaryServerInterceptor(logger), + grpc_zap.UnaryServerInterceptor(logger), grpc_prometheus.UnaryServerInterceptor, otgrpc.OpenTracingServerInterceptor(tracer), server.ErrorUnaryInterceptor, @@ -483,7 +479,7 @@ func run(ctx context.Context) error { interceptors = append(interceptors, server.CacheUnaryInterceptor(cacher, logger)) - logger.Debugf("cache: %q enabled", cacher.String()) + logger.Debug("cache enabled", zap.Stringer("backend", cacher)) } grpcOpts := []grpc.ServerOption{grpc_middleware.WithUnaryServerChain(interceptors...)} @@ -513,7 +509,7 @@ func run(ctx context.Context) error { // starts REST http(s) server g.Go(func() error { - logger := l.WithField("server", cfg.Server.Protocol.String()) + logger := logger.With(zap.Stringer("server", cfg.Server.Protocol)) var ( // This is required to fix a backwards compatibility issue with the v2 marshaller where `null` map values @@ -578,7 +574,7 @@ func run(ctx context.Context) error { }) r.Use(cors.Handler) - logger.Infof("CORS enabled with allowed origins: %v", cfg.Cors.AllowedOrigins) + logger.Info("CORS enabled", zap.Strings("allowed_origins", cfg.Cors.AllowedOrigins)) } r.Use(middleware.RequestID) @@ -670,7 +666,7 @@ func run(ctx context.Context) error { break } - l.Info("shutting down...") + logger.Info("shutting down...") cancel() @@ -731,13 +727,3 @@ func initLocalState() error { // assume state directory exists and is a directory return nil } - -// jaegerLogAdapter adapts logrus to fulfill Jager's Logger interface -type jaegerLogAdapter struct { - *logrus.Entry -} - -// Error logs a message at error priority -func (l *jaegerLogAdapter) Error(msg string) { - l.Entry.Error(msg) -} diff --git a/go.mod b/go.mod index a9ede977b9..f98da749f7 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,6 @@ require ( github.com/patrickmn/go-cache v2.1.0+incompatible github.com/phyber/negroni-gzip v1.0.0 github.com/prometheus/client_golang v1.13.0 - github.com/sirupsen/logrus v1.9.0 github.com/spf13/cobra v1.5.0 github.com/spf13/viper v1.12.0 github.com/stretchr/testify v1.8.0 @@ -35,6 +34,7 @@ require ( github.com/uber/jaeger-client-go v2.30.0+incompatible github.com/xo/dburl v0.0.0-20200124232849-e9ec94f52bc3 go.flipt.io/flipt-grpc v1.0.0 + go.uber.org/zap v1.23.0 golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f google.golang.org/grpc v1.49.0 google.golang.org/protobuf v1.28.1 @@ -46,6 +46,7 @@ require ( github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Microsoft/go-winio v0.4.17 // indirect github.com/Microsoft/hcsshim v0.8.23 // indirect + github.com/benbjohnson/clock v1.1.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.1.2 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect @@ -89,6 +90,7 @@ require ( github.com/prometheus/common v0.37.0 // indirect github.com/prometheus/procfs v0.8.0 // indirect github.com/segmentio/backo-go v1.0.0 // indirect + github.com/sirupsen/logrus v1.9.0 // indirect github.com/spf13/afero v1.8.2 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect @@ -103,6 +105,7 @@ require ( github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c // indirect go.opencensus.io v0.23.0 // indirect go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect golang.org/x/exp v0.0.0-20210916165020-5cb4fee858ee // indirect golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e // indirect diff --git a/go.sum b/go.sum index 093c0f53a7..e4db95e04e 100644 --- a/go.sum +++ b/go.sum @@ -107,6 +107,8 @@ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQ github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -401,6 +403,7 @@ github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFU github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -952,14 +955,18 @@ go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= diff --git a/internal/telemetry/telemetry.go b/internal/telemetry/telemetry.go index a24dccdc5c..bf11259f4b 100644 --- a/internal/telemetry/telemetry.go +++ b/internal/telemetry/telemetry.go @@ -11,9 +11,9 @@ import ( "time" "github.com/gofrs/uuid" - "github.com/sirupsen/logrus" "go.flipt.io/flipt/config" "go.flipt.io/flipt/internal/info" + "go.uber.org/zap" "gopkg.in/segmentio/analytics-go.v3" ) @@ -41,11 +41,11 @@ type state struct { type Reporter struct { cfg config.Config - logger logrus.FieldLogger + logger *zap.Logger client analytics.Client } -func NewReporter(cfg config.Config, logger logrus.FieldLogger, analytics analytics.Client) *Reporter { +func NewReporter(cfg config.Config, logger *zap.Logger, analytics analytics.Client) *Reporter { return &Reporter{ cfg: cfg, logger: logger, @@ -92,7 +92,7 @@ func (r *Reporter) report(_ context.Context, info info.Flipt, f file) error { r.logger.Debug("initialized new state") } else { t, _ := time.Parse(time.RFC3339, s.LastTimestamp) - r.logger.Debugf("last report was: %v ago", time.Since(t)) + r.logger.Debug("last report", zap.Time("when", t), zap.Duration("ellapsed", time.Since(t))) } var ( diff --git a/internal/telemetry/telemetry_test.go b/internal/telemetry/telemetry_test.go index 25080b3b7a..6e9f411af9 100644 --- a/internal/telemetry/telemetry_test.go +++ b/internal/telemetry/telemetry_test.go @@ -13,15 +13,12 @@ import ( "github.com/stretchr/testify/require" "go.flipt.io/flipt/config" "go.flipt.io/flipt/internal/info" + "go.uber.org/zap/zaptest" - "github.com/sirupsen/logrus/hooks/test" "gopkg.in/segmentio/analytics-go.v3" ) -var ( - _ analytics.Client = &mockAnalytics{} - logger, _ = test.NewNullLogger() -) +var _ analytics.Client = &mockAnalytics{} type mockAnalytics struct { msg analytics.Message @@ -54,6 +51,7 @@ func (m *mockFile) Truncate(_ int64) error { func TestNewReporter(t *testing.T) { var ( + logger = zaptest.NewLogger(t) mockAnalytics = &mockAnalytics{} reporter = NewReporter(config.Config{ @@ -68,6 +66,7 @@ func TestNewReporter(t *testing.T) { func TestReporterClose(t *testing.T) { var ( + logger = zaptest.NewLogger(t) mockAnalytics = &mockAnalytics{} reporter = &Reporter{ @@ -89,6 +88,7 @@ func TestReporterClose(t *testing.T) { func TestReport(t *testing.T) { var ( + logger = zaptest.NewLogger(t) mockAnalytics = &mockAnalytics{} reporter = &Reporter{ @@ -129,6 +129,7 @@ func TestReport(t *testing.T) { func TestReport_Existing(t *testing.T) { var ( + logger = zaptest.NewLogger(t) mockAnalytics = &mockAnalytics{} reporter = &Reporter{ @@ -170,6 +171,7 @@ func TestReport_Existing(t *testing.T) { func TestReport_Disabled(t *testing.T) { var ( + logger = zaptest.NewLogger(t) mockAnalytics = &mockAnalytics{} reporter = &Reporter{ @@ -195,6 +197,7 @@ func TestReport_Disabled(t *testing.T) { func TestReport_SpecifyStateDir(t *testing.T) { var ( + logger = zaptest.NewLogger(t) tmpDir = os.TempDir() mockAnalytics = &mockAnalytics{} diff --git a/rpc/flipt/flipt.pb.go b/rpc/flipt/flipt.pb.go index 8a3180b319..d4355fab8f 100644 --- a/rpc/flipt/flipt.pb.go +++ b/rpc/flipt/flipt.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.0 +// protoc-gen-go v1.28.1 // protoc (unknown) // source: flipt.proto diff --git a/rpc/flipt/flipt.pb.gw.go b/rpc/flipt/flipt.pb.gw.go index 717bcbdbfb..740cfc5fe5 100644 --- a/rpc/flipt/flipt.pb.gw.go +++ b/rpc/flipt/flipt.pb.gw.go @@ -1796,20 +1796,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/Evaluate", runtime.WithHTTPPathPattern("/api/v1/evaluate")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/Evaluate", runtime.WithHTTPPathPattern("/api/v1/evaluate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_Evaluate_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_Evaluate_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_Evaluate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_Evaluate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1820,20 +1821,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/BatchEvaluate", runtime.WithHTTPPathPattern("/api/v1/batch-evaluate")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/BatchEvaluate", runtime.WithHTTPPathPattern("/api/v1/batch-evaluate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_BatchEvaluate_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_BatchEvaluate_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_BatchEvaluate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_BatchEvaluate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1844,20 +1846,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/GetFlag", runtime.WithHTTPPathPattern("/api/v1/flags/{key}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/GetFlag", runtime.WithHTTPPathPattern("/api/v1/flags/{key}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_GetFlag_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_GetFlag_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_GetFlag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_GetFlag_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1868,20 +1871,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/ListFlags", runtime.WithHTTPPathPattern("/api/v1/flags")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/ListFlags", runtime.WithHTTPPathPattern("/api/v1/flags")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_ListFlags_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_ListFlags_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_ListFlags_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_ListFlags_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1892,20 +1896,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/CreateFlag", runtime.WithHTTPPathPattern("/api/v1/flags")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/CreateFlag", runtime.WithHTTPPathPattern("/api/v1/flags")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_CreateFlag_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_CreateFlag_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_CreateFlag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_CreateFlag_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1916,20 +1921,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/UpdateFlag", runtime.WithHTTPPathPattern("/api/v1/flags/{key}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/UpdateFlag", runtime.WithHTTPPathPattern("/api/v1/flags/{key}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_UpdateFlag_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_UpdateFlag_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_UpdateFlag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_UpdateFlag_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1940,20 +1946,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/DeleteFlag", runtime.WithHTTPPathPattern("/api/v1/flags/{key}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/DeleteFlag", runtime.WithHTTPPathPattern("/api/v1/flags/{key}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_DeleteFlag_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_DeleteFlag_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_DeleteFlag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_DeleteFlag_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1964,20 +1971,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/CreateVariant", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/variants")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/CreateVariant", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/variants")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_CreateVariant_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_CreateVariant_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_CreateVariant_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_CreateVariant_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1988,20 +1996,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/UpdateVariant", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/variants/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/UpdateVariant", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/variants/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_UpdateVariant_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_UpdateVariant_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_UpdateVariant_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_UpdateVariant_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2012,20 +2021,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/DeleteVariant", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/variants/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/DeleteVariant", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/variants/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_DeleteVariant_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_DeleteVariant_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_DeleteVariant_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_DeleteVariant_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2036,20 +2046,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/GetRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/GetRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_GetRule_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_GetRule_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_GetRule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_GetRule_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2060,20 +2071,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/ListRules", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/ListRules", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_ListRules_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_ListRules_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_ListRules_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_ListRules_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2084,20 +2096,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/CreateRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/CreateRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_CreateRule_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_CreateRule_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_CreateRule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_CreateRule_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2108,20 +2121,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/UpdateRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/UpdateRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_UpdateRule_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_UpdateRule_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_UpdateRule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_UpdateRule_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2132,20 +2146,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/OrderRules", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/order")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/OrderRules", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/order")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_OrderRules_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_OrderRules_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_OrderRules_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_OrderRules_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2156,20 +2171,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/DeleteRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/DeleteRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_DeleteRule_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_DeleteRule_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_DeleteRule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_DeleteRule_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2180,20 +2196,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/CreateDistribution", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{rule_id}/distributions")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/CreateDistribution", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{rule_id}/distributions")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_CreateDistribution_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_CreateDistribution_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_CreateDistribution_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_CreateDistribution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2204,20 +2221,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/UpdateDistribution", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{rule_id}/distributions/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/UpdateDistribution", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{rule_id}/distributions/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_UpdateDistribution_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_UpdateDistribution_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_UpdateDistribution_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_UpdateDistribution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2228,20 +2246,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/DeleteDistribution", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{rule_id}/distributions/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/DeleteDistribution", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{rule_id}/distributions/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_DeleteDistribution_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_DeleteDistribution_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_DeleteDistribution_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_DeleteDistribution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2252,20 +2271,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/GetSegment", runtime.WithHTTPPathPattern("/api/v1/segments/{key}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/GetSegment", runtime.WithHTTPPathPattern("/api/v1/segments/{key}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_GetSegment_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_GetSegment_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_GetSegment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_GetSegment_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2276,20 +2296,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/ListSegments", runtime.WithHTTPPathPattern("/api/v1/segments")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/ListSegments", runtime.WithHTTPPathPattern("/api/v1/segments")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_ListSegments_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_ListSegments_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_ListSegments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_ListSegments_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2300,20 +2321,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/CreateSegment", runtime.WithHTTPPathPattern("/api/v1/segments")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/CreateSegment", runtime.WithHTTPPathPattern("/api/v1/segments")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_CreateSegment_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_CreateSegment_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_CreateSegment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_CreateSegment_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2324,20 +2346,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/UpdateSegment", runtime.WithHTTPPathPattern("/api/v1/segments/{key}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/UpdateSegment", runtime.WithHTTPPathPattern("/api/v1/segments/{key}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_UpdateSegment_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_UpdateSegment_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_UpdateSegment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_UpdateSegment_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2348,20 +2371,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/DeleteSegment", runtime.WithHTTPPathPattern("/api/v1/segments/{key}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/DeleteSegment", runtime.WithHTTPPathPattern("/api/v1/segments/{key}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_DeleteSegment_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_DeleteSegment_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_DeleteSegment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_DeleteSegment_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2372,20 +2396,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/CreateConstraint", runtime.WithHTTPPathPattern("/api/v1/segments/{segment_key}/constraints")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/CreateConstraint", runtime.WithHTTPPathPattern("/api/v1/segments/{segment_key}/constraints")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_CreateConstraint_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_CreateConstraint_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_CreateConstraint_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_CreateConstraint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2396,20 +2421,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/UpdateConstraint", runtime.WithHTTPPathPattern("/api/v1/segments/{segment_key}/constraints/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/UpdateConstraint", runtime.WithHTTPPathPattern("/api/v1/segments/{segment_key}/constraints/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_UpdateConstraint_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_UpdateConstraint_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_UpdateConstraint_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_UpdateConstraint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2420,20 +2446,21 @@ func RegisterFliptHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/DeleteConstraint", runtime.WithHTTPPathPattern("/api/v1/segments/{segment_key}/constraints/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/flipt.Flipt/DeleteConstraint", runtime.WithHTTPPathPattern("/api/v1/segments/{segment_key}/constraints/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Flipt_DeleteConstraint_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Flipt_DeleteConstraint_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_DeleteConstraint_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_DeleteConstraint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2483,19 +2510,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/Evaluate", runtime.WithHTTPPathPattern("/api/v1/evaluate")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/Evaluate", runtime.WithHTTPPathPattern("/api/v1/evaluate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_Evaluate_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_Evaluate_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_Evaluate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_Evaluate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2504,19 +2532,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/BatchEvaluate", runtime.WithHTTPPathPattern("/api/v1/batch-evaluate")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/BatchEvaluate", runtime.WithHTTPPathPattern("/api/v1/batch-evaluate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_BatchEvaluate_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_BatchEvaluate_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_BatchEvaluate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_BatchEvaluate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2525,19 +2554,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/GetFlag", runtime.WithHTTPPathPattern("/api/v1/flags/{key}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/GetFlag", runtime.WithHTTPPathPattern("/api/v1/flags/{key}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_GetFlag_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_GetFlag_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_GetFlag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_GetFlag_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2546,19 +2576,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/ListFlags", runtime.WithHTTPPathPattern("/api/v1/flags")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/ListFlags", runtime.WithHTTPPathPattern("/api/v1/flags")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_ListFlags_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_ListFlags_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_ListFlags_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_ListFlags_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2567,19 +2598,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/CreateFlag", runtime.WithHTTPPathPattern("/api/v1/flags")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/CreateFlag", runtime.WithHTTPPathPattern("/api/v1/flags")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_CreateFlag_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_CreateFlag_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_CreateFlag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_CreateFlag_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2588,19 +2620,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/UpdateFlag", runtime.WithHTTPPathPattern("/api/v1/flags/{key}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/UpdateFlag", runtime.WithHTTPPathPattern("/api/v1/flags/{key}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_UpdateFlag_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_UpdateFlag_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_UpdateFlag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_UpdateFlag_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2609,19 +2642,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/DeleteFlag", runtime.WithHTTPPathPattern("/api/v1/flags/{key}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/DeleteFlag", runtime.WithHTTPPathPattern("/api/v1/flags/{key}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_DeleteFlag_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_DeleteFlag_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_DeleteFlag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_DeleteFlag_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2630,19 +2664,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/CreateVariant", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/variants")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/CreateVariant", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/variants")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_CreateVariant_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_CreateVariant_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_CreateVariant_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_CreateVariant_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2651,19 +2686,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/UpdateVariant", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/variants/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/UpdateVariant", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/variants/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_UpdateVariant_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_UpdateVariant_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_UpdateVariant_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_UpdateVariant_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2672,19 +2708,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/DeleteVariant", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/variants/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/DeleteVariant", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/variants/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_DeleteVariant_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_DeleteVariant_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_DeleteVariant_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_DeleteVariant_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2693,19 +2730,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/GetRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/GetRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_GetRule_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_GetRule_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_GetRule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_GetRule_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2714,19 +2752,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/ListRules", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/ListRules", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_ListRules_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_ListRules_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_ListRules_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_ListRules_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2735,19 +2774,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/CreateRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/CreateRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_CreateRule_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_CreateRule_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_CreateRule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_CreateRule_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2756,19 +2796,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/UpdateRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/UpdateRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_UpdateRule_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_UpdateRule_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_UpdateRule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_UpdateRule_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2777,19 +2818,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/OrderRules", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/order")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/OrderRules", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/order")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_OrderRules_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_OrderRules_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_OrderRules_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_OrderRules_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2798,19 +2840,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/DeleteRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/DeleteRule", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_DeleteRule_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_DeleteRule_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_DeleteRule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_DeleteRule_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2819,19 +2862,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/CreateDistribution", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{rule_id}/distributions")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/CreateDistribution", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{rule_id}/distributions")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_CreateDistribution_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_CreateDistribution_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_CreateDistribution_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_CreateDistribution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2840,19 +2884,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/UpdateDistribution", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{rule_id}/distributions/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/UpdateDistribution", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{rule_id}/distributions/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_UpdateDistribution_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_UpdateDistribution_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_UpdateDistribution_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_UpdateDistribution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2861,19 +2906,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/DeleteDistribution", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{rule_id}/distributions/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/DeleteDistribution", runtime.WithHTTPPathPattern("/api/v1/flags/{flag_key}/rules/{rule_id}/distributions/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_DeleteDistribution_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_DeleteDistribution_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_DeleteDistribution_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_DeleteDistribution_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2882,19 +2928,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/GetSegment", runtime.WithHTTPPathPattern("/api/v1/segments/{key}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/GetSegment", runtime.WithHTTPPathPattern("/api/v1/segments/{key}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_GetSegment_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_GetSegment_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_GetSegment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_GetSegment_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2903,19 +2950,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/ListSegments", runtime.WithHTTPPathPattern("/api/v1/segments")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/ListSegments", runtime.WithHTTPPathPattern("/api/v1/segments")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_ListSegments_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_ListSegments_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_ListSegments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_ListSegments_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2924,19 +2972,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/CreateSegment", runtime.WithHTTPPathPattern("/api/v1/segments")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/CreateSegment", runtime.WithHTTPPathPattern("/api/v1/segments")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_CreateSegment_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_CreateSegment_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_CreateSegment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_CreateSegment_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2945,19 +2994,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/UpdateSegment", runtime.WithHTTPPathPattern("/api/v1/segments/{key}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/UpdateSegment", runtime.WithHTTPPathPattern("/api/v1/segments/{key}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_UpdateSegment_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_UpdateSegment_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_UpdateSegment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_UpdateSegment_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2966,19 +3016,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/DeleteSegment", runtime.WithHTTPPathPattern("/api/v1/segments/{key}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/DeleteSegment", runtime.WithHTTPPathPattern("/api/v1/segments/{key}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_DeleteSegment_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_DeleteSegment_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_DeleteSegment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_DeleteSegment_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2987,19 +3038,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/CreateConstraint", runtime.WithHTTPPathPattern("/api/v1/segments/{segment_key}/constraints")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/CreateConstraint", runtime.WithHTTPPathPattern("/api/v1/segments/{segment_key}/constraints")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_CreateConstraint_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_CreateConstraint_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_CreateConstraint_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_CreateConstraint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3008,19 +3060,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/UpdateConstraint", runtime.WithHTTPPathPattern("/api/v1/segments/{segment_key}/constraints/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/UpdateConstraint", runtime.WithHTTPPathPattern("/api/v1/segments/{segment_key}/constraints/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_UpdateConstraint_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_UpdateConstraint_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_UpdateConstraint_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_UpdateConstraint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3029,19 +3082,20 @@ func RegisterFliptHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/DeleteConstraint", runtime.WithHTTPPathPattern("/api/v1/segments/{segment_key}/constraints/{id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/flipt.Flipt/DeleteConstraint", runtime.WithHTTPPathPattern("/api/v1/segments/{segment_key}/constraints/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Flipt_DeleteConstraint_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Flipt_DeleteConstraint_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Flipt_DeleteConstraint_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Flipt_DeleteConstraint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) diff --git a/server/evaluator.go b/server/evaluator.go index 220e6b8b36..b9e522f56c 100644 --- a/server/evaluator.go +++ b/server/evaluator.go @@ -12,27 +12,28 @@ import ( errs "go.flipt.io/flipt/errors" flipt "go.flipt.io/flipt/rpc/flipt" "go.flipt.io/flipt/storage" + "go.uber.org/zap" ) // Evaluate evaluates a request for a given flag and entity func (s *Server) Evaluate(ctx context.Context, r *flipt.EvaluationRequest) (*flipt.EvaluationResponse, error) { - s.logger.WithField("request", r).Debug("evaluate") + s.logger.Debug("evaluate", zap.Stringer("request", r)) resp, err := s.evaluate(ctx, r) if err != nil { return resp, err } - s.logger.WithField("response", resp).Debug("evaluate") + s.logger.Debug("evaluate", zap.Stringer("response", resp)) return resp, nil } // BatchEvaluate evaluates a request for multiple flags and entities func (s *Server) BatchEvaluate(ctx context.Context, r *flipt.BatchEvaluationRequest) (*flipt.BatchEvaluationResponse, error) { - s.logger.WithField("request", r).Debug("batch-evaluate") + s.logger.Debug("batch-evaluate", zap.Stringer("request", r)) resp, err := s.batchEvaluate(ctx, r) if err != nil { return nil, err } - s.logger.WithField("response", resp).Debug("batch-evaluate") + s.logger.Debug("batch-evaluate", zap.Stringer("response", resp)) return resp, nil } @@ -127,7 +128,7 @@ func (s *Server) evaluate(ctx context.Context, r *flipt.EvaluationRequest) (*fli } if match { - s.logger.Debugf("constraint: %+v matches", c) + s.logger.Debug("constraint matche", zap.Reflect("constraint", c)) // increase the matchCount constraintMatches++ @@ -142,7 +143,7 @@ func (s *Server) evaluate(ctx context.Context, r *flipt.EvaluationRequest) (*fli } } else { // no match - s.logger.Debugf("constraint: %+v does not match", c) + s.logger.Debug("constraint does not match", zap.Reflect("constraint", c)) switch rule.SegmentMatchType { case flipt.MatchType_ALL_MATCH_TYPE: @@ -170,7 +171,7 @@ func (s *Server) evaluate(ctx context.Context, r *flipt.EvaluationRequest) (*fli continue } default: - s.logger.Errorf("unknown match type: %v", rule.SegmentMatchType) + s.logger.Error("unknown match type", zap.Int32("match_type", int32(rule.SegmentMatchType))) continue } @@ -226,7 +227,7 @@ func (s *Server) evaluate(ctx context.Context, r *flipt.EvaluationRequest) (*fli } d := validDistributions[index] - s.logger.Debugf("matched distribution: %+v", d) + s.logger.Debug("matched distribution", zap.Reflect("evaluation_distribution", d)) resp.Match = true resp.Value = d.VariantKey diff --git a/server/evaluator_test.go b/server/evaluator_test.go index ca877260da..9ab66f33e4 100644 --- a/server/evaluator_test.go +++ b/server/evaluator_test.go @@ -11,6 +11,7 @@ import ( "go.flipt.io/flipt/errors" flipt "go.flipt.io/flipt/rpc/flipt" "go.flipt.io/flipt/storage" + "go.uber.org/zap/zaptest" ) var ( @@ -26,8 +27,9 @@ var ( func TestBatchEvaluate(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -67,8 +69,9 @@ func TestBatchEvaluate(t *testing.T) { func TestBatchEvaluate_FlagNotFoundExcluded(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -114,8 +117,9 @@ func TestBatchEvaluate_FlagNotFoundExcluded(t *testing.T) { func TestBatchEvaluate_FlagNotFound(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -159,8 +163,9 @@ func TestBatchEvaluate_FlagNotFound(t *testing.T) { func TestEvaluate_FlagNotFound(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -183,8 +188,9 @@ func TestEvaluate_FlagNotFound(t *testing.T) { func TestEvaluate_FlagDisabled(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -206,8 +212,9 @@ func TestEvaluate_FlagDisabled(t *testing.T) { func TestEvaluate_FlagNoRules(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -231,8 +238,9 @@ func TestEvaluate_FlagNoRules(t *testing.T) { func TestEvaluate_RulesOutOfOrder(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -292,8 +300,9 @@ func TestEvaluate_RulesOutOfOrder(t *testing.T) { // Match ALL constraints func TestEvaluate_MatchAll_NoVariants_NoDistributions(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -379,8 +388,9 @@ func TestEvaluate_MatchAll_NoVariants_NoDistributions(t *testing.T) { func TestEvaluate_MatchAll_SingleVariantDistribution(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -507,8 +517,9 @@ func TestEvaluate_MatchAll_SingleVariantDistribution(t *testing.T) { func TestEvaluate_MatchAll_RolloutDistribution(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -626,8 +637,9 @@ func TestEvaluate_MatchAll_RolloutDistribution(t *testing.T) { func TestEvaluate_MatchAll_RolloutDistribution_MultiRule(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -699,8 +711,9 @@ func TestEvaluate_MatchAll_RolloutDistribution_MultiRule(t *testing.T) { func TestEvaluate_MatchAll_NoConstraints(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -808,8 +821,9 @@ func TestEvaluate_MatchAll_NoConstraints(t *testing.T) { func TestEvaluate_MatchAny_NoVariants_NoDistributions(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -895,8 +909,9 @@ func TestEvaluate_MatchAny_NoVariants_NoDistributions(t *testing.T) { func TestEvaluate_MatchAny_SingleVariantDistribution(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -1055,8 +1070,9 @@ func TestEvaluate_MatchAny_SingleVariantDistribution(t *testing.T) { func TestEvaluate_MatchAny_RolloutDistribution(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -1174,8 +1190,9 @@ func TestEvaluate_MatchAny_RolloutDistribution(t *testing.T) { func TestEvaluate_MatchAny_RolloutDistribution_MultiRule(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -1247,8 +1264,9 @@ func TestEvaluate_MatchAny_RolloutDistribution_MultiRule(t *testing.T) { func TestEvaluate_MatchAny_NoConstraints(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -1356,8 +1374,9 @@ func TestEvaluate_MatchAny_NoConstraints(t *testing.T) { // when a 0% distribution is the first available one. func TestEvaluate_FirstRolloutRuleIsZero(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -1454,8 +1473,9 @@ func TestEvaluate_FirstRolloutRuleIsZero(t *testing.T) { // Ensure things work properly when many rollout distributions have a 0% value. func TestEvaluate_MultipleZeroRolloutDistributions(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } diff --git a/server/flag.go b/server/flag.go index 3e0f0ab1d0..e7a6e94e90 100644 --- a/server/flag.go +++ b/server/flag.go @@ -5,20 +5,21 @@ import ( flipt "go.flipt.io/flipt/rpc/flipt" "go.flipt.io/flipt/storage" + "go.uber.org/zap" empty "google.golang.org/protobuf/types/known/emptypb" ) // GetFlag gets a flag func (s *Server) GetFlag(ctx context.Context, r *flipt.GetFlagRequest) (*flipt.Flag, error) { - s.logger.WithField("request", r).Debug("get flag") + s.logger.Debug("get flag", zap.Stringer("request", r)) flag, err := s.store.GetFlag(ctx, r.Key) - s.logger.WithField("response", flag).Debug("get flag") + s.logger.Debug("get flag", zap.Stringer("response", flag)) return flag, err } // ListFlags lists all flags func (s *Server) ListFlags(ctx context.Context, r *flipt.ListFlagRequest) (*flipt.FlagList, error) { - s.logger.WithField("request", r).Debug("list flags") + s.logger.Debug("list flags", zap.Stringer("request", r)) flags, err := s.store.ListFlags(ctx, storage.WithLimit(uint64(r.Limit)), storage.WithOffset(uint64(r.Offset))) if err != nil { @@ -31,29 +32,29 @@ func (s *Server) ListFlags(ctx context.Context, r *flipt.ListFlagRequest) (*flip resp.Flags = append(resp.Flags, flags[i]) } - s.logger.WithField("response", &resp).Debug("list flags") + s.logger.Debug("list flags", zap.Stringer("response", &resp)) return &resp, nil } // CreateFlag creates a flag func (s *Server) CreateFlag(ctx context.Context, r *flipt.CreateFlagRequest) (*flipt.Flag, error) { - s.logger.WithField("request", r).Debug("create flag") + s.logger.Debug("create flag", zap.Stringer("request", r)) flag, err := s.store.CreateFlag(ctx, r) - s.logger.WithField("response", flag).Debug("create flag") + s.logger.Debug("create flag", zap.Stringer("response", flag)) return flag, err } // UpdateFlag updates an existing flag func (s *Server) UpdateFlag(ctx context.Context, r *flipt.UpdateFlagRequest) (*flipt.Flag, error) { - s.logger.WithField("request", r).Debug("update flag") + s.logger.Debug("update flag", zap.Stringer("request", r)) flag, err := s.store.UpdateFlag(ctx, r) - s.logger.WithField("response", flag).Debug("update flag") + s.logger.Debug("update flag", zap.Stringer("response", flag)) return flag, err } // DeleteFlag deletes a flag func (s *Server) DeleteFlag(ctx context.Context, r *flipt.DeleteFlagRequest) (*empty.Empty, error) { - s.logger.WithField("request", r).Debug("delete flag") + s.logger.Debug("delete flag", zap.Stringer("request", r)) if err := s.store.DeleteFlag(ctx, r); err != nil { return nil, err } @@ -62,23 +63,23 @@ func (s *Server) DeleteFlag(ctx context.Context, r *flipt.DeleteFlagRequest) (*e // CreateVariant creates a variant func (s *Server) CreateVariant(ctx context.Context, r *flipt.CreateVariantRequest) (*flipt.Variant, error) { - s.logger.WithField("request", r).Debug("create variant") + s.logger.Debug("create variant", zap.Stringer("request", r)) variant, err := s.store.CreateVariant(ctx, r) - s.logger.WithField("response", variant).Debug("create variant") + s.logger.Debug("create variant", zap.Stringer("response", variant)) return variant, err } // UpdateVariant updates an existing variant func (s *Server) UpdateVariant(ctx context.Context, r *flipt.UpdateVariantRequest) (*flipt.Variant, error) { - s.logger.WithField("request", r).Debug("update variant") + s.logger.Debug("update variant", zap.Stringer("request", r)) variant, err := s.store.UpdateVariant(ctx, r) - s.logger.WithField("response", variant).Debug("update variant") + s.logger.Debug("update variant", zap.Stringer("response", variant)) return variant, err } // DeleteVariant deletes a variant func (s *Server) DeleteVariant(ctx context.Context, r *flipt.DeleteVariantRequest) (*empty.Empty, error) { - s.logger.WithField("request", r).Debug("delete variant") + s.logger.Debug("delete variant", zap.Stringer("request", r)) if err := s.store.DeleteVariant(ctx, r); err != nil { return nil, err } diff --git a/server/flag_test.go b/server/flag_test.go index 7018325fc5..71e7b3bf0b 100644 --- a/server/flag_test.go +++ b/server/flag_test.go @@ -8,12 +8,14 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" flipt "go.flipt.io/flipt/rpc/flipt" + "go.uber.org/zap/zaptest" ) func TestGetFlag(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -35,8 +37,9 @@ func TestGetFlag(t *testing.T) { func TestListFlags(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -57,8 +60,9 @@ func TestListFlags(t *testing.T) { func TestCreateFlag(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -85,8 +89,9 @@ func TestCreateFlag(t *testing.T) { func TestUpdateFlag(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -113,8 +118,9 @@ func TestUpdateFlag(t *testing.T) { func TestDeleteFlag(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -133,8 +139,9 @@ func TestDeleteFlag(t *testing.T) { func TestCreateVariant(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -163,8 +170,9 @@ func TestCreateVariant(t *testing.T) { func TestUpdateVariant(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -194,8 +202,9 @@ func TestUpdateVariant(t *testing.T) { func TestDeleteVariant(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } diff --git a/server/middleware.go b/server/middleware.go index e62abc6d58..23785dd7aa 100644 --- a/server/middleware.go +++ b/server/middleware.go @@ -9,10 +9,10 @@ import ( "time" "github.com/gofrs/uuid" - "github.com/sirupsen/logrus" errs "go.flipt.io/flipt/errors" flipt "go.flipt.io/flipt/rpc/flipt" "go.flipt.io/flipt/server/cache" + "go.uber.org/zap" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -117,7 +117,7 @@ func EvaluationUnaryInterceptor(ctx context.Context, req interface{}, _ *grpc.Un // CacheUnaryInterceptor caches the response of a request if the request is cacheable. // TODO: we could clean this up by using generics in 1.18+ to avoid the type switch/duplicate code. -func CacheUnaryInterceptor(cache cache.Cacher, logger logrus.FieldLogger) grpc.UnaryServerInterceptor { +func CacheUnaryInterceptor(cache cache.Cacher, logger *zap.Logger) grpc.UnaryServerInterceptor { return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { if cache == nil { return handler(ctx, req) @@ -127,25 +127,25 @@ func CacheUnaryInterceptor(cache cache.Cacher, logger logrus.FieldLogger) grpc.U case *flipt.EvaluationRequest: key, err := evaluationCacheKey(r) if err != nil { - logger.WithError(err).Error("getting cache key") + logger.Error("getting cache key", zap.Error(err)) return handler(ctx, req) } cached, ok, err := cache.Get(ctx, key) if err != nil { // if error, log and without cache - logger.WithError(err).Error("getting from cache") + logger.Error("getting from cache", zap.Error(err)) return handler(ctx, req) } if ok { resp := &flipt.EvaluationResponse{} if err := proto.Unmarshal(cached, resp); err != nil { - logger.WithError(err).Error("unmarshalling from cache") + logger.Error("unmarshalling from cache", zap.Error(err)) return handler(ctx, req) } - logger.Debugf("evaluate cache hit: %+v", resp) + logger.Debug("evaluate cache hit", zap.Stringer("response", resp)) return resp, nil } @@ -158,13 +158,13 @@ func CacheUnaryInterceptor(cache cache.Cacher, logger logrus.FieldLogger) grpc.U // marshal response data, merr := proto.Marshal(resp.(*flipt.EvaluationResponse)) if merr != nil { - logger.WithError(merr).Error("marshalling for cache") + logger.Error("marshalling for cache", zap.Error(err)) return resp, err } // set in cache if cerr := cache.Set(ctx, key, data); cerr != nil { - logger.WithError(cerr).Error("setting in cache") + logger.Error("setting in cache", zap.Error(err)) } return resp, err @@ -175,7 +175,7 @@ func CacheUnaryInterceptor(cache cache.Cacher, logger logrus.FieldLogger) grpc.U cached, ok, err := cache.Get(ctx, key) if err != nil { // if error, log and continue without cache - logger.WithError(err).Error("getting from cache") + logger.Error("getting from cache", zap.Error(err)) return handler(ctx, req) } @@ -183,11 +183,11 @@ func CacheUnaryInterceptor(cache cache.Cacher, logger logrus.FieldLogger) grpc.U // if cached, return it flag := &flipt.Flag{} if err := proto.Unmarshal(cached, flag); err != nil { - logger.WithError(err).Error("unmarshalling from cache") + logger.Error("unmarshalling from cache", zap.Error(err)) return handler(ctx, req) } - logger.Debugf("flag cache hit: %+v", flag) + logger.Debug("flag cache hit", zap.Stringer("flag", flag)) return flag, nil } @@ -200,13 +200,13 @@ func CacheUnaryInterceptor(cache cache.Cacher, logger logrus.FieldLogger) grpc.U // marshal response data, merr := proto.Marshal(resp.(*flipt.Flag)) if merr != nil { - logger.WithError(merr).Error("marshalling for cache") + logger.Error("marshalling for cache", zap.Error(err)) return resp, err } // set in cache if cerr := cache.Set(ctx, key, data); cerr != nil { - logger.WithError(cerr).Error("setting in cache") + logger.Error("setting in cache", zap.Error(err)) } return resp, err @@ -216,14 +216,14 @@ func CacheUnaryInterceptor(cache cache.Cacher, logger logrus.FieldLogger) grpc.U keyer := r.(flagKeyer) // delete from cache if err := cache.Delete(ctx, flagCacheKey(keyer.GetKey())); err != nil { - logger.WithError(err).Error("deleting from cache") + logger.Error("deleting from cache", zap.Error(err)) } case *flipt.CreateVariantRequest, *flipt.UpdateVariantRequest, *flipt.DeleteVariantRequest: // need to do this assertion because the request type is not known in this block keyer := r.(variantFlagKeyger) // delete from cache if err := cache.Delete(ctx, flagCacheKey(keyer.GetFlagKey())); err != nil { - logger.WithError(err).Error("deleting from cache") + logger.Error("deleting from cache", zap.Error(err)) } } diff --git a/server/middleware_test.go b/server/middleware_test.go index 4849dc65c7..9285f7f4d1 100644 --- a/server/middleware_test.go +++ b/server/middleware_test.go @@ -10,8 +10,8 @@ import ( flipt "go.flipt.io/flipt/rpc/flipt" "go.flipt.io/flipt/server/cache/memory" "go.flipt.io/flipt/storage" + "go.uber.org/zap/zaptest" - "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" @@ -20,8 +20,6 @@ import ( "google.golang.org/grpc/status" ) -var logger, _ = test.NewNullLogger() - type validatable struct { err error } @@ -290,6 +288,7 @@ func TestCacheUnaryInterceptor_GetFlag(t *testing.T) { Backend: config.CacheMemory, }) cacheSpy = newCacheSpy(cache) + logger = zaptest.NewLogger(t) s = &Server{ logger: logger, store: store, @@ -340,6 +339,7 @@ func TestCacheUnaryInterceptor_UpdateFlag(t *testing.T) { Backend: config.CacheMemory, }) cacheSpy = newCacheSpy(cache) + logger = zaptest.NewLogger(t) s = &Server{ logger: logger, store: store, @@ -386,6 +386,7 @@ func TestCacheUnaryInterceptor_DeleteFlag(t *testing.T) { Backend: config.CacheMemory, }) cacheSpy = newCacheSpy(cache) + logger = zaptest.NewLogger(t) s = &Server{ logger: logger, store: store, @@ -424,6 +425,7 @@ func TestCacheUnaryInterceptor_CreateVariant(t *testing.T) { Backend: config.CacheMemory, }) cacheSpy = newCacheSpy(cache) + logger = zaptest.NewLogger(t) s = &Server{ logger: logger, store: store, @@ -472,6 +474,7 @@ func TestCacheUnaryInterceptor_UpdateVariant(t *testing.T) { Backend: config.CacheMemory, }) cacheSpy = newCacheSpy(cache) + logger = zaptest.NewLogger(t) s = &Server{ logger: logger, store: store, @@ -521,6 +524,7 @@ func TestCacheUnaryInterceptor_DeleteVariant(t *testing.T) { Backend: config.CacheMemory, }) cacheSpy = newCacheSpy(cache) + logger = zaptest.NewLogger(t) s = &Server{ logger: logger, store: store, @@ -559,6 +563,7 @@ func TestCacheUnaryInterceptor_Evaluate(t *testing.T) { Backend: config.CacheMemory, }) cacheSpy = newCacheSpy(cache) + logger = zaptest.NewLogger(t) s = &Server{ logger: logger, store: store, diff --git a/server/rule.go b/server/rule.go index 76ed174d56..3cecc71cfd 100644 --- a/server/rule.go +++ b/server/rule.go @@ -5,20 +5,21 @@ import ( flipt "go.flipt.io/flipt/rpc/flipt" "go.flipt.io/flipt/storage" + "go.uber.org/zap" empty "google.golang.org/protobuf/types/known/emptypb" ) // GetRule gets a rule func (s *Server) GetRule(ctx context.Context, r *flipt.GetRuleRequest) (*flipt.Rule, error) { - s.logger.WithField("request", r).Debug("get rule") + s.logger.Debug("get rule", zap.Stringer("request", r)) rule, err := s.store.GetRule(ctx, r.Id) - s.logger.WithField("response", rule).Debug("get rule") + s.logger.Debug("get rule", zap.Stringer("response", rule)) return rule, err } // ListRules lists all rules for a flag func (s *Server) ListRules(ctx context.Context, r *flipt.ListRuleRequest) (*flipt.RuleList, error) { - s.logger.WithField("request", r).Debug("list rules") + s.logger.Debug("list rules", zap.Stringer("request", r)) rules, err := s.store.ListRules(ctx, r.FlagKey, storage.WithLimit(uint64(r.Limit)), storage.WithOffset(uint64(r.Offset))) if err != nil { return nil, err @@ -30,29 +31,29 @@ func (s *Server) ListRules(ctx context.Context, r *flipt.ListRuleRequest) (*flip resp.Rules = append(resp.Rules, rules[i]) } - s.logger.WithField("response", &resp).Debug("list rules") + s.logger.Debug("list rules", zap.Stringer("response", &resp)) return &resp, nil } // CreateRule creates a rule func (s *Server) CreateRule(ctx context.Context, r *flipt.CreateRuleRequest) (*flipt.Rule, error) { - s.logger.WithField("request", r).Debug("create rule") + s.logger.Debug("create rule", zap.Stringer("request", r)) rule, err := s.store.CreateRule(ctx, r) - s.logger.WithField("response", rule).Debug("create rule") + s.logger.Debug("create rule", zap.Stringer("response", rule)) return rule, err } // UpdateRule updates an existing rule func (s *Server) UpdateRule(ctx context.Context, r *flipt.UpdateRuleRequest) (*flipt.Rule, error) { - s.logger.WithField("request", r).Debug("update rule") + s.logger.Debug("update rule", zap.Stringer("request", r)) rule, err := s.store.UpdateRule(ctx, r) - s.logger.WithField("response", rule).Debug("update rule") + s.logger.Debug("update rule", zap.Stringer("response", rule)) return rule, err } // DeleteRule deletes a rule func (s *Server) DeleteRule(ctx context.Context, r *flipt.DeleteRuleRequest) (*empty.Empty, error) { - s.logger.WithField("request", r).Debug("delete rule") + s.logger.Debug("delete rule", zap.Stringer("request", r)) if err := s.store.DeleteRule(ctx, r); err != nil { return nil, err } @@ -61,7 +62,7 @@ func (s *Server) DeleteRule(ctx context.Context, r *flipt.DeleteRuleRequest) (*e // OrderRules orders rules func (s *Server) OrderRules(ctx context.Context, r *flipt.OrderRulesRequest) (*empty.Empty, error) { - s.logger.WithField("request", r).Debug("order rules") + s.logger.Debug("order rules", zap.Stringer("request", r)) if err := s.store.OrderRules(ctx, r); err != nil { return nil, err } @@ -70,23 +71,23 @@ func (s *Server) OrderRules(ctx context.Context, r *flipt.OrderRulesRequest) (*e // CreateDistribution creates a distribution func (s *Server) CreateDistribution(ctx context.Context, r *flipt.CreateDistributionRequest) (*flipt.Distribution, error) { - s.logger.WithField("request", r).Debug("create distribution") + s.logger.Debug("create distribution", zap.Stringer("request", r)) distribution, err := s.store.CreateDistribution(ctx, r) - s.logger.WithField("response", distribution).Debug("create distribution") + s.logger.Debug("create distribution", zap.Stringer("response", distribution)) return distribution, err } // UpdateDistribution updates an existing distribution func (s *Server) UpdateDistribution(ctx context.Context, r *flipt.UpdateDistributionRequest) (*flipt.Distribution, error) { - s.logger.WithField("request", r).Debug("update distribution") + s.logger.Debug("update distribution", zap.Stringer("request", r)) distribution, err := s.store.UpdateDistribution(ctx, r) - s.logger.WithField("response", distribution).Debug("update distribution") + s.logger.Debug("update distribution", zap.Stringer("response", distribution)) return distribution, err } // DeleteDistribution deletes a distribution func (s *Server) DeleteDistribution(ctx context.Context, r *flipt.DeleteDistributionRequest) (*empty.Empty, error) { - s.logger.WithField("request", r).Debug("delete distribution") + s.logger.Debug("delete distribution", zap.Stringer("request", r)) if err := s.store.DeleteDistribution(ctx, r); err != nil { return nil, err } diff --git a/server/rule_test.go b/server/rule_test.go index 08eb1946b2..633fd69e42 100644 --- a/server/rule_test.go +++ b/server/rule_test.go @@ -8,12 +8,14 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" flipt "go.flipt.io/flipt/rpc/flipt" + "go.uber.org/zap/zaptest" ) func TestGetRule(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -32,8 +34,9 @@ func TestGetRule(t *testing.T) { func TestListRules(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -55,8 +58,9 @@ func TestListRules(t *testing.T) { func TestCreateRule(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -82,8 +86,9 @@ func TestCreateRule(t *testing.T) { func TestUpdateRule(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -108,8 +113,9 @@ func TestUpdateRule(t *testing.T) { func TestDeleteRule(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -128,8 +134,9 @@ func TestDeleteRule(t *testing.T) { func TestOrderRules(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -146,8 +153,9 @@ func TestOrderRules(t *testing.T) { func TestCreateDistribution(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -168,8 +176,9 @@ func TestCreateDistribution(t *testing.T) { func TestUpdateDistribution(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -190,8 +199,9 @@ func TestUpdateDistribution(t *testing.T) { func TestDeleteDistribution(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } diff --git a/server/segment.go b/server/segment.go index 23f172e721..b2fc93d2fe 100644 --- a/server/segment.go +++ b/server/segment.go @@ -5,20 +5,21 @@ import ( flipt "go.flipt.io/flipt/rpc/flipt" "go.flipt.io/flipt/storage" + "go.uber.org/zap" empty "google.golang.org/protobuf/types/known/emptypb" ) // GetSegment gets a segment func (s *Server) GetSegment(ctx context.Context, r *flipt.GetSegmentRequest) (*flipt.Segment, error) { - s.logger.WithField("request", r).Debug("get segment") + s.logger.Debug("get segment", zap.Stringer("request", r)) segment, err := s.store.GetSegment(ctx, r.Key) - s.logger.WithField("response", segment).Debug("get segment") + s.logger.Debug("get segment", zap.Stringer("response", segment)) return segment, err } // ListSegments lists all segments func (s *Server) ListSegments(ctx context.Context, r *flipt.ListSegmentRequest) (*flipt.SegmentList, error) { - s.logger.WithField("request", r).Debug("list segments") + s.logger.Debug("list segments", zap.Stringer("request", r)) segments, err := s.store.ListSegments(ctx, storage.WithLimit(uint64(r.Limit)), storage.WithOffset(uint64(r.Offset))) if err != nil { return nil, err @@ -30,29 +31,29 @@ func (s *Server) ListSegments(ctx context.Context, r *flipt.ListSegmentRequest) resp.Segments = append(resp.Segments, segments[i]) } - s.logger.WithField("response", &resp).Debug("list segments") + s.logger.Debug("list segments", zap.Stringer("response", &resp)) return &resp, nil } // CreateSegment creates a segment func (s *Server) CreateSegment(ctx context.Context, r *flipt.CreateSegmentRequest) (*flipt.Segment, error) { - s.logger.WithField("request", r).Debug("create segment") + s.logger.Debug("create segment", zap.Stringer("request", r)) segment, err := s.store.CreateSegment(ctx, r) - s.logger.WithField("response", segment).Debug("create segment") + s.logger.Debug("create segment", zap.Stringer("response", segment)) return segment, err } // UpdateSegment updates an existing segment func (s *Server) UpdateSegment(ctx context.Context, r *flipt.UpdateSegmentRequest) (*flipt.Segment, error) { - s.logger.WithField("request", r).Debug("update segment") + s.logger.Debug("update segment", zap.Stringer("request", r)) segment, err := s.store.UpdateSegment(ctx, r) - s.logger.WithField("response", segment).Debug("update segment") + s.logger.Debug("update segment", zap.Stringer("response", segment)) return segment, err } // DeleteSegment deletes a segment func (s *Server) DeleteSegment(ctx context.Context, r *flipt.DeleteSegmentRequest) (*empty.Empty, error) { - s.logger.WithField("request", r).Debug("delete segment") + s.logger.Debug("delete segment", zap.Stringer("request", r)) if err := s.store.DeleteSegment(ctx, r); err != nil { return nil, err } @@ -61,23 +62,23 @@ func (s *Server) DeleteSegment(ctx context.Context, r *flipt.DeleteSegmentReques // CreateConstraint creates a constraint func (s *Server) CreateConstraint(ctx context.Context, r *flipt.CreateConstraintRequest) (*flipt.Constraint, error) { - s.logger.WithField("request", r).Debug("create constraint") + s.logger.Debug("create constraint", zap.Stringer("request", r)) constraint, err := s.store.CreateConstraint(ctx, r) - s.logger.WithField("response", constraint).Debug("create constraint") + s.logger.Debug("create constraint", zap.Stringer("response", constraint)) return constraint, err } // UpdateConstraint updates an existing constraint func (s *Server) UpdateConstraint(ctx context.Context, r *flipt.UpdateConstraintRequest) (*flipt.Constraint, error) { - s.logger.WithField("request", r).Debug("update constraint") + s.logger.Debug("update constraint", zap.Stringer("request", r)) constraint, err := s.store.UpdateConstraint(ctx, r) - s.logger.WithField("response", constraint).Debug("update constraint") + s.logger.Debug("update constraint", zap.Stringer("response", constraint)) return constraint, err } // DeleteConstraint deletes a constraint func (s *Server) DeleteConstraint(ctx context.Context, r *flipt.DeleteConstraintRequest) (*empty.Empty, error) { - s.logger.WithField("request", r).Debug("delete constraint") + s.logger.Debug("delete constraint", zap.Stringer("request", r)) if err := s.store.DeleteConstraint(ctx, r); err != nil { return nil, err } diff --git a/server/segment_test.go b/server/segment_test.go index 710b43cbc3..3c142ca039 100644 --- a/server/segment_test.go +++ b/server/segment_test.go @@ -8,12 +8,14 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" flipt "go.flipt.io/flipt/rpc/flipt" + "go.uber.org/zap/zaptest" ) func TestGetSegment(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -32,8 +34,9 @@ func TestGetSegment(t *testing.T) { func TestListSegments(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -54,8 +57,9 @@ func TestListSegments(t *testing.T) { func TestCreateSegment(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -80,8 +84,9 @@ func TestCreateSegment(t *testing.T) { func TestUpdateSegment(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -106,8 +111,9 @@ func TestUpdateSegment(t *testing.T) { func TestDeleteSegment(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -126,8 +132,9 @@ func TestDeleteSegment(t *testing.T) { func TestCreateConstraint(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -157,8 +164,9 @@ func TestCreateConstraint(t *testing.T) { func TestUpdateConstraint(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } @@ -189,8 +197,9 @@ func TestUpdateConstraint(t *testing.T) { func TestDeleteConstraint(t *testing.T) { var ( - store = &storeMock{} - s = &Server{ + store = &storeMock{} + logger = zaptest.NewLogger(t) + s = &Server{ logger: logger, store: store, } diff --git a/server/server.go b/server/server.go index 8a9f873598..7e64343b27 100644 --- a/server/server.go +++ b/server/server.go @@ -3,21 +3,20 @@ package server import ( flipt "go.flipt.io/flipt/rpc/flipt" "go.flipt.io/flipt/storage" - - "github.com/sirupsen/logrus" + "go.uber.org/zap" ) var _ flipt.FliptServer = &Server{} // Server serves the Flipt backend type Server struct { - logger logrus.FieldLogger + logger *zap.Logger store storage.Store flipt.UnimplementedFliptServer } // New creates a new Server -func New(logger logrus.FieldLogger, store storage.Store) *Server { +func New(logger *zap.Logger, store storage.Store) *Server { return &Server{ logger: logger, store: store, diff --git a/storage/sql/migrator.go b/storage/sql/migrator.go index 65bccfe6f2..a1737c703c 100644 --- a/storage/sql/migrator.go +++ b/storage/sql/migrator.go @@ -10,8 +10,8 @@ import ( "github.com/golang-migrate/migrate/database/mysql" "github.com/golang-migrate/migrate/database/postgres" "github.com/golang-migrate/migrate/database/sqlite3" - "github.com/sirupsen/logrus" "go.flipt.io/flipt/config" + "go.uber.org/zap" ) var expectedVersions = map[Driver]uint{ @@ -23,12 +23,12 @@ var expectedVersions = map[Driver]uint{ // Migrator is responsible for migrating the database schema type Migrator struct { driver Driver - logger *logrus.Entry + logger *zap.Logger migrator *migrate.Migrate } // NewMigrator creates a new Migrator -func NewMigrator(cfg config.Config, logger *logrus.Logger) (*Migrator, error) { +func NewMigrator(cfg config.Config, logger *zap.Logger) (*Migrator, error) { sql, driver, err := open(cfg, true) if err != nil { return nil, fmt.Errorf("opening db: %w", err) @@ -58,7 +58,7 @@ func NewMigrator(cfg config.Config, logger *logrus.Logger) (*Migrator, error) { return &Migrator{ migrator: mm, - logger: logrus.NewEntry(logger), + logger: logger, driver: driver, }, nil } @@ -99,7 +99,8 @@ func (m *Migrator) Run(force bool) error { return errors.New("migrations pending, please backup your database and run `flipt migrate`") } - m.logger.Debugf("current migration version: %d, expected version: %d", currentVersion, expectedVersion) + m.logger.Debug("current migration", zap.Uint("current_version", currentVersion), zap.Uint("expected_version", expectedVersion)) + m.logger.Debug("running migrations...") if err := m.migrator.Up(); err != nil && !errors.Is(err, migrate.ErrNoChange) { diff --git a/storage/sql/migrator_test.go b/storage/sql/migrator_test.go index 90f77974cd..c1a0529eca 100644 --- a/storage/sql/migrator_test.go +++ b/storage/sql/migrator_test.go @@ -9,10 +9,9 @@ import ( stubDB "github.com/golang-migrate/migrate/database/stub" "github.com/golang-migrate/migrate/source" stubSource "github.com/golang-migrate/migrate/source/stub" - "github.com/sirupsen/logrus" - "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" ) func TestMigratorRun(t *testing.T) { @@ -34,8 +33,7 @@ func TestMigratorRun(t *testing.T) { require.NoError(t, err) var ( - l, _ = test.NewNullLogger() - logger = logrus.NewEntry(l) + logger = zaptest.NewLogger(t) migrator = Migrator{ migrator: m, logger: logger, @@ -70,8 +68,7 @@ func TestMigratorRun_NoChange(t *testing.T) { require.NoError(t, err) var ( - l, _ = test.NewNullLogger() - logger = logrus.NewEntry(l) + logger = zaptest.NewLogger(t) migrator = Migrator{ migrator: m, logger: logger, From 118626fc3665fe186e42fe915b3812a313093aca Mon Sep 17 00:00:00 2001 From: George MacRorie Date: Fri, 9 Sep 2022 11:41:14 +0100 Subject: [PATCH 2/3] chore: ignore error returned from logger sync --- cmd/flipt/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/flipt/main.go b/cmd/flipt/main.go index 2bc80cce75..ea133aab7e 100644 --- a/cmd/flipt/main.go +++ b/cmd/flipt/main.go @@ -107,7 +107,7 @@ func main() { ) defer func() { - logger().Sync() + _ = logger().Sync() }() var ( From 266b72705d0c09334bbb46901a623ecde1c46566 Mon Sep 17 00:00:00 2001 From: George MacRorie Date: Sun, 11 Sep 2022 08:22:18 +0100 Subject: [PATCH 3/3] chore(logging): change timestamp encoding and remove caller information --- cmd/flipt/export.go | 2 +- cmd/flipt/import.go | 2 +- cmd/flipt/main.go | 23 +++++++++++++++++++---- internal/telemetry/telemetry.go | 2 +- server/evaluator.go | 2 +- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/cmd/flipt/export.go b/cmd/flipt/export.go index 15170b79dd..692fee4419 100644 --- a/cmd/flipt/export.go +++ b/cmd/flipt/export.go @@ -56,7 +56,7 @@ func runExport(ctx context.Context, logger *zap.Logger) error { // export to file if exportFilename != "" { - logger.Debug("exporting flags", zap.String("destination_path", exportFilename)) + logger.Debug("exporting", zap.String("destination_path", exportFilename)) out, err = os.Create(exportFilename) if err != nil { diff --git a/cmd/flipt/import.go b/cmd/flipt/import.go index 842f836b10..010bfb7bc0 100644 --- a/cmd/flipt/import.go +++ b/cmd/flipt/import.go @@ -65,7 +65,7 @@ func runImport(ctx context.Context, logger *zap.Logger, args []string) error { f := filepath.Clean(importFilename) - logger.Debug("importing flags", zap.String("source_path", f)) + logger.Debug("importing", zap.String("source_path", f)) in, err = os.Open(f) if err != nil { diff --git a/cmd/flipt/main.go b/cmd/flipt/main.go index ea133aab7e..d32ee02a53 100644 --- a/cmd/flipt/main.go +++ b/cmd/flipt/main.go @@ -47,6 +47,7 @@ import ( "go.flipt.io/flipt/swagger" "go.flipt.io/flipt/ui" "go.uber.org/zap" + "go.uber.org/zap/zapcore" "golang.org/x/sync/errgroup" "google.golang.org/grpc" "google.golang.org/grpc/credentials" @@ -92,10 +93,24 @@ func main() { var ( once sync.Once loggerConfig = zap.Config{ - Level: zap.NewAtomicLevelAt(zap.InfoLevel), - Development: true, - Encoding: "console", - EncoderConfig: zap.NewDevelopmentEncoderConfig(), + Level: zap.NewAtomicLevelAt(zap.InfoLevel), + Development: true, + Encoding: "console", + EncoderConfig: zapcore.EncoderConfig{ + // Keys can be anything except the empty string. + TimeKey: "T", + LevelKey: "L", + NameKey: "N", + CallerKey: zapcore.OmitKey, + FunctionKey: zapcore.OmitKey, + MessageKey: "M", + StacktraceKey: "S", + LineEnding: zapcore.DefaultLineEnding, + EncodeLevel: zapcore.CapitalColorLevelEncoder, + EncodeTime: zapcore.RFC3339TimeEncoder, + EncodeDuration: zapcore.StringDurationEncoder, + EncodeCaller: zapcore.ShortCallerEncoder, + }, OutputPaths: []string{"stdout"}, ErrorOutputPaths: []string{"stderr"}, } diff --git a/internal/telemetry/telemetry.go b/internal/telemetry/telemetry.go index bf11259f4b..b1e60efaeb 100644 --- a/internal/telemetry/telemetry.go +++ b/internal/telemetry/telemetry.go @@ -92,7 +92,7 @@ func (r *Reporter) report(_ context.Context, info info.Flipt, f file) error { r.logger.Debug("initialized new state") } else { t, _ := time.Parse(time.RFC3339, s.LastTimestamp) - r.logger.Debug("last report", zap.Time("when", t), zap.Duration("ellapsed", time.Since(t))) + r.logger.Debug("last report", zap.Time("when", t), zap.Duration("elapsed", time.Since(t))) } var ( diff --git a/server/evaluator.go b/server/evaluator.go index b9e522f56c..8057c1b192 100644 --- a/server/evaluator.go +++ b/server/evaluator.go @@ -128,7 +128,7 @@ func (s *Server) evaluate(ctx context.Context, r *flipt.EvaluationRequest) (*fli } if match { - s.logger.Debug("constraint matche", zap.Reflect("constraint", c)) + s.logger.Debug("constraint matches", zap.Reflect("constraint", c)) // increase the matchCount constraintMatches++