diff options
author | James Fargher <jfargher@gitlab.com> | 2022-03-22 00:47:46 +0300 |
---|---|---|
committer | James Fargher <jfargher@gitlab.com> | 2022-03-31 01:27:17 +0300 |
commit | ea4c61be1a7c38d013eaa5821624e1bdfd801547 (patch) | |
tree | 6453aaebca903f1571e835e319851191b5031b44 | |
parent | 084bc3049d8b6d308995cfb4c66efe0e310a6c4d (diff) |
gitaly-git2go: Log top-level encoding errors
Adds some more debug information to each log message, as by default
there is only a PID.
-rw-r--r-- | cmd/gitaly-git2go-v14/main.go | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/cmd/gitaly-git2go-v14/main.go b/cmd/gitaly-git2go-v14/main.go index c7110b32b..809c9f657 100644 --- a/cmd/gitaly-git2go-v14/main.go +++ b/cmd/gitaly-git2go-v14/main.go @@ -12,6 +12,7 @@ import ( "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus" git "github.com/libgit2/git2go/v33" + "github.com/sirupsen/logrus" "gitlab.com/gitlab-org/gitaly/v14/internal/git2go" glog "gitlab.com/gitlab-org/gitaly/v14/internal/log" ) @@ -33,13 +34,13 @@ var subcommands = map[string]subcmd{ "submodule": &submoduleSubcommand{}, } -func fatalf(encoder *gob.Encoder, format string, args ...interface{}) { - // Once logging has been implemented these encoding errors can be logged. - // Until then these will be ignored as we can no longer use stderr. - // https://gitlab.com/gitlab-org/gitaly/-/issues/3229 - _ = encoder.Encode(git2go.Result{ +func fatalf(logger logrus.FieldLogger, encoder *gob.Encoder, format string, args ...interface{}) { + err := encoder.Encode(git2go.Result{ Err: git2go.SerializableError(fmt.Errorf(format, args...)), }) + if err != nil { + logger.WithError(err).Error("encode to gob failed") + } // An exit code of 1 would indicate an error over stderr. Since our errors // are encoded over gob, we need to exit cleanly os.Exit(0) @@ -66,32 +67,33 @@ func main() { _ = flags.Parse(os.Args[1:]) configureLogging(logFormat, logLevel) + logger := glog.Default().WithField("command.name", git2go.BinaryName) if flags.NArg() < 1 { - fatalf(encoder, "missing subcommand") + fatalf(logger, encoder, "missing subcommand") } subcmd, ok := subcommands[flags.Arg(0)] if !ok { - fatalf(encoder, "unknown subcommand: %q", flags.Arg(0)) + fatalf(logger, encoder, "unknown subcommand: %q", flags.Arg(0)) } subcmdFlags := subcmd.Flags() if err := subcmdFlags.Parse(flags.Args()[1:]); err != nil { - fatalf(encoder, "parsing flags of %q: %s", subcmdFlags.Name(), err) + fatalf(logger, encoder, "parsing flags of %q: %s", subcmdFlags.Name(), err) } if subcmdFlags.NArg() != 0 { - fatalf(encoder, "%s: trailing arguments", subcmdFlags.Name()) + fatalf(logger, encoder, "%s: trailing arguments", subcmdFlags.Name()) } if err := git.EnableFsyncGitDir(true); err != nil { - fatalf(encoder, "enable fsync: %s", err) + fatalf(logger, encoder, "enable fsync: %s", err) } - ctx := ctxlogrus.ToContext(context.Background(), glog.Default()) + ctx := ctxlogrus.ToContext(context.Background(), logger.WithField("subcommand", subcmd)) if err := subcmd.Run(ctx, decoder, encoder); err != nil { - fatalf(encoder, "%s: %s", subcmdFlags.Name(), err) + fatalf(logger, encoder, "%s: %s", subcmdFlags.Name(), err) } } |