Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Fargher <jfargher@gitlab.com>2023-09-18 01:33:27 +0300
committerJames Fargher <jfargher@gitlab.com>2023-09-18 01:33:27 +0300
commitc7099d645d162a8760f7f84e9f3e0c45229240c1 (patch)
tree26dee75855c637593415c14ab3cfd066751d9501
parent971fb9142d495e10b571d4a16d75c6baba0c615e (diff)
parent214d0ff9641c85d71de337f1f2f58d5c6c2dce7b (diff)
Merge branch 'pks-log-wrap-logrus' into 'master'
log: Wrap the logrus logger See merge request https://gitlab.com/gitlab-org/gitaly/-/merge_requests/6364 Merged-by: James Fargher <jfargher@gitlab.com> Approved-by: James Fargher <jfargher@gitlab.com> Reviewed-by: Patrick Steinhardt <psteinhardt@gitlab.com> Reviewed-by: James Liu <jliu@gitlab.com> Co-authored-by: Patrick Steinhardt <psteinhardt@gitlab.com>
-rw-r--r--STYLE.md6
-rw-r--r--cmd/gitaly-backup/create.go4
-rw-r--r--cmd/gitaly-backup/main.go3
-rw-r--r--cmd/gitaly-backup/restore.go4
-rw-r--r--cmd/gitaly-hooks/hooks.go2
-rw-r--r--cmd/gitaly-lfs-smudge/main.go5
-rw-r--r--cmd/gitaly-lfs-smudge/smudge.go8
-rw-r--r--cmd/gitaly-ssh/main.go5
-rw-r--r--cmd/gitaly-wrapper/main.go5
-rw-r--r--internal/backup/pipeline.go7
-rw-r--r--internal/blackbox/blackbox.go6
-rw-r--r--internal/bootstrap/bootstrap.go8
-rw-r--r--internal/bootstrap/starter/starter.go4
-rw-r--r--internal/cache/diskcache.go11
-rw-r--r--internal/cache/keyer.go4
-rw-r--r--internal/cgroups/cgroups.go6
-rw-r--r--internal/cgroups/manager.go7
-rw-r--r--internal/cgroups/manager_linux.go10
-rw-r--r--internal/cgroups/mock_linux_test.go10
-rw-r--r--internal/cgroups/v1_linux.go8
-rw-r--r--internal/cgroups/v2_linux.go8
-rw-r--r--internal/cli/gitaly/serve.go9
-rw-r--r--internal/cli/gitaly/subcmd_check.go3
-rw-r--r--internal/cli/praefect/serve.go8
-rw-r--r--internal/cli/praefect/subcmd_remove_repository.go6
-rw-r--r--internal/cli/praefect/subcmd_track_repository.go4
-rw-r--r--internal/command/command.go5
-rw-r--r--internal/command/command_test.go14
-rw-r--r--internal/dontpanic/retry.go12
-rw-r--r--internal/git/bitmap.go4
-rw-r--r--internal/git/command_factory.go8
-rw-r--r--internal/git/dirs.go4
-rw-r--r--internal/git/housekeeping/clean_stale_data.go6
-rw-r--r--internal/git/housekeeping/manager.go8
-rw-r--r--internal/git/housekeeping/optimize_repository.go6
-rw-r--r--internal/git/housekeeping/optimize_repository_test.go12
-rw-r--r--internal/git/localrepo/refs.go4
-rw-r--r--internal/git/objectpool/disconnect.go4
-rw-r--r--internal/git/objectpool/fetch.go6
-rw-r--r--internal/git/protocol.go4
-rw-r--r--internal/git/ssh.go4
-rw-r--r--internal/git/stats/repository_info.go6
-rw-r--r--internal/git/stats/repository_info_test.go6
-rw-r--r--internal/gitaly/config/prometheus/config.go4
-rw-r--r--internal/gitaly/config/sentry/sentry.go4
-rw-r--r--internal/gitaly/hook/postreceive.go6
-rw-r--r--internal/gitaly/hook/prereceive.go6
-rw-r--r--internal/gitaly/hook/update.go6
-rw-r--r--internal/gitaly/hook/updateref/update_with_hooks.go4
-rw-r--r--internal/gitaly/linguist/linguist.go4
-rw-r--r--internal/gitaly/maintenance/daily.go6
-rw-r--r--internal/gitaly/maintenance/daily_test.go4
-rw-r--r--internal/gitaly/maintenance/optimize.go20
-rw-r--r--internal/gitaly/maintenance/optimize_test.go4
-rw-r--r--internal/gitaly/repoutil/custom_hooks.go6
-rw-r--r--internal/gitaly/repoutil/lock.go4
-rw-r--r--internal/gitaly/repoutil/remove.go4
-rw-r--r--internal/gitaly/server/server_factory.go6
-rw-r--r--internal/gitaly/service/cleanup/cleaner.go10
-rw-r--r--internal/gitaly/service/commit/commits_helper.go10
-rw-r--r--internal/gitaly/service/commit/count_commits.go6
-rw-r--r--internal/gitaly/service/commit/get_tree_entries.go6
-rw-r--r--internal/gitaly/service/commit/isancestor.go6
-rw-r--r--internal/gitaly/service/commit/list_files.go6
-rw-r--r--internal/gitaly/service/conflicts/resolve_conflicts.go5
-rw-r--r--internal/gitaly/service/diff/commit_delta.go6
-rw-r--r--internal/gitaly/service/diff/commit_diff.go6
-rw-r--r--internal/gitaly/service/objectpool/get.go4
-rw-r--r--internal/gitaly/service/objectpool/testhelper_test.go4
-rw-r--r--internal/gitaly/service/operations/apply_patch.go4
-rw-r--r--internal/gitaly/service/operations/commit_files.go6
-rw-r--r--internal/gitaly/service/operations/merge_to_ref.go4
-rw-r--r--internal/gitaly/service/operations/submodules.go5
-rw-r--r--internal/gitaly/service/repository/apply_gitattributes.go4
-rw-r--r--internal/gitaly/service/repository/archive.go3
-rw-r--r--internal/gitaly/service/repository/fetch.go4
-rw-r--r--internal/gitaly/service/repository/optimize_test.go4
-rw-r--r--internal/gitaly/service/repository/rename.go6
-rw-r--r--internal/gitaly/service/repository/replicate.go4
-rw-r--r--internal/gitaly/service/repository/snapshot.go4
-rw-r--r--internal/gitaly/service/server/disk_stats.go4
-rw-r--r--internal/gitaly/service/server/info.go4
-rw-r--r--internal/gitaly/service/smarthttp/cache.go6
-rw-r--r--internal/gitaly/service/smarthttp/inforefs.go6
-rw-r--r--internal/gitaly/service/smarthttp/receive_pack.go6
-rw-r--r--internal/gitaly/service/smarthttp/upload_pack.go6
-rw-r--r--internal/gitaly/service/ssh/receive_pack.go8
-rw-r--r--internal/gitaly/service/ssh/upload_pack.go12
-rw-r--r--internal/gitaly/storage/counter/counter.go6
-rw-r--r--internal/gitaly/storage/storagemgr/partition_manager.go6
-rw-r--r--internal/gitaly/storage/storagemgr/transaction_manager.go6
-rw-r--r--internal/gitaly/transaction/manager.go6
-rw-r--r--internal/gitlab/client/gitlabnet.go5
-rw-r--r--internal/gitlab/http_client.go6
-rw-r--r--internal/grpc/backchannel/backchannel.go4
-rw-r--r--internal/grpc/backchannel/backchannel_example_test.go3
-rw-r--r--internal/grpc/backchannel/client.go8
-rw-r--r--internal/grpc/backchannel/server.go6
-rw-r--r--internal/grpc/dnsresolver/builder.go4
-rw-r--r--internal/grpc/dnsresolver/resolver.go4
-rw-r--r--internal/grpc/middleware/cache/cache.go8
-rw-r--r--internal/grpc/middleware/customfieldshandler/customfields_handler_test.go4
-rw-r--r--internal/grpc/middleware/panichandler/panic_handler.go7
-rw-r--r--internal/grpc/sidechannel/conn.go4
-rw-r--r--internal/grpc/sidechannel/proxy.go8
-rw-r--r--internal/grpc/sidechannel/sidechannel.go4
-rw-r--r--internal/helper/perm/fix_permissions.go4
-rw-r--r--internal/limiter/adaptive_calculator.go6
-rw-r--r--internal/log/configure.go135
-rw-r--r--internal/log/configure_test.go (renamed from internal/log/logger_test.go)0
-rw-r--r--internal/log/customfields.go2
-rw-r--r--internal/log/formatter.go31
-rw-r--r--internal/log/logger.go164
-rw-r--r--internal/log/middleware.go11
-rw-r--r--internal/praefect/coordinator.go29
-rw-r--r--internal/praefect/datastore/collector.go14
-rw-r--r--internal/praefect/datastore/listener.go6
-rw-r--r--internal/praefect/datastore/storage_provider.go6
-rw-r--r--internal/praefect/datastore/storage_provider_test.go14
-rw-r--r--internal/praefect/dependencies.go4
-rw-r--r--internal/praefect/middleware/methodtype.go8
-rw-r--r--internal/praefect/node.go4
-rw-r--r--internal/praefect/nodes/health_manager.go5
-rw-r--r--internal/praefect/nodes/local_elector.go6
-rw-r--r--internal/praefect/nodes/manager.go9
-rw-r--r--internal/praefect/nodes/per_repository.go4
-rw-r--r--internal/praefect/nodes/per_repository_test.go4
-rw-r--r--internal/praefect/nodes/sql_elector.go7
-rw-r--r--internal/praefect/reconciler/reconciler.go6
-rw-r--r--internal/praefect/remove_repository.go4
-rw-r--r--internal/praefect/replicator.go11
-rw-r--r--internal/praefect/replicator_test.go3
-rw-r--r--internal/praefect/repocleaner/action_log.go5
-rw-r--r--internal/praefect/repocleaner/repository.go7
-rw-r--r--internal/praefect/router.go4
-rw-r--r--internal/praefect/server.go4
-rw-r--r--internal/praefect/service/server/info.go4
-rw-r--r--internal/praefect/testserver.go3
-rw-r--r--internal/praefect/transactions/manager.go6
-rw-r--r--internal/praefect/verifier.go5
-rw-r--r--internal/streamcache/cache.go8
-rw-r--r--internal/streamcache/filestore.go4
-rw-r--r--internal/tempdir/clean.go7
-rw-r--r--internal/tempdir/tempdir.go4
-rw-r--r--internal/testhelper/configure.go3
-rw-r--r--internal/testhelper/testhelper.go9
-rw-r--r--internal/testhelper/testserver/gitaly.go11
147 files changed, 625 insertions, 586 deletions
diff --git a/STYLE.md b/STYLE.md
index bbd390894..d12142c8b 100644
--- a/STYLE.md
+++ b/STYLE.md
@@ -201,9 +201,9 @@ event.
When logging an error, use the `WithError(err)` method.
-### Use the `logrus.FieldLogger` interface
+### Use the `log.Logger` interface
-In case you want to pass around the logger, use the `logrus.FieldLogger`
+In case you want to pass around the logger, use the `log.Logger`
interface instead of either `*logrus.Entry` or `*logrus.Logger`.
### Use snake case for fields
@@ -239,7 +239,7 @@ package transaction
type Manager struct {}
func (m Manager) StartTransaction(ctx context.Context) {
- ctxlogrus.Extract(ctx).WithFields(logrus.Fields{
+ log.FromContext(ctx).WithFields(logrus.Fields{
"component": "transaction.Manager",
}).Debug("StartTransaction")
}
diff --git a/cmd/gitaly-backup/create.go b/cmd/gitaly-backup/create.go
index f2fb543af..6a62940b6 100644
--- a/cmd/gitaly-backup/create.go
+++ b/cmd/gitaly-backup/create.go
@@ -9,10 +9,10 @@ import (
"runtime"
"time"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/backup"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/client"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -43,7 +43,7 @@ func (cmd *createSubcommand) Flags(fs *flag.FlagSet) {
fs.BoolVar(&cmd.serverSide, "server-side", false, "use server-side backups. Note: The feature is not ready for production use.")
}
-func (cmd *createSubcommand) Run(ctx context.Context, logger logrus.FieldLogger, stdin io.Reader, stdout io.Writer) error {
+func (cmd *createSubcommand) Run(ctx context.Context, logger log.Logger, stdin io.Reader, stdout io.Writer) error {
pool := client.NewPool(client.WithDialOptions(client.UnaryInterceptor(), client.StreamInterceptor()))
defer func() {
_ = pool.Close()
diff --git a/cmd/gitaly-backup/main.go b/cmd/gitaly-backup/main.go
index a37121a3e..f663be660 100644
--- a/cmd/gitaly-backup/main.go
+++ b/cmd/gitaly-backup/main.go
@@ -7,14 +7,13 @@ import (
"io"
"os"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
type subcmd interface {
Flags(*flag.FlagSet)
- Run(ctx context.Context, logger logrus.FieldLogger, stdin io.Reader, stdout io.Writer) error
+ Run(ctx context.Context, logger log.Logger, stdin io.Reader, stdout io.Writer) error
}
var subcommands = map[string]subcmd{
diff --git a/cmd/gitaly-backup/restore.go b/cmd/gitaly-backup/restore.go
index d2d0670fc..91cd398da 100644
--- a/cmd/gitaly-backup/restore.go
+++ b/cmd/gitaly-backup/restore.go
@@ -10,10 +10,10 @@ import (
"runtime"
"strings"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/backup"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/client"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -48,7 +48,7 @@ func (cmd *restoreSubcommand) Flags(fs *flag.FlagSet) {
fs.BoolVar(&cmd.serverSide, "server-side", false, "use server-side backups. Note: The feature is not ready for production use.")
}
-func (cmd *restoreSubcommand) Run(ctx context.Context, logger logrus.FieldLogger, stdin io.Reader, stdout io.Writer) error {
+func (cmd *restoreSubcommand) Run(ctx context.Context, logger log.Logger, stdin io.Reader, stdout io.Writer) error {
pool := client.NewPool(client.WithDialOptions(client.UnaryInterceptor(), client.StreamInterceptor()))
defer func() {
_ = pool.Close()
diff --git a/cmd/gitaly-hooks/hooks.go b/cmd/gitaly-hooks/hooks.go
index d8bd931fb..b900260a5 100644
--- a/cmd/gitaly-hooks/hooks.go
+++ b/cmd/gitaly-hooks/hooks.go
@@ -104,7 +104,7 @@ func main() {
// configureLogger configures the logger used by gitaly-hooks. As both stdout and stderr might be interpreted by Git, we
// need to log to a file instead. If the `log.GitalyLogDirEnvKey` environment variable is set, we thus log to a file
// contained in the directory pointed to by it, otherwise we discard any log messages.
-func configureLogger(ctx context.Context) (logrus.FieldLogger, error) {
+func configureLogger(ctx context.Context) (log.Logger, error) {
writer := io.Discard
if logDir := os.Getenv(log.GitalyLogDirEnvKey); logDir != "" {
diff --git a/cmd/gitaly-lfs-smudge/main.go b/cmd/gitaly-lfs-smudge/main.go
index ac62e6c31..846d94a68 100644
--- a/cmd/gitaly-lfs-smudge/main.go
+++ b/cmd/gitaly-lfs-smudge/main.go
@@ -7,7 +7,6 @@ import (
"os"
"path/filepath"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/smudge"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/env"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
@@ -59,7 +58,7 @@ func (nopCloser) Close() error {
return nil
}
-func configureLogging(ctx context.Context, environment []string) (logrus.FieldLogger, io.Closer, error) {
+func configureLogging(ctx context.Context, environment []string) (log.Logger, io.Closer, error) {
var closer io.Closer = nopCloser{}
writer := io.Discard
@@ -82,7 +81,7 @@ func configureLogging(ctx context.Context, environment []string) (logrus.FieldLo
return logger.WithField(correlation.FieldName, correlation.ExtractFromContext(ctx)), closer, nil
}
-func run(ctx context.Context, environment []string, out io.Writer, in io.Reader, logger logrus.FieldLogger) error {
+func run(ctx context.Context, environment []string, out io.Writer, in io.Reader, logger log.Logger) error {
cfg, err := smudge.ConfigFromEnvironment(environment)
if err != nil {
return fmt.Errorf("loading configuration: %w", err)
diff --git a/cmd/gitaly-lfs-smudge/smudge.go b/cmd/gitaly-lfs-smudge/smudge.go
index 17d8a9f16..3b5481acd 100644
--- a/cmd/gitaly-lfs-smudge/smudge.go
+++ b/cmd/gitaly-lfs-smudge/smudge.go
@@ -10,14 +10,14 @@ import (
"net/url"
"github.com/git-lfs/git-lfs/v3/lfs"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/pktline"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/smudge"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config/prometheus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitlab"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
-func filter(ctx context.Context, cfg smudge.Config, to io.Writer, from io.Reader, logger logrus.FieldLogger) (returnedErr error) {
+func filter(ctx context.Context, cfg smudge.Config, to io.Writer, from io.Reader, logger log.Logger) (returnedErr error) {
client, err := gitlab.NewHTTPClient(logger, cfg.Gitlab, cfg.TLS, prometheus.Config{})
if err != nil {
return fmt.Errorf("creating HTTP client: %w", err)
@@ -63,7 +63,7 @@ const (
processStateSmudgeContent
)
-func process(ctx context.Context, cfg smudge.Config, to io.Writer, from io.Reader, logger logrus.FieldLogger) error {
+func process(ctx context.Context, cfg smudge.Config, to io.Writer, from io.Reader, logger log.Logger) error {
client, err := gitlab.NewHTTPClient(logger, cfg.Gitlab, cfg.TLS, prometheus.Config{})
if err != nil {
return fmt.Errorf("creating HTTP client: %w", err)
@@ -287,7 +287,7 @@ func process(ctx context.Context, cfg smudge.Config, to io.Writer, from io.Reade
return nil
}
-func smudgeOneObject(ctx context.Context, cfg smudge.Config, gitlabClient *gitlab.HTTPClient, from io.Reader, logger logrus.FieldLogger) (io.ReadCloser, error) {
+func smudgeOneObject(ctx context.Context, cfg smudge.Config, gitlabClient *gitlab.HTTPClient, from io.Reader, logger log.Logger) (io.ReadCloser, error) {
ptr, contents, err := lfs.DecodeFrom(from)
if err != nil {
// This isn't a valid LFS pointer. Just copy the existing pointer data.
diff --git a/cmd/gitaly-ssh/main.go b/cmd/gitaly-ssh/main.go
index 5b1bf262f..b34e99f32 100644
--- a/cmd/gitaly-ssh/main.go
+++ b/cmd/gitaly-ssh/main.go
@@ -7,7 +7,6 @@ import (
"strconv"
"strings"
- "github.com/sirupsen/logrus"
gitalyauth "gitlab.com/gitlab-org/gitaly/v16/auth"
"gitlab.com/gitlab-org/gitaly/v16/internal/featureflag"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/client"
@@ -87,7 +86,7 @@ func main() {
os.Exit(code)
}
-func (cmd gitalySSHCommand) run(logger logrus.FieldLogger) (int, error) {
+func (cmd gitalySSHCommand) run(logger log.Logger) (int, error) {
// Configure distributed tracing
closer := tracing.Initialize(tracing.WithServiceName("gitaly-ssh"))
defer closer.Close()
@@ -132,7 +131,7 @@ func (cmd gitalySSHCommand) run(logger logrus.FieldLogger) (int, error) {
return int(code), nil
}
-func getConnection(ctx context.Context, url string, registry *sidechannel.Registry, logger logrus.FieldLogger) (*grpc.ClientConn, error) {
+func getConnection(ctx context.Context, url string, registry *sidechannel.Registry, logger log.Logger) (*grpc.ClientConn, error) {
if url == "" {
return nil, fmt.Errorf("gitaly address can not be empty")
}
diff --git a/cmd/gitaly-wrapper/main.go b/cmd/gitaly-wrapper/main.go
index b83af7bb9..c1ab2bc3b 100644
--- a/cmd/gitaly-wrapper/main.go
+++ b/cmd/gitaly-wrapper/main.go
@@ -11,7 +11,6 @@ import (
"syscall"
"time"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/bootstrap"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/env"
"gitlab.com/gitlab-org/gitaly/v16/internal/log"
@@ -107,7 +106,7 @@ func findProcess(pidFilePath string) (*os.Process, error) {
return nil, nil
}
-func spawnProcess(logger logrus.FieldLogger, bin string, args []string) (*os.Process, error) {
+func spawnProcess(logger log.Logger, bin string, args []string) (*os.Process, error) {
cmd := exec.Command(bin, args...)
cmd.Env = append(os.Environ(), fmt.Sprintf("%s=true", bootstrap.EnvUpgradesEnabled))
@@ -133,7 +132,7 @@ func isRuntimeSig(s os.Signal) bool {
return s == unix.SIGURG
}
-func forwardSignals(gitaly *os.Process, log logrus.FieldLogger) {
+func forwardSignals(gitaly *os.Process, log log.Logger) {
sigs := make(chan os.Signal, 1)
go func() {
for sig := range sigs {
diff --git a/internal/backup/pipeline.go b/internal/backup/pipeline.go
index c8585553f..e42553969 100644
--- a/internal/backup/pipeline.go
+++ b/internal/backup/pipeline.go
@@ -9,6 +9,7 @@ import (
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -155,14 +156,14 @@ func (e PipelineErrors) Error() string {
// LoggingPipeline outputs logging for each command executed
type LoggingPipeline struct {
- log logrus.FieldLogger
+ log log.Logger
mu sync.Mutex
errs PipelineErrors
}
// NewLoggingPipeline creates a new logging pipeline
-func NewLoggingPipeline(log logrus.FieldLogger) *LoggingPipeline {
+func NewLoggingPipeline(log log.Logger) *LoggingPipeline {
return &LoggingPipeline{
log: log,
}
@@ -201,7 +202,7 @@ func (p *LoggingPipeline) Done() error {
return nil
}
-func (p *LoggingPipeline) cmdLogger(cmd Command) logrus.FieldLogger {
+func (p *LoggingPipeline) cmdLogger(cmd Command) log.Logger {
return p.log.WithFields(logrus.Fields{
"command": cmd.Name(),
"storage_name": cmd.Repository().StorageName,
diff --git a/internal/blackbox/blackbox.go b/internal/blackbox/blackbox.go
index 35b63b2af..6321f75d2 100644
--- a/internal/blackbox/blackbox.go
+++ b/internal/blackbox/blackbox.go
@@ -9,9 +9,9 @@ import (
"time"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/stats"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/labkit/monitoring"
)
@@ -75,7 +75,7 @@ func (m httpPostMetrics) Collect(metrics chan<- prometheus.Metric) {
// Blackbox encapsulates all details required to run the blackbox prober.
type Blackbox struct {
cfg Config
- logger logrus.FieldLogger
+ logger log.Logger
fetchReferenceDiscoveryMetrics httpReferenceDiscoveryMetrics
httpPostMetrics httpPostMetrics
@@ -83,7 +83,7 @@ type Blackbox struct {
}
// New creates a new Blackbox structure.
-func New(cfg Config, logger logrus.FieldLogger) Blackbox {
+func New(cfg Config, logger log.Logger) Blackbox {
return Blackbox{
cfg: cfg,
logger: logger,
diff --git a/internal/bootstrap/bootstrap.go b/internal/bootstrap/bootstrap.go
index 7c05511c0..d2d2976ec 100644
--- a/internal/bootstrap/bootstrap.go
+++ b/internal/bootstrap/bootstrap.go
@@ -9,9 +9,9 @@ import (
"github.com/cloudflare/tableflip"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/env"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"golang.org/x/sys/unix"
)
@@ -35,7 +35,7 @@ type Listener interface {
// Bootstrap handles graceful upgrades
type Bootstrap struct {
- logger logrus.FieldLogger
+ logger log.Logger
upgrader upgrader
listenFunc ListenFunc
errChan chan error
@@ -77,7 +77,7 @@ type upgrader interface {
// freezes during a graceful shutdown
//
// gitaly-wrapper is supposed to set EnvUpgradesEnabled in order to enable graceful upgrades
-func New(logger logrus.FieldLogger, totalConn *prometheus.CounterVec) (*Bootstrap, error) {
+func New(logger log.Logger, totalConn *prometheus.CounterVec) (*Bootstrap, error) {
pidFile := os.Getenv(EnvPidFile)
upgradesEnabled, _ := env.GetBool(EnvUpgradesEnabled, false)
@@ -107,7 +107,7 @@ func New(logger logrus.FieldLogger, totalConn *prometheus.CounterVec) (*Bootstra
return _new(logger, upg, upg.Fds.Listen, upgradesEnabled, totalConn)
}
-func _new(logger logrus.FieldLogger, upg upgrader, listenFunc ListenFunc, upgradesEnabled bool, totalConn *prometheus.CounterVec) (*Bootstrap, error) {
+func _new(logger log.Logger, upg upgrader, listenFunc ListenFunc, upgradesEnabled bool, totalConn *prometheus.CounterVec) (*Bootstrap, error) {
if upgradesEnabled {
go func() {
sig := make(chan os.Signal, 1)
diff --git a/internal/bootstrap/starter/starter.go b/internal/bootstrap/starter/starter.go
index ead1a998a..643413833 100644
--- a/internal/bootstrap/starter/starter.go
+++ b/internal/bootstrap/starter/starter.go
@@ -8,8 +8,8 @@ import (
"strings"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/bootstrap"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
const (
@@ -110,7 +110,7 @@ type Server interface {
}
// New creates a new bootstrap.Starter from a config and a GracefulStoppableServer
-func New(cfg Config, server Server, logger logrus.FieldLogger) bootstrap.Starter {
+func New(cfg Config, server Server, logger log.Logger) bootstrap.Starter {
return func(listenWithHandover bootstrap.ListenFunc, errCh chan<- error, connTotal *prometheus.CounterVec) error {
listen := listenWithHandover
if !cfg.HandoverOnUpgrade {
diff --git a/internal/cache/diskcache.go b/internal/cache/diskcache.go
index 84e75f49f..a1b2da590 100644
--- a/internal/cache/diskcache.go
+++ b/internal/cache/diskcache.go
@@ -8,13 +8,12 @@ import (
"path/filepath"
"sync"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/dontpanic"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/safe"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
"google.golang.org/protobuf/proto"
@@ -76,7 +75,7 @@ func withDisabledWalker() Option {
// DiskCache stores and retrieves byte streams for repository related RPCs
type DiskCache struct {
- logger logrus.FieldLogger
+ logger log.Logger
locator storage.Locator
storages []config.Storage
keyer leaseKeyer
@@ -100,7 +99,7 @@ type DiskCache struct {
}
// New will create a new DiskCache with the given Keyer.
-func New(cfg config.Cfg, locator storage.Locator, logger logrus.FieldLogger, opts ...Option) *DiskCache {
+func New(cfg config.Cfg, locator storage.Locator, logger log.Logger, opts ...Option) *DiskCache {
var cacheConfig cacheConfig
for _, opt := range opts {
opt(&cacheConfig)
@@ -243,7 +242,7 @@ func (c *DiskCache) GetStream(ctx context.Context, repo *gitalypb.Repository, re
return nil, err
}
- ctxlogrus.Extract(ctx).
+ log.FromContext(ctx).
WithField("stream_path", respPath).
Info("getting stream")
@@ -282,7 +281,7 @@ func (c *DiskCache) PutStream(ctx context.Context, repo *gitalypb.Repository, re
return err
}
- ctxlogrus.Extract(ctx).
+ log.FromContext(ctx).
WithField("stream_path", reqPath).
Info("putting stream")
diff --git a/internal/cache/keyer.go b/internal/cache/keyer.go
index db9620b23..13588ebb9 100644
--- a/internal/cache/keyer.go
+++ b/internal/cache/keyer.go
@@ -14,10 +14,10 @@ import (
"time"
"github.com/google/uuid"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/featureflag"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/safe"
"gitlab.com/gitlab-org/gitaly/v16/internal/version"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -92,7 +92,7 @@ func (keyer leaseKeyer) updateLatest(ctx context.Context, repo *gitalypb.Reposit
return "", err
}
- ctxlogrus.Extract(ctx).
+ log.FromContext(ctx).
WithField("diskcache", nextGenID).
Infof("diskcache state change")
diff --git a/internal/cgroups/cgroups.go b/internal/cgroups/cgroups.go
index fe2015069..2d77c732f 100644
--- a/internal/cgroups/cgroups.go
+++ b/internal/cgroups/cgroups.go
@@ -4,8 +4,8 @@ import (
"os/exec"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config/cgroups"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
type addCommandCfg struct {
@@ -78,7 +78,7 @@ type Manager interface {
}
// NewManager returns the appropriate Cgroups manager
-func NewManager(cfg cgroups.Config, logger logrus.FieldLogger, pid int) Manager {
+func NewManager(cfg cgroups.Config, logger log.Logger, pid int) Manager {
if cfg.Repositories.Count > 0 {
if manager := newCgroupManager(cfg, logger, pid); manager != nil {
return manager
@@ -89,6 +89,6 @@ func NewManager(cfg cgroups.Config, logger logrus.FieldLogger, pid int) Manager
}
// PruneOldCgroups prunes old cgroups for both the memory and cpu subsystems
-func PruneOldCgroups(cfg cgroups.Config, logger logrus.FieldLogger) {
+func PruneOldCgroups(cfg cgroups.Config, logger log.Logger) {
pruneOldCgroups(cfg, logger)
}
diff --git a/internal/cgroups/manager.go b/internal/cgroups/manager.go
index 5f6a685c0..64af69bf5 100644
--- a/internal/cgroups/manager.go
+++ b/internal/cgroups/manager.go
@@ -3,13 +3,14 @@
package cgroups
import (
- "github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
+
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config/cgroups"
)
-func newCgroupManager(cgroups.Config, logrus.FieldLogger, int) Manager {
+func newCgroupManager(cgroups.Config, log.Logger, int) Manager {
return &NoopManager{}
}
// No-op. The actual pruning operations are implemented in Cgroup V1/V2 managers.
-func pruneOldCgroups(cgroups.Config, logrus.FieldLogger) {}
+func pruneOldCgroups(cgroups.Config, log.Logger) {}
diff --git a/internal/cgroups/manager_linux.go b/internal/cgroups/manager_linux.go
index 13e742db2..12dc01988 100644
--- a/internal/cgroups/manager_linux.go
+++ b/internal/cgroups/manager_linux.go
@@ -11,8 +11,8 @@ import (
cgrps "github.com/containerd/cgroups/v3"
"github.com/opencontainers/runtime-spec/specs-go"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
cgroupscfg "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config/cgroups"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// cfs_period_us hardcoded to be 100ms.
@@ -38,11 +38,11 @@ type CGroupManager struct {
handler cgroupHandler
}
-func newCgroupManager(cfg cgroupscfg.Config, logger logrus.FieldLogger, pid int) *CGroupManager {
+func newCgroupManager(cfg cgroupscfg.Config, logger log.Logger, pid int) *CGroupManager {
return newCgroupManagerWithMode(cfg, logger, pid, cgrps.Mode())
}
-func newCgroupManagerWithMode(cfg cgroupscfg.Config, logger logrus.FieldLogger, pid int, mode cgrps.CGMode) *CGroupManager {
+func newCgroupManagerWithMode(cfg cgroupscfg.Config, logger log.Logger, pid int, mode cgrps.CGMode) *CGroupManager {
var handler cgroupHandler
switch mode {
case cgrps.Legacy, cgrps.Hybrid:
@@ -173,11 +173,11 @@ func (cgm *CGroupManager) configRepositoryResources() *specs.LinuxResources {
return &reposResources
}
-func pruneOldCgroups(cfg cgroupscfg.Config, logger logrus.FieldLogger) {
+func pruneOldCgroups(cfg cgroupscfg.Config, logger log.Logger) {
pruneOldCgroupsWithMode(cfg, logger, cgrps.Mode())
}
-func pruneOldCgroupsWithMode(cfg cgroupscfg.Config, logger logrus.FieldLogger, mode cgrps.CGMode) {
+func pruneOldCgroupsWithMode(cfg cgroupscfg.Config, logger log.Logger, mode cgrps.CGMode) {
if cfg.HierarchyRoot == "" {
return
}
diff --git a/internal/cgroups/mock_linux_test.go b/internal/cgroups/mock_linux_test.go
index 1bf57e4a2..2662f75d8 100644
--- a/internal/cgroups/mock_linux_test.go
+++ b/internal/cgroups/mock_linux_test.go
@@ -28,10 +28,10 @@ import (
cgrps "github.com/containerd/cgroups/v3"
"github.com/containerd/cgroups/v3/cgroup1"
- "github.com/sirupsen/logrus"
"github.com/stretchr/testify/require"
cgroupscfg "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config/cgroups"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
)
@@ -141,11 +141,11 @@ func (m *mockCgroup) setupMockCgroupFiles(
}
}
-func (m *mockCgroup) newCgroupManager(cfg cgroupscfg.Config, logger logrus.FieldLogger, pid int) *CGroupManager {
+func (m *mockCgroup) newCgroupManager(cfg cgroupscfg.Config, logger log.Logger, pid int) *CGroupManager {
return newCgroupManagerWithMode(cfg, logger, pid, cgrps.Legacy)
}
-func (m *mockCgroup) pruneOldCgroups(cfg cgroupscfg.Config, logger logrus.FieldLogger) {
+func (m *mockCgroup) pruneOldCgroups(cfg cgroupscfg.Config, logger log.Logger) {
pruneOldCgroupsWithMode(cfg, logger, cgrps.Legacy)
}
@@ -212,10 +212,10 @@ func (m *mockCgroupV2) setupMockCgroupFiles(
}
}
-func (m *mockCgroupV2) newCgroupManager(cfg cgroupscfg.Config, logger logrus.FieldLogger, pid int) *CGroupManager {
+func (m *mockCgroupV2) newCgroupManager(cfg cgroupscfg.Config, logger log.Logger, pid int) *CGroupManager {
return newCgroupManagerWithMode(cfg, logger, pid, cgrps.Unified)
}
-func (m *mockCgroupV2) pruneOldCgroups(cfg cgroupscfg.Config, logger logrus.FieldLogger) {
+func (m *mockCgroupV2) pruneOldCgroups(cfg cgroupscfg.Config, logger log.Logger) {
pruneOldCgroupsWithMode(cfg, logger, cgrps.Unified)
}
diff --git a/internal/cgroups/v1_linux.go b/internal/cgroups/v1_linux.go
index b533b5ad1..8de8d283f 100644
--- a/internal/cgroups/v1_linux.go
+++ b/internal/cgroups/v1_linux.go
@@ -11,21 +11,21 @@ import (
"github.com/containerd/cgroups/v3/cgroup1"
specs "github.com/opencontainers/runtime-spec/specs-go"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
cgroupscfg "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config/cgroups"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
type cgroupV1Handler struct {
cfg cgroupscfg.Config
- logger logrus.FieldLogger
+ logger log.Logger
hierarchy func() ([]cgroup1.Subsystem, error)
*cgroupsMetrics
pid int
}
-func newV1Handler(cfg cgroupscfg.Config, logger logrus.FieldLogger, pid int) *cgroupV1Handler {
+func newV1Handler(cfg cgroupscfg.Config, logger log.Logger, pid int) *cgroupV1Handler {
return &cgroupV1Handler{
cfg: cfg,
logger: logger,
@@ -219,7 +219,7 @@ func defaultSubsystems(root string) ([]cgroup1.Subsystem, error) {
return subsystems, nil
}
-func pruneOldCgroupsV1(cfg cgroupscfg.Config, logger logrus.FieldLogger) {
+func pruneOldCgroupsV1(cfg cgroupscfg.Config, logger log.Logger) {
if err := config.PruneOldGitalyProcessDirectories(
logger,
filepath.Join(cfg.Mountpoint, "memory",
diff --git a/internal/cgroups/v2_linux.go b/internal/cgroups/v2_linux.go
index 8990358d2..f8970dbf7 100644
--- a/internal/cgroups/v2_linux.go
+++ b/internal/cgroups/v2_linux.go
@@ -13,20 +13,20 @@ import (
"github.com/containerd/cgroups/v3/cgroup2"
"github.com/opencontainers/runtime-spec/specs-go"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
cgroupscfg "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config/cgroups"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
type cgroupV2Handler struct {
cfg cgroupscfg.Config
- logger logrus.FieldLogger
+ logger log.Logger
*cgroupsMetrics
pid int
}
-func newV2Handler(cfg cgroupscfg.Config, logger logrus.FieldLogger, pid int) *cgroupV2Handler {
+func newV2Handler(cfg cgroupscfg.Config, logger log.Logger, pid int) *cgroupV2Handler {
return &cgroupV2Handler{
cfg: cfg,
logger: logger,
@@ -190,7 +190,7 @@ func (cvh *cgroupV2Handler) stats() (Stats, error) {
return stats, nil
}
-func pruneOldCgroupsV2(cfg cgroupscfg.Config, logger logrus.FieldLogger) {
+func pruneOldCgroupsV2(cfg cgroupscfg.Config, logger log.Logger) {
if err := config.PruneOldGitalyProcessDirectories(
logger,
filepath.Join(cfg.Mountpoint, cfg.HierarchyRoot),
diff --git a/internal/cli/gitaly/serve.go b/internal/cli/gitaly/serve.go
index 1fa46a3d5..1d09d1d93 100644
--- a/internal/cli/gitaly/serve.go
+++ b/internal/cli/gitaly/serve.go
@@ -10,7 +10,6 @@ import (
"github.com/go-enry/go-license-detector/v4/licensedb"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
- "github.com/sirupsen/logrus"
"github.com/urfave/cli/v2"
"gitlab.com/gitlab-org/gitaly/v16"
"gitlab.com/gitlab-org/gitaly/v16/internal/backup"
@@ -109,7 +108,7 @@ func serveAction(ctx *cli.Context) error {
return nil
}
-func configure(configPath string) (config.Cfg, logrus.FieldLogger, error) {
+func configure(configPath string) (config.Cfg, log.Logger, error) {
cfg, err := loadConfig(configPath)
if err != nil {
return config.Cfg{}, nil, fmt.Errorf("load config: config_path %q: %w", configPath, err)
@@ -135,7 +134,7 @@ func configure(configPath string) (config.Cfg, logrus.FieldLogger, error) {
return cfg, logger, nil
}
-func preloadLicenseDatabase(logger logrus.FieldLogger) {
+func preloadLicenseDatabase(logger log.Logger) {
// the first call to `licensedb.Detect` could be too long
// https://github.com/go-enry/go-license-detector/issues/13
// this is why we're calling it here to preload license database
@@ -145,7 +144,7 @@ func preloadLicenseDatabase(logger logrus.FieldLogger) {
logger.Info("License database preloaded")
}
-func run(cfg config.Cfg, logger logrus.FieldLogger) error {
+func run(cfg config.Cfg, logger log.Logger) error {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
@@ -422,7 +421,7 @@ func run(cfg config.Cfg, logger logrus.FieldLogger) error {
shutdownWorkers, err := maintenance.StartWorkers(
ctx,
logger,
- maintenance.DailyOptimizationWorker(cfg, maintenance.OptimizerFunc(func(ctx context.Context, logger logrus.FieldLogger, repo storage.Repository) error {
+ maintenance.DailyOptimizationWorker(cfg, maintenance.OptimizerFunc(func(ctx context.Context, logger log.Logger, repo storage.Repository) error {
return housekeepingManager.OptimizeRepository(ctx, logger, localrepo.New(locator, gitCmdFactory, catfileCache, repo))
})),
)
diff --git a/internal/cli/gitaly/subcmd_check.go b/internal/cli/gitaly/subcmd_check.go
index 3ff312851..36385cc2b 100644
--- a/internal/cli/gitaly/subcmd_check.go
+++ b/internal/cli/gitaly/subcmd_check.go
@@ -4,7 +4,6 @@ import (
"context"
"fmt"
- "github.com/sirupsen/logrus"
"github.com/urfave/cli/v2"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
@@ -62,7 +61,7 @@ func checkAction(ctx *cli.Context) error {
return nil
}
-func checkAPI(cfg config.Cfg, logger logrus.FieldLogger) (*gitlab.CheckInfo, error) {
+func checkAPI(cfg config.Cfg, logger log.Logger) (*gitlab.CheckInfo, error) {
gitlabAPI, err := gitlab.NewHTTPClient(logger, cfg.Gitlab, cfg.TLS, prometheus.Config{})
if err != nil {
return nil, err
diff --git a/internal/cli/praefect/serve.go b/internal/cli/praefect/serve.go
index 86d7a03ce..ad9200035 100644
--- a/internal/cli/praefect/serve.go
+++ b/internal/cli/praefect/serve.go
@@ -95,7 +95,7 @@ func serveAction(ctx *cli.Context) error {
return nil
}
-func run(conf config.Config, appName string, logger logrus.FieldLogger) error {
+func run(conf config.Config, appName string, logger log.Logger) error {
configure(logger, appName, conf)
starterConfigs, err := getStarterConfigs(conf)
@@ -141,7 +141,7 @@ func readConfig(path string) (config.Config, error) {
return conf, nil
}
-func configure(logger logrus.FieldLogger, appName string, conf config.Config) {
+func configure(logger log.Logger, appName string, conf config.Config) {
tracing.Initialize(tracing.WithServiceName(appName))
if conf.PrometheusListenAddr != "" {
@@ -154,7 +154,7 @@ func configure(logger logrus.FieldLogger, appName string, conf config.Config) {
func server(
cfgs []starter.Config,
conf config.Config,
- logger logrus.FieldLogger,
+ logger log.Logger,
b bootstrap.Listener,
promreg prometheus.Registerer,
dbPromRegistry interface {
@@ -572,7 +572,7 @@ func getStarterConfigs(conf config.Config) ([]starter.Config, error) {
return cfgs, nil
}
-func initDatabase(ctx context.Context, logger logrus.FieldLogger, conf config.Config) (*sql.DB, func(), error) {
+func initDatabase(ctx context.Context, logger log.Logger, conf config.Config) (*sql.DB, func(), error) {
openDBCtx, cancel := context.WithTimeout(ctx, 30*time.Second)
defer cancel()
db, err := glsql.OpenDB(openDBCtx, conf.DB)
diff --git a/internal/cli/praefect/subcmd_remove_repository.go b/internal/cli/praefect/subcmd_remove_repository.go
index 032676dbd..dbbe176ab 100644
--- a/internal/cli/praefect/subcmd_remove_repository.go
+++ b/internal/cli/praefect/subcmd_remove_repository.go
@@ -116,7 +116,7 @@ func (w *writer) Write(b []byte) (int, error) {
}
type removeRepository struct {
- logger logrus.FieldLogger
+ logger log.Logger
virtualStorage string
relativePath string
apply bool
@@ -125,7 +125,7 @@ type removeRepository struct {
w io.Writer
}
-func (cmd *removeRepository) exec(ctx context.Context, logger logrus.FieldLogger, db *sql.DB, cfg config.Config) error {
+func (cmd *removeRepository) exec(ctx context.Context, logger log.Logger, db *sql.DB, cfg config.Config) error {
// Remove repository explicitly from all storages and clean up database info.
// This prevents creation of the new replication events.
logger.WithFields(logrus.Fields{
@@ -208,7 +208,7 @@ func (cmd *removeRepository) removeRepository(ctx context.Context, repo *gitalyp
return true, nil
}
-func (cmd *removeRepository) removeReplicationEvents(ctx context.Context, logger logrus.FieldLogger, db *sql.DB, ticker helper.Ticker) error {
+func (cmd *removeRepository) removeReplicationEvents(ctx context.Context, logger log.Logger, db *sql.DB, ticker helper.Ticker) error {
// Wait for the completion of the repository replication jobs.
// As some of them could be a repository creation jobs we need to remove those newly created
// repositories after replication finished.
diff --git a/internal/cli/praefect/subcmd_track_repository.go b/internal/cli/praefect/subcmd_track_repository.go
index fbd34c7db..5e140733d 100644
--- a/internal/cli/praefect/subcmd_track_repository.go
+++ b/internal/cli/praefect/subcmd_track_repository.go
@@ -132,7 +132,7 @@ func (req *trackRepositoryRequest) execRequest(ctx context.Context,
db *sql.DB,
cfg config.Config,
w io.Writer,
- logger logrus.FieldLogger,
+ logger log.Logger,
replicateImmediately bool,
) error {
logger.WithFields(logrus.Fields{
@@ -329,7 +329,7 @@ func repositoryExists(ctx context.Context, repo *gitalypb.Repository, addr, toke
return res.GetExists(), nil
}
-func (req *trackRepositoryRequest) authoritativeRepositoryExists(ctx context.Context, cfg config.Config, logger logrus.FieldLogger, w io.Writer, nodeName string) (bool, error) {
+func (req *trackRepositoryRequest) authoritativeRepositoryExists(ctx context.Context, cfg config.Config, logger log.Logger, w io.Writer, nodeName string) (bool, error) {
for _, vs := range cfg.VirtualStorages {
if vs.Name != req.VirtualStorage {
continue
diff --git a/internal/command/command.go b/internal/command/command.go
index 53bf24298..edcaa3c8b 100644
--- a/internal/command/command.go
+++ b/internal/command/command.go
@@ -13,7 +13,6 @@ import (
"syscall"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
grpcmwtags "github.com/grpc-ecosystem/go-grpc-middleware/tags"
"github.com/opentracing/opentracing-go"
"github.com/prometheus/client_golang/prometheus"
@@ -208,7 +207,7 @@ func New(ctx context.Context, nameAndArgs []string, opts ...Option) (*Command, e
logPid := -1
defer func() {
- ctxlogrus.Extract(ctx).WithFields(logrus.Fields{
+ log.FromContext(ctx).WithFields(logrus.Fields{
"pid": logPid,
"path": nameAndArgs[0],
"args": nameAndArgs[1:],
@@ -470,7 +469,7 @@ func (c *Command) logProcessComplete() {
fields["command.cgroup_path"] = c.cgroupPath
}
- entry := ctxlogrus.Extract(ctx).WithFields(fields)
+ entry := log.FromContext(ctx).WithFields(fields)
rusage, ok := cmd.ProcessState.SysUsage().(*syscall.Rusage)
if ok {
diff --git a/internal/command/command_test.go b/internal/command/command_test.go
index ce26ed88b..081e5ab1a 100644
--- a/internal/command/command_test.go
+++ b/internal/command/command_test.go
@@ -16,13 +16,13 @@ import (
"testing"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
"github.com/sirupsen/logrus/hooks/test"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v16/internal/cgroups"
"gitlab.com/gitlab-org/gitaly/v16/internal/featureflag"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -352,7 +352,7 @@ func TestCommand_stderrLogging(t *testing.T) {
logger, hook := test.NewNullLogger()
ctx := testhelper.Context(t)
- ctx = ctxlogrus.ToContext(ctx, logrus.NewEntry(logger))
+ ctx = log.FromLogrusEntry(logrus.NewEntry(logger)).ToContext(ctx)
var stdout bytes.Buffer
cmd, err := New(ctx, []string{binaryPath}, WithStdout(&stdout))
@@ -376,7 +376,7 @@ func TestCommand_stderrLoggingTruncation(t *testing.T) {
logger, hook := test.NewNullLogger()
ctx := testhelper.Context(t)
- ctx = ctxlogrus.ToContext(ctx, logrus.NewEntry(logger))
+ ctx = log.FromLogrusEntry(logrus.NewEntry(logger)).ToContext(ctx)
var stdout bytes.Buffer
cmd, err := New(ctx, []string{binaryPath}, WithStdout(&stdout))
@@ -397,7 +397,7 @@ func TestCommand_stderrLoggingWithNulBytes(t *testing.T) {
logger, hook := test.NewNullLogger()
ctx := testhelper.Context(t)
- ctx = ctxlogrus.ToContext(ctx, logrus.NewEntry(logger))
+ ctx = log.FromLogrusEntry(logrus.NewEntry(logger)).ToContext(ctx)
var stdout bytes.Buffer
cmd, err := New(ctx, []string{binaryPath}, WithStdout(&stdout))
@@ -420,7 +420,7 @@ func TestCommand_stderrLoggingLongLine(t *testing.T) {
logger, hook := test.NewNullLogger()
ctx := testhelper.Context(t)
- ctx = ctxlogrus.ToContext(ctx, logrus.NewEntry(logger))
+ ctx = log.FromLogrusEntry(logrus.NewEntry(logger)).ToContext(ctx)
var stdout bytes.Buffer
cmd, err := New(ctx, []string{binaryPath}, WithStdout(&stdout))
@@ -467,7 +467,7 @@ func TestCommand_stderrLoggingMaxBytes(t *testing.T) {
logger, hook := test.NewNullLogger()
ctx := testhelper.Context(t)
- ctx = ctxlogrus.ToContext(ctx, logrus.NewEntry(logger))
+ ctx = log.FromLogrusEntry(logrus.NewEntry(logger)).ToContext(ctx)
var stdout bytes.Buffer
cmd, err := New(ctx, []string{binaryPath}, WithStdout(&stdout))
@@ -493,7 +493,7 @@ func TestCommand_logMessage(t *testing.T) {
logger, hook := test.NewNullLogger()
logger.SetLevel(logrus.DebugLevel)
- ctx := ctxlogrus.ToContext(testhelper.Context(t), logrus.NewEntry(logger))
+ ctx := log.FromLogrusEntry(logrus.NewEntry(logger)).ToContext(testhelper.Context(t))
cmd, err := New(ctx, []string{"echo", "hello world"},
WithCgroup(mockCgroupManager{
diff --git a/internal/dontpanic/retry.go b/internal/dontpanic/retry.go
index f61f59bb0..0bf438c1c 100644
--- a/internal/dontpanic/retry.go
+++ b/internal/dontpanic/retry.go
@@ -12,21 +12,21 @@ import (
"time"
sentry "github.com/getsentry/sentry-go"
- "github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// Try will wrap the provided function with a panic recovery. If a panic occurs,
// the recovered panic will be sent to Sentry and logged as an error.
// Returns `true` if no panic and `false` otherwise.
-func Try(logger logrus.FieldLogger, fn func()) bool { return catchAndLog(logger, fn) }
+func Try(logger log.Logger, fn func()) bool { return catchAndLog(logger, fn) }
// Go will run the provided function in a goroutine and recover from any
// panics. If a panic occurs, the recovered panic will be sent to Sentry
// and logged as an error. Go is best used in fire-and-forget goroutines where
// observability is lost.
-func Go(logger logrus.FieldLogger, fn func()) { go Try(logger, fn) }
+func Go(logger log.Logger, fn func()) { go Try(logger, fn) }
-func catchAndLog(logger logrus.FieldLogger, fn func()) bool {
+func catchAndLog(logger log.Logger, fn func()) bool {
var id *sentry.EventID
var recovered interface{}
normal := true
@@ -57,7 +57,7 @@ func catchAndLog(logger logrus.FieldLogger, fn func()) bool {
// Forever encapsulates logic to run a function forever.
type Forever struct {
- logger logrus.FieldLogger
+ logger log.Logger
backoff time.Duration
cancelOnce sync.Once
@@ -67,7 +67,7 @@ type Forever struct {
// NewForever creates a new Forever struct. The given duration controls how long retry of a
// function should be delayed if the function were to thrown an error.
-func NewForever(logger logrus.FieldLogger, backoff time.Duration) *Forever {
+func NewForever(logger log.Logger, backoff time.Duration) *Forever {
return &Forever{
logger: logger,
backoff: backoff,
diff --git a/internal/git/bitmap.go b/internal/git/bitmap.go
index d467422dd..2a78a1bde 100644
--- a/internal/git/bitmap.go
+++ b/internal/git/bitmap.go
@@ -6,12 +6,12 @@ import (
"strconv"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
grpcmwtags "github.com/grpc-ecosystem/go-grpc-middleware/tags"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/packfile"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
var badBitmapRequestCount = promauto.NewCounterVec(
@@ -26,7 +26,7 @@ var badBitmapRequestCount = promauto.NewCounterVec(
// repoPath, and if it finds any, it logs a warning. This is to help us
// investigate https://gitlab.com/gitlab-org/gitaly/issues/1728.
func WarnIfTooManyBitmaps(ctx context.Context, locator storage.Locator, storageName, repoPath string) {
- logEntry := ctxlogrus.Extract(ctx)
+ logEntry := log.FromContext(ctx)
storageRoot, err := locator.GetStorageByName(storageName)
if err != nil {
diff --git a/internal/git/command_factory.go b/internal/git/command_factory.go
index c7e6b1036..78ace470d 100644
--- a/internal/git/command_factory.go
+++ b/internal/git/command_factory.go
@@ -125,7 +125,7 @@ type ExecCommandFactory struct {
locator storage.Locator
cfg config.Cfg
execEnvs []ExecutionEnvironment
- logger logrus.FieldLogger
+ logger log.Logger
cgroupsManager cgroups.Manager
trace2Hooks []trace2.Hook
invalidCommandsMetric *prometheus.CounterVec
@@ -137,7 +137,7 @@ type ExecCommandFactory struct {
// NewExecCommandFactory returns a new instance of initialized ExecCommandFactory. The returned
// cleanup function shall be executed when the server shuts down.
-func NewExecCommandFactory(cfg config.Cfg, logger logrus.FieldLogger, opts ...ExecCommandFactoryOption) (_ *ExecCommandFactory, _ func(), returnedErr error) {
+func NewExecCommandFactory(cfg config.Cfg, logger log.Logger, opts ...ExecCommandFactoryOption) (_ *ExecCommandFactory, _ func(), returnedErr error) {
var factoryCfg execCommandFactoryConfig
for _, opt := range opts {
opt(&factoryCfg)
@@ -196,7 +196,7 @@ func NewExecCommandFactory(cfg config.Cfg, logger logrus.FieldLogger, opts ...Ex
// setupGitExecutionEnvironments assembles a Git execution environment that can be used to run Git
// commands. It warns if no path was specified in the configuration.
-func setupGitExecutionEnvironments(cfg config.Cfg, factoryCfg execCommandFactoryConfig, logger logrus.FieldLogger) ([]ExecutionEnvironment, func(), error) {
+func setupGitExecutionEnvironments(cfg config.Cfg, factoryCfg execCommandFactoryConfig, logger log.Logger) ([]ExecutionEnvironment, func(), error) {
sharedEnvironment := []string{
// Force English locale for consistency on output messages and to help us debug in
// case we get bug reports from customers whose system-locale would be different.
@@ -309,7 +309,7 @@ func (cf *ExecCommandFactory) HooksPath(ctx context.Context) string {
return cf.hookDirs.tempHooksPath
}
-func setupHookDirectories(cfg config.Cfg, factoryCfg execCommandFactoryConfig, logger logrus.FieldLogger) (hookDirectories, func(), error) {
+func setupHookDirectories(cfg config.Cfg, factoryCfg execCommandFactoryConfig, logger log.Logger) (hookDirectories, func(), error) {
if factoryCfg.hooksPath != "" {
return hookDirectories{
tempHooksPath: factoryCfg.hooksPath,
diff --git a/internal/git/dirs.go b/internal/git/dirs.go
index 16444ed5a..e50f9f999 100644
--- a/internal/git/dirs.go
+++ b/internal/git/dirs.go
@@ -7,7 +7,7 @@ import (
"path/filepath"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// alternateOutsideStorageError is returned when an alternates file contains an
@@ -43,7 +43,7 @@ func AlternateObjectDirectories(ctx context.Context, storageRoot, repoPath strin
}
func altObjectDirs(ctx context.Context, storagePrefix, objDir string, depth int) ([]string, error) {
- logEntry := ctxlogrus.Extract(ctx)
+ logEntry := log.FromContext(ctx)
const maxAlternatesDepth = 5 // Taken from https://github.com/git/git/blob/v2.23.0/sha1-file.c#L575
if depth > maxAlternatesDepth {
logEntry.WithField("objdir", objDir).Warn("ignoring deeply nested alternate object directory")
diff --git a/internal/git/housekeeping/clean_stale_data.go b/internal/git/housekeeping/clean_stale_data.go
index d8436b3d7..58c5c821c 100644
--- a/internal/git/housekeeping/clean_stale_data.go
+++ b/internal/git/housekeeping/clean_stale_data.go
@@ -11,10 +11,10 @@ import (
"strings"
"time"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/safe"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/internal/tracing"
@@ -90,7 +90,7 @@ func DefaultStaleDataCleanup() CleanStaleDataConfig {
}
// CleanStaleData removes any stale data in the repository as per the provided configuration.
-func (m *RepositoryManager) CleanStaleData(ctx context.Context, logger logrus.FieldLogger, repo *localrepo.Repo, cfg CleanStaleDataConfig) error {
+func (m *RepositoryManager) CleanStaleData(ctx context.Context, logger log.Logger, repo *localrepo.Repo, cfg CleanStaleDataConfig) error {
span, ctx := tracing.StartSpanIfHasParent(ctx, "housekeeping.CleanStaleData", nil)
defer span.Finish()
@@ -656,6 +656,6 @@ func removeEmptyDirs(ctx context.Context, target string) (int, error) {
return prunedDirsTotal + 1, nil
}
-func myLogger(logger logrus.FieldLogger) logrus.FieldLogger {
+func myLogger(logger log.Logger) log.Logger {
return logger.WithField("system", "housekeeping")
}
diff --git a/internal/git/housekeeping/manager.go b/internal/git/housekeeping/manager.go
index c92d0c297..f07cbe393 100644
--- a/internal/git/housekeeping/manager.go
+++ b/internal/git/housekeeping/manager.go
@@ -6,20 +6,20 @@ import (
"time"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
gitalycfgprom "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config/prometheus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// Manager is a housekeeping manager. It is supposed to handle housekeeping tasks for repositories
// such as the cleanup of unneeded files and optimizations for the repository's data structures.
type Manager interface {
// CleanStaleData removes any stale data in the repository as per the provided configuration.
- CleanStaleData(context.Context, logrus.FieldLogger, *localrepo.Repo, CleanStaleDataConfig) error
+ CleanStaleData(context.Context, log.Logger, *localrepo.Repo, CleanStaleDataConfig) error
// OptimizeRepository optimizes the repository's data structures such that it can be more
// efficiently served.
- OptimizeRepository(context.Context, logrus.FieldLogger, *localrepo.Repo, ...OptimizeRepositoryOption) error
+ OptimizeRepository(context.Context, log.Logger, *localrepo.Repo, ...OptimizeRepositoryOption) error
// AddPackRefsInhibitor allows clients to block housekeeping from running git-pack-refs(1).
AddPackRefsInhibitor(ctx context.Context, repoPath string) (bool, func(), error)
}
@@ -214,7 +214,7 @@ type RepositoryManager struct {
dataStructureCount *prometheus.HistogramVec
dataStructureSize *prometheus.HistogramVec
dataStructureTimeSinceLastOptimization *prometheus.HistogramVec
- optimizeFunc func(context.Context, *RepositoryManager, logrus.FieldLogger, *localrepo.Repo, OptimizationStrategy) error
+ optimizeFunc func(context.Context, *RepositoryManager, log.Logger, *localrepo.Repo, OptimizationStrategy) error
repositoryStates repositoryStates
}
diff --git a/internal/git/housekeeping/optimize_repository.go b/internal/git/housekeeping/optimize_repository.go
index 8fe65f594..999ea6629 100644
--- a/internal/git/housekeeping/optimize_repository.go
+++ b/internal/git/housekeeping/optimize_repository.go
@@ -8,10 +8,10 @@ import (
"time"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/stats"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/tracing"
)
@@ -41,7 +41,7 @@ func WithOptimizationStrategyConstructor(strategyConstructor OptimizationStrateg
// or not depends on a set of heuristics.
func (m *RepositoryManager) OptimizeRepository(
ctx context.Context,
- logger logrus.FieldLogger,
+ logger log.Logger,
repo *localrepo.Repo,
opts ...OptimizeRepositoryOption,
) error {
@@ -140,7 +140,7 @@ func (m *RepositoryManager) reportDataStructureSize(dataStructure string, size u
func optimizeRepository(
ctx context.Context,
m *RepositoryManager,
- logger logrus.FieldLogger,
+ logger log.Logger,
repo *localrepo.Repo,
strategy OptimizationStrategy,
) error {
diff --git a/internal/git/housekeeping/optimize_repository_test.go b/internal/git/housekeeping/optimize_repository_test.go
index a1173334f..740a01490 100644
--- a/internal/git/housekeeping/optimize_repository_test.go
+++ b/internal/git/housekeeping/optimize_repository_test.go
@@ -12,7 +12,6 @@ import (
"time"
"github.com/prometheus/client_golang/prometheus/testutil"
- "github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v16/internal/command"
@@ -26,6 +25,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/backchannel"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper/testcfg"
)
@@ -1076,7 +1076,7 @@ func TestOptimizeRepository_ConcurrencyLimit(t *testing.T) {
repo := localrepo.NewTestRepo(t, cfg, repoProto)
manager := NewManager(gitalycfgprom.Config{}, nil)
- manager.optimizeFunc = func(context.Context, *RepositoryManager, logrus.FieldLogger, *localrepo.Repo, OptimizationStrategy) error {
+ manager.optimizeFunc = func(context.Context, *RepositoryManager, log.Logger, *localrepo.Repo, OptimizationStrategy) error {
reqReceivedCh <- struct{}{}
ch <- struct{}{}
@@ -1108,7 +1108,7 @@ func TestOptimizeRepository_ConcurrencyLimit(t *testing.T) {
repo := localrepo.NewTestRepo(t, cfg, repoProto)
manager := NewManager(gitalycfgprom.Config{}, nil)
- manager.optimizeFunc = func(context.Context, *RepositoryManager, logrus.FieldLogger, *localrepo.Repo, OptimizationStrategy) error {
+ manager.optimizeFunc = func(context.Context, *RepositoryManager, log.Logger, *localrepo.Repo, OptimizationStrategy) error {
// This should only happen if housekeeping is running successfully.
// So by sending data on this channel we can notify the test that this
// function ran successfully.
@@ -1142,7 +1142,7 @@ func TestOptimizeRepository_ConcurrencyLimit(t *testing.T) {
repo := localrepo.NewTestRepo(t, cfg, repoProto)
manager := NewManager(gitalycfgprom.Config{}, nil)
- manager.optimizeFunc = func(context.Context, *RepositoryManager, logrus.FieldLogger, *localrepo.Repo, OptimizationStrategy) error {
+ manager.optimizeFunc = func(context.Context, *RepositoryManager, log.Logger, *localrepo.Repo, OptimizationStrategy) error {
require.FailNow(t, "housekeeping run should have been skipped")
return nil
}
@@ -1175,7 +1175,7 @@ func TestOptimizeRepository_ConcurrencyLimit(t *testing.T) {
reposOptimized := make(map[string]struct{})
manager := NewManager(gitalycfgprom.Config{}, nil)
- manager.optimizeFunc = func(_ context.Context, _ *RepositoryManager, _ logrus.FieldLogger, repo *localrepo.Repo, _ OptimizationStrategy) error {
+ manager.optimizeFunc = func(_ context.Context, _ *RepositoryManager, _ log.Logger, repo *localrepo.Repo, _ OptimizationStrategy) error {
reposOptimized[repo.GetRelativePath()] = struct{}{}
if repo.GetRelativePath() == repoFirst.GetRelativePath() {
@@ -1212,7 +1212,7 @@ func TestOptimizeRepository_ConcurrencyLimit(t *testing.T) {
var optimizations int
manager := NewManager(gitalycfgprom.Config{}, nil)
- manager.optimizeFunc = func(context.Context, *RepositoryManager, logrus.FieldLogger, *localrepo.Repo, OptimizationStrategy) error {
+ manager.optimizeFunc = func(context.Context, *RepositoryManager, log.Logger, *localrepo.Repo, OptimizationStrategy) error {
optimizations++
if optimizations == 1 {
diff --git a/internal/git/localrepo/refs.go b/internal/git/localrepo/refs.go
index 9fb4c5aa6..fe38e93c3 100644
--- a/internal/git/localrepo/refs.go
+++ b/internal/git/localrepo/refs.go
@@ -10,10 +10,10 @@ import (
"path/filepath"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/command"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/safe"
)
@@ -164,7 +164,7 @@ func (repo *Repo) setDefaultBranchWithTransaction(ctx context.Context, txManager
}
defer func() {
if err := lockingFileWriter.Close(); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Error("closing locked HEAD: %w", err)
+ log.FromContext(ctx).WithError(err).Error("closing locked HEAD: %w", err)
}
}()
diff --git a/internal/git/objectpool/disconnect.go b/internal/git/objectpool/disconnect.go
index 9ea36b966..1f1fcb9ea 100644
--- a/internal/git/objectpool/disconnect.go
+++ b/internal/git/objectpool/disconnect.go
@@ -10,13 +10,13 @@ import (
"strings"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/stats"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/text"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/transaction/voting"
)
@@ -210,7 +210,7 @@ func removeAlternatesIfOk(ctx context.Context, repo *localrepo.Repo, altFile, ba
return
}
- logger := ctxlogrus.Extract(ctx)
+ logger := log.FromContext(ctx)
// If we would do a os.Rename, and then someone else comes and clobbers
// our file, it's gone forever. This trick with os.Link and os.Rename
diff --git a/internal/git/objectpool/fetch.go b/internal/git/objectpool/fetch.go
index 82f452b39..8470ec44d 100644
--- a/internal/git/objectpool/fetch.go
+++ b/internal/git/objectpool/fetch.go
@@ -8,7 +8,6 @@ import (
"io"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/housekeeping"
@@ -16,6 +15,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/git/stats"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/updateref"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/internal/transaction/voting"
)
@@ -24,7 +24,7 @@ var objectPoolRefspec = fmt.Sprintf("+refs/*:%s/*", git.ObjectPoolRefNamespace)
// FetchFromOrigin initializes the pool and fetches the objects from its origin repository
func (o *ObjectPool) FetchFromOrigin(ctx context.Context, origin *localrepo.Repo) error {
- logger := ctxlogrus.Extract(ctx)
+ logger := log.FromContext(ctx)
if !o.Exists() {
return structerr.NewInvalidArgument("object pool does not exist")
@@ -320,7 +320,7 @@ type referencedObjectTypes struct {
Trees uint64 `json:"trees"`
}
-func (o *ObjectPool) logStats(ctx context.Context, logger *logrus.Entry) error {
+func (o *ObjectPool) logStats(ctx context.Context, logger log.Logger) error {
fields := logrus.Fields{}
repoInfo, err := stats.RepositoryInfoForRepository(o.Repo)
diff --git a/internal/git/protocol.go b/internal/git/protocol.go
index e72053aa6..d03a3a5a8 100644
--- a/internal/git/protocol.go
+++ b/internal/git/protocol.go
@@ -5,11 +5,11 @@ import (
"fmt"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
grpcmwtags "github.com/grpc-ecosystem/go-grpc-middleware/tags"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
const (
@@ -50,7 +50,7 @@ func gitProtocolEnv(ctx context.Context, req RequestWithGitProtocol) []string {
case "":
protocol = "v0"
default:
- ctxlogrus.Extract(ctx).WithField("git_protocol", gp).Warn("invalid git protocol requested")
+ log.FromContext(ctx).WithField("git_protocol", gp).Warn("invalid git protocol requested")
protocol = "invalid"
}
diff --git a/internal/git/ssh.go b/internal/git/ssh.go
index fc7ac31f0..25077b634 100644
--- a/internal/git/ssh.go
+++ b/internal/git/ssh.go
@@ -7,8 +7,8 @@ import (
"path/filepath"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// BuildSSHInvocation builds a command line to invoke SSH with the provided key and known hosts.
@@ -26,7 +26,7 @@ func BuildSSHInvocation(ctx context.Context, sshKey, knownHosts string) (string,
cleanup := func() {
if err := os.RemoveAll(tmpDir); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Error("failed to remove tmp directory with ssh key/config")
+ log.FromContext(ctx).WithError(err).Error("failed to remove tmp directory with ssh key/config")
}
}
diff --git a/internal/git/stats/repository_info.go b/internal/git/stats/repository_info.go
index 159b31b00..c507514c0 100644
--- a/internal/git/stats/repository_info.go
+++ b/internal/git/stats/repository_info.go
@@ -14,9 +14,9 @@ import (
"strings"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
const (
@@ -120,7 +120,7 @@ func LooseObjects(repo *localrepo.Repo) (uint64, error) {
func LogRepositoryInfo(ctx context.Context, repo *localrepo.Repo) {
repoInfo, err := RepositoryInfoForRepository(repo)
if err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Warn("failed reading repository info")
+ log.FromContext(ctx).WithError(err).Warn("failed reading repository info")
} else {
repoInfo.Log(ctx)
}
@@ -184,7 +184,7 @@ func RepositoryInfoForRepository(repo *localrepo.Repo) (RepositoryInfo, error) {
// Log logs the repository information as a structured entry under the `repository_info` field.
func (i RepositoryInfo) Log(ctx context.Context) {
- ctxlogrus.Extract(ctx).WithField("repository_info", i).Info("repository info")
+ log.FromContext(ctx).WithField("repository_info", i).Info("repository info")
}
// ReferencesInfo contains information about references.
diff --git a/internal/git/stats/repository_info_test.go b/internal/git/stats/repository_info_test.go
index 81285cdc1..82f69ccb9 100644
--- a/internal/git/stats/repository_info_test.go
+++ b/internal/git/stats/repository_info_test.go
@@ -11,7 +11,6 @@ import (
"testing"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
"github.com/sirupsen/logrus/hooks/test"
"github.com/stretchr/testify/require"
@@ -19,6 +18,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper/testcfg"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -103,7 +103,7 @@ func TestLogObjectInfo(t *testing.T) {
t.Parallel()
logger, hook := test.NewNullLogger()
- ctx := ctxlogrus.ToContext(ctx, logger.WithField("test", "logging"))
+ ctx := log.FromLogrusEntry(logger.WithField("test", "logging")).ToContext(ctx)
_, repoPath1 := gittest.CreateRepository(t, ctx, cfg, gittest.CreateRepositoryConfig{
SkipCreationViaService: true,
@@ -152,7 +152,7 @@ func TestLogObjectInfo(t *testing.T) {
t.Parallel()
logger, hook := test.NewNullLogger()
- ctx := ctxlogrus.ToContext(ctx, logger.WithField("test", "logging"))
+ ctx := log.FromLogrusEntry(logger.WithField("test", "logging")).ToContext(ctx)
repo, repoPath := gittest.CreateRepository(t, ctx, cfg, gittest.CreateRepositoryConfig{
SkipCreationViaService: true,
diff --git a/internal/gitaly/config/prometheus/config.go b/internal/gitaly/config/prometheus/config.go
index f3b8f9287..1c5b9d7bb 100644
--- a/internal/gitaly/config/prometheus/config.go
+++ b/internal/gitaly/config/prometheus/config.go
@@ -7,9 +7,9 @@ import (
grpcprometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/errors/cfgerror"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/duration"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// Config contains additional configuration data for prometheus
@@ -30,7 +30,7 @@ func DefaultConfig() Config {
}
// Configure configures latency buckets for prometheus timing histograms
-func (c *Config) Configure(logger logrus.FieldLogger) {
+func (c *Config) Configure(logger log.Logger) {
if len(c.GRPCLatencyBuckets) == 0 {
return
}
diff --git a/internal/gitaly/config/sentry/sentry.go b/internal/gitaly/config/sentry/sentry.go
index 908725ec1..d6e148b8b 100644
--- a/internal/gitaly/config/sentry/sentry.go
+++ b/internal/gitaly/config/sentry/sentry.go
@@ -4,8 +4,8 @@ import (
"fmt"
sentry "github.com/getsentry/sentry-go"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/middleware/panichandler"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// Config contains configuration for sentry
@@ -15,7 +15,7 @@ type Config struct {
}
// ConfigureSentry configures the sentry DSN
-func ConfigureSentry(logger logrus.FieldLogger, version string, sentryConf Config) {
+func ConfigureSentry(logger log.Logger, version string, sentryConf Config) {
if sentryConf.DSN == "" {
return
}
diff --git a/internal/gitaly/hook/postreceive.go b/internal/gitaly/hook/postreceive.go
index f1d11f13d..6429c3329 100644
--- a/internal/gitaly/hook/postreceive.go
+++ b/internal/gitaly/hook/postreceive.go
@@ -9,9 +9,9 @@ import (
"math"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitlab"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -119,12 +119,12 @@ func (m *GitLabHookManager) PostReceiveHook(ctx context.Context, repo *gitalypb.
if isPrimary(payload) {
if err := m.postReceiveHook(ctx, payload, repo, pushOptions, env, changes, stdout, stderr); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Warn("stopping transaction because post-receive hook failed")
+ log.FromContext(ctx).WithError(err).Warn("stopping transaction because post-receive hook failed")
// If the post-receive hook declines the push, then we need to stop any
// secondaries voting on the transaction.
if err := m.stopTransaction(ctx, payload); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Error("failed stopping transaction in post-receive hook")
+ log.FromContext(ctx).WithError(err).Error("failed stopping transaction in post-receive hook")
}
return err
diff --git a/internal/gitaly/hook/prereceive.go b/internal/gitaly/hook/prereceive.go
index 46cd18ada..cf63e95d0 100644
--- a/internal/gitaly/hook/prereceive.go
+++ b/internal/gitaly/hook/prereceive.go
@@ -9,10 +9,10 @@ import (
"path/filepath"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitlab"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/env"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -76,12 +76,12 @@ func (m *GitLabHookManager) PreReceiveHook(ctx context.Context, repo *gitalypb.R
// Only the primary should execute hooks and increment reference counters.
if isPrimary(payload) {
if err := m.preReceiveHook(ctx, payload, repo, pushOptions, env, changes, stdout, stderr); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Warn("stopping transaction because pre-receive hook failed")
+ log.FromContext(ctx).WithError(err).Warn("stopping transaction because pre-receive hook failed")
// If the pre-receive hook declines the push, then we need to stop any
// secondaries voting on the transaction.
if err := m.stopTransaction(ctx, payload); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Error("failed stopping transaction in pre-receive hook")
+ log.FromContext(ctx).WithError(err).Error("failed stopping transaction in pre-receive hook")
}
return err
diff --git a/internal/gitaly/hook/update.go b/internal/gitaly/hook/update.go
index be5e38188..64b337ce1 100644
--- a/internal/gitaly/hook/update.go
+++ b/internal/gitaly/hook/update.go
@@ -5,8 +5,8 @@ import (
"fmt"
"io"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -20,12 +20,12 @@ func (m *GitLabHookManager) UpdateHook(ctx context.Context, repo *gitalypb.Repos
if isPrimary(payload) {
if err := m.updateHook(ctx, payload, repo, ref, oldValue, newValue, env, stdout, stderr); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Warn("stopping transaction because update hook failed")
+ log.FromContext(ctx).WithError(err).Warn("stopping transaction because update hook failed")
// If the update hook declines the push, then we need
// to stop any secondaries voting on the transaction.
if err := m.stopTransaction(ctx, payload); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Error("failed stopping transaction in update hook")
+ log.FromContext(ctx).WithError(err).Error("failed stopping transaction in update hook")
}
return err
diff --git a/internal/gitaly/hook/updateref/update_with_hooks.go b/internal/gitaly/hook/updateref/update_with_hooks.go
index 796f042f8..a1fb7175a 100644
--- a/internal/gitaly/hook/updateref/update_with_hooks.go
+++ b/internal/gitaly/hook/updateref/update_with_hooks.go
@@ -7,7 +7,6 @@ import (
"fmt"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/featureflag"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/catfile"
@@ -17,6 +16,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/hook"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/transaction/txinfo"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -303,7 +303,7 @@ func (u *UpdaterWithHooks) UpdateReference(
if errors.As(err, &customHookErr) {
// Only log the error when we've got a custom-hook error, but otherwise
// ignore it and continue with whatever we have been doing.
- ctxlogrus.Extract(ctx).WithError(err).Error("custom post-receive hook returned an error")
+ log.FromContext(ctx).WithError(err).Error("custom post-receive hook returned an error")
} else {
return fmt.Errorf("running post-receive hooks: %w", wrapHookError(err, git.PostReceiveHook, stdout.String(), stderr.String()))
}
diff --git a/internal/gitaly/linguist/linguist.go b/internal/gitaly/linguist/linguist.go
index e5219b1e0..e5a8ee52e 100644
--- a/internal/gitaly/linguist/linguist.go
+++ b/internal/gitaly/linguist/linguist.go
@@ -7,7 +7,6 @@ import (
"io"
"github.com/go-enry/go-enry/v2"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/command"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/catfile"
@@ -15,6 +14,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/git/gitpipe"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// ByteCountPerLanguage represents a counter value (bytes) per language.
@@ -51,7 +51,7 @@ func Color(language string) string {
func (inst *Instance) Stats(ctx context.Context, commitID string) (ByteCountPerLanguage, error) {
stats, err := initLanguageStats(inst.repo)
if err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Info("linguist load from cache")
+ log.FromContext(ctx).WithError(err).Info("linguist load from cache")
}
if stats.CommitID == commitID {
return stats.Totals, nil
diff --git a/internal/gitaly/maintenance/daily.go b/internal/gitaly/maintenance/daily.go
index 359de3919..fdf3ced82 100644
--- a/internal/gitaly/maintenance/daily.go
+++ b/internal/gitaly/maintenance/daily.go
@@ -4,14 +4,14 @@ import (
"context"
"time"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/dontpanic"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// StoragesJob runs a job on storages. The string slice param indicates which
// storages are currently enabled for the feature.
-type StoragesJob func(context.Context, logrus.FieldLogger, []string) error
+type StoragesJob func(context.Context, log.Logger, []string) error
// DailyWorker allows for a storage job to be executed on a daily schedule
type DailyWorker struct {
@@ -40,7 +40,7 @@ func (dw DailyWorker) nextTime(hour, minute int) time.Time {
// StartDaily will run the provided job every day at the specified time for the
// specified duration. Only the specified storages wil be worked on.
-func (dw DailyWorker) StartDaily(ctx context.Context, l logrus.FieldLogger, schedule config.DailyJob, job StoragesJob) error {
+func (dw DailyWorker) StartDaily(ctx context.Context, l log.Logger, schedule config.DailyJob, job StoragesJob) error {
if schedule.Duration == 0 || len(schedule.Storages) == 0 || schedule.Disabled {
return nil
}
diff --git a/internal/gitaly/maintenance/daily_test.go b/internal/gitaly/maintenance/daily_test.go
index 1b4f0a21d..6ae906c57 100644
--- a/internal/gitaly/maintenance/daily_test.go
+++ b/internal/gitaly/maintenance/daily_test.go
@@ -5,10 +5,10 @@ import (
"testing"
"time"
- "github.com/sirupsen/logrus"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/duration"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
)
@@ -28,7 +28,7 @@ func TestStartDaily(t *testing.T) {
}
storagesQ := make(chan []string)
- fn := func(_ context.Context, _ logrus.FieldLogger, s []string) error {
+ fn := func(_ context.Context, _ log.Logger, s []string) error {
storagesQ <- s
return nil
}
diff --git a/internal/gitaly/maintenance/optimize.go b/internal/gitaly/maintenance/optimize.go
index 6233b9aa4..2873e3e47 100644
--- a/internal/gitaly/maintenance/optimize.go
+++ b/internal/gitaly/maintenance/optimize.go
@@ -9,21 +9,21 @@ import (
"path/filepath"
"time"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
// WorkerFunc is a function that does a unit of work meant to run in the background
-type WorkerFunc func(context.Context, logrus.FieldLogger) error
+type WorkerFunc func(context.Context, log.Logger) error
// StartWorkers will start any background workers and returns a function that
// can be used to shut down the background workers.
func StartWorkers(
ctx context.Context,
- l logrus.FieldLogger,
+ l log.Logger,
workers ...WorkerFunc,
) (func(), error) {
errQ := make(chan error)
@@ -67,20 +67,20 @@ func shuffledStoragesCopy(randSrc *rand.Rand, storages []config.Storage) []confi
// Optimizer knows how to optimize a repository
type Optimizer interface {
- OptimizeRepository(context.Context, logrus.FieldLogger, storage.Repository) error
+ OptimizeRepository(context.Context, log.Logger, storage.Repository) error
}
// OptimizerFunc is an adapter to allow the use of an ordinary function as an Optimizer
-type OptimizerFunc func(context.Context, logrus.FieldLogger, storage.Repository) error
+type OptimizerFunc func(context.Context, log.Logger, storage.Repository) error
// OptimizeRepository calls o(ctx, repo)
-func (o OptimizerFunc) OptimizeRepository(ctx context.Context, logger logrus.FieldLogger, repo storage.Repository) error {
+func (o OptimizerFunc) OptimizeRepository(ctx context.Context, logger log.Logger, repo storage.Repository) error {
return o(ctx, logger, repo)
}
// DailyOptimizationWorker creates a worker that runs repository maintenance daily
func DailyOptimizationWorker(cfg config.Cfg, optimizer Optimizer) WorkerFunc {
- return func(ctx context.Context, l logrus.FieldLogger) error {
+ return func(ctx context.Context, l log.Logger) error {
return NewDailyWorker().StartDaily(
ctx,
l,
@@ -97,7 +97,7 @@ func DailyOptimizationWorker(cfg config.Cfg, optimizer Optimizer) WorkerFunc {
func optimizeRepo(
ctx context.Context,
- l logrus.FieldLogger,
+ l log.Logger,
o Optimizer,
repo *gitalypb.Repository,
) error {
@@ -125,7 +125,7 @@ func walkReposShuffled(
ctx context.Context,
locator storage.Locator,
walker *randomWalker,
- l logrus.FieldLogger,
+ l log.Logger,
s config.Storage,
o Optimizer,
ticker helper.Ticker,
@@ -187,7 +187,7 @@ func walkReposShuffled(
// Any errors during the optimization will be logged. Any other errors will be returned and cause
// the walk to end prematurely.
func OptimizeReposRandomly(cfg config.Cfg, optimizer Optimizer, ticker helper.Ticker, rand *rand.Rand) StoragesJob {
- return func(ctx context.Context, l logrus.FieldLogger, enabledStorageNames []string) error {
+ return func(ctx context.Context, l log.Logger, enabledStorageNames []string) error {
enabledNames := map[string]struct{}{}
for _, sName := range enabledStorageNames {
enabledNames[sName] = struct{}{}
diff --git a/internal/gitaly/maintenance/optimize_test.go b/internal/gitaly/maintenance/optimize_test.go
index 7ead8cd01..a44c9d5bd 100644
--- a/internal/gitaly/maintenance/optimize_test.go
+++ b/internal/gitaly/maintenance/optimize_test.go
@@ -5,7 +5,6 @@ import (
"math/rand"
"testing"
- "github.com/sirupsen/logrus"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/catfile"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/gittest"
@@ -16,6 +15,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/backchannel"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper/testcfg"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -27,7 +27,7 @@ type mockOptimizer struct {
cfg config.Cfg
}
-func (mo *mockOptimizer) OptimizeRepository(ctx context.Context, logger logrus.FieldLogger, repository storage.Repository) error {
+func (mo *mockOptimizer) OptimizeRepository(ctx context.Context, logger log.Logger, repository storage.Repository) error {
mo.actual = append(mo.actual, repository)
l := config.NewLocator(mo.cfg)
gitCmdFactory := gittest.NewCommandFactory(mo.t, mo.cfg)
diff --git a/internal/gitaly/repoutil/custom_hooks.go b/internal/gitaly/repoutil/custom_hooks.go
index b355ff924..eb26cadfe 100644
--- a/internal/gitaly/repoutil/custom_hooks.go
+++ b/internal/gitaly/repoutil/custom_hooks.go
@@ -12,12 +12,12 @@ import (
"path/filepath"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/archive"
"gitlab.com/gitlab-org/gitaly/v16/internal/command"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/safe"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/internal/tempdir"
@@ -123,7 +123,7 @@ func SetCustomHooks(
// future modifications to the repository's hooks will be prevented. If
// this occurs, the `.lock` file will have to be manually removed.
if err := hooksLock.Unlock(); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Error("failed to unlock hooks")
+ log.FromContext(ctx).WithError(err).Error("failed to unlock hooks")
}
}()
@@ -138,7 +138,7 @@ func SetCustomHooks(
defer func() {
if err := os.RemoveAll(tmpDir.Path()); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Warn("failed to remove temporary directory")
+ log.FromContext(ctx).WithError(err).Warn("failed to remove temporary directory")
}
}()
diff --git a/internal/gitaly/repoutil/lock.go b/internal/gitaly/repoutil/lock.go
index 097374e61..3bbf30716 100644
--- a/internal/gitaly/repoutil/lock.go
+++ b/internal/gitaly/repoutil/lock.go
@@ -5,9 +5,9 @@ import (
"os"
"path/filepath"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/safe"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
)
@@ -41,7 +41,7 @@ func Lock(ctx context.Context, locator storage.Locator, repository storage.Repos
unlock := func() {
if err := locker.Close(); err != nil {
- ctxlogrus.Extract(ctx).Error("closing repository locker: %w", err)
+ log.FromContext(ctx).Error("closing repository locker: %w", err)
}
}
diff --git a/internal/gitaly/repoutil/remove.go b/internal/gitaly/repoutil/remove.go
index eb702d742..721be1ff4 100644
--- a/internal/gitaly/repoutil/remove.go
+++ b/internal/gitaly/repoutil/remove.go
@@ -7,11 +7,11 @@ import (
"os"
"path/filepath"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage/counter"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/safe"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/internal/transaction/txinfo"
@@ -100,7 +100,7 @@ func remove(
defer func() {
if err := removeAll(destDir); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Error("failed removing repository from temporary directory")
+ log.FromContext(ctx).WithError(err).Error("failed removing repository from temporary directory")
}
}()
diff --git a/internal/gitaly/server/server_factory.go b/internal/gitaly/server/server_factory.go
index 8639a8e0e..075adc9a3 100644
--- a/internal/gitaly/server/server_factory.go
+++ b/internal/gitaly/server/server_factory.go
@@ -3,11 +3,11 @@ package server
import (
"sync"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/cache"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/backchannel"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/middleware/limithandler"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"google.golang.org/grpc"
)
@@ -17,7 +17,7 @@ type GitalyServerFactory struct {
cacheInvalidator cache.Invalidator
limitHandlers []*limithandler.LimiterMiddleware
cfg config.Cfg
- logger logrus.FieldLogger
+ logger log.Logger
externalServers []*grpc.Server
internalServers []*grpc.Server
}
@@ -25,7 +25,7 @@ type GitalyServerFactory struct {
// NewGitalyServerFactory allows to create and start secure/insecure 'grpc.Server's.
func NewGitalyServerFactory(
cfg config.Cfg,
- logger logrus.FieldLogger,
+ logger log.Logger,
registry *backchannel.Registry,
cacheInvalidator cache.Invalidator,
limitHandlers []*limithandler.LimiterMiddleware,
diff --git a/internal/gitaly/service/cleanup/cleaner.go b/internal/gitaly/service/cleanup/cleaner.go
index 994cf80cc..744a8fe4a 100644
--- a/internal/gitaly/service/cleanup/cleaner.go
+++ b/internal/gitaly/service/cleanup/cleaner.go
@@ -7,10 +7,10 @@ import (
"io"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
- log "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/updateref"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// forEachFunc can be called for every entry in the filter-repo or BFG object
@@ -120,7 +120,7 @@ func (c *cleaner) processEntry(ctx context.Context, updater *updateref.Updater,
return nil
}
- ctxlogrus.Extract(c.ctx).WithFields(log.Fields{
+ log.FromContext(ctx).WithFields(logrus.Fields{
"sha": oldSHA,
"refs": refs,
}).Info("removing internal references")
@@ -162,7 +162,7 @@ func buildLookupTable(ctx context.Context, repo git.RepositoryExecutor) (map[str
return nil, err
}
- logger := ctxlogrus.Extract(ctx)
+ logger := log.FromContext(ctx)
out := make(map[string][]git.ReferenceName)
scanner := bufio.NewScanner(cmd)
@@ -171,7 +171,7 @@ func buildLookupTable(ctx context.Context, repo git.RepositoryExecutor) (map[str
objectName, refName, ok := strings.Cut(line, " ")
if !ok {
- logger.WithFields(log.Fields{"line": line}).Warn("failed to parse git refs")
+ logger.WithFields(logrus.Fields{"line": line}).Warn("failed to parse git refs")
return nil, fmt.Errorf("failed to parse git refs")
}
diff --git a/internal/gitaly/service/commit/commits_helper.go b/internal/gitaly/service/commit/commits_helper.go
index c0ec26d78..50587337c 100644
--- a/internal/gitaly/service/commit/commits_helper.go
+++ b/internal/gitaly/service/commit/commits_helper.go
@@ -3,10 +3,10 @@ package commit
import (
"context"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
- "gitlab.com/gitlab-org/gitaly/v16/internal/git/log"
+ gitlog "gitlab.com/gitlab-org/gitaly/v16/internal/git/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/chunk"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -24,12 +24,12 @@ func (s *server) sendCommits(
revisions[i] = git.Revision(revision)
}
- cmd, err := log.GitLogCommand(ctx, s.gitCmdFactory, repo, revisions, paths, options, extraArgs...)
+ cmd, err := gitlog.GitLogCommand(ctx, s.gitCmdFactory, repo, revisions, paths, options, extraArgs...)
if err != nil {
return err
}
- logParser, cancel, err := log.NewParser(ctx, s.catfileCache, repo, cmd)
+ logParser, cancel, err := gitlog.NewParser(ctx, s.catfileCache, repo, cmd)
if err != nil {
return err
}
@@ -53,7 +53,7 @@ func (s *server) sendCommits(
if err := cmd.Wait(); err != nil {
// We expect this error to be caused by non-existing references. In that
// case, we just log the error and send no commits to the `sender`.
- ctxlogrus.Extract(ctx).WithError(err).Info("ignoring git-log error")
+ log.FromContext(ctx).WithError(err).Info("ignoring git-log error")
}
return nil
diff --git a/internal/gitaly/service/commit/count_commits.go b/internal/gitaly/service/commit/count_commits.go
index 7332df2d8..629a811ff 100644
--- a/internal/gitaly/service/commit/count_commits.go
+++ b/internal/gitaly/service/commit/count_commits.go
@@ -8,9 +8,9 @@ import (
"strconv"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -53,11 +53,11 @@ func (s *server) CountCommits(ctx context.Context, in *gitalypb.CountCommitsRequ
var count int64
countStr, readAllErr := io.ReadAll(cmd)
if readAllErr != nil {
- ctxlogrus.Extract(ctx).WithError(err).Info("ignoring git rev-list error")
+ log.FromContext(ctx).WithError(err).Info("ignoring git rev-list error")
}
if err := cmd.Wait(); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Info("ignoring git rev-list error")
+ log.FromContext(ctx).WithError(err).Info("ignoring git rev-list error")
count = 0
} else if readAllErr == nil {
var err error
diff --git a/internal/gitaly/service/commit/get_tree_entries.go b/internal/gitaly/service/commit/get_tree_entries.go
index 13bcadcce..5338764ec 100644
--- a/internal/gitaly/service/commit/get_tree_entries.go
+++ b/internal/gitaly/service/commit/get_tree_entries.go
@@ -9,13 +9,13 @@ import (
"path/filepath"
"sort"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
- log "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/catfile"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/chunk"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
"google.golang.org/protobuf/proto"
@@ -329,7 +329,7 @@ func (c *treeEntriesSender) SetPaginationCursor(cursor string) {
}
func (s *server) GetTreeEntries(in *gitalypb.GetTreeEntriesRequest, stream gitalypb.CommitService_GetTreeEntriesServer) error {
- ctxlogrus.Extract(stream.Context()).WithFields(log.Fields{
+ log.FromContext(stream.Context()).WithFields(logrus.Fields{
"Revision": in.Revision,
"Path": in.Path,
}).Debug("GetTreeEntries")
diff --git a/internal/gitaly/service/commit/isancestor.go b/internal/gitaly/service/commit/isancestor.go
index 9b2fc2fa9..fa87fe653 100644
--- a/internal/gitaly/service/commit/isancestor.go
+++ b/internal/gitaly/service/commit/isancestor.go
@@ -4,10 +4,10 @@ import (
"context"
"errors"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
- log "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -36,7 +36,7 @@ func (s *server) CommitIsAncestor(ctx context.Context, in *gitalypb.CommitIsAnce
// Assumes that `path`, `ancestorID` and `childID` are populated :trollface:
func (s *server) commitIsAncestorName(ctx context.Context, repo *gitalypb.Repository, ancestorID, childID string) (bool, error) {
- ctxlogrus.Extract(ctx).WithFields(log.Fields{
+ log.FromContext(ctx).WithFields(logrus.Fields{
"ancestorSha": ancestorID,
"childSha": childID,
}).Debug("commitIsAncestor")
diff --git a/internal/gitaly/service/commit/list_files.go b/internal/gitaly/service/commit/list_files.go
index aba98f4e7..09402659d 100644
--- a/internal/gitaly/service/commit/list_files.go
+++ b/internal/gitaly/service/commit/list_files.go
@@ -4,19 +4,19 @@ import (
"fmt"
"io"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
- log "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/chunk"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
"google.golang.org/protobuf/proto"
)
func (s *server) ListFiles(in *gitalypb.ListFilesRequest, stream gitalypb.CommitService_ListFilesServer) error {
- ctxlogrus.Extract(stream.Context()).WithFields(log.Fields{
+ log.FromContext(stream.Context()).WithFields(logrus.Fields{
"Revision": in.GetRevision(),
}).Debug("ListFiles")
diff --git a/internal/gitaly/service/conflicts/resolve_conflicts.go b/internal/gitaly/service/conflicts/resolve_conflicts.go
index 493a2a24e..57e7fdd06 100644
--- a/internal/gitaly/service/conflicts/resolve_conflicts.go
+++ b/internal/gitaly/service/conflicts/resolve_conflicts.go
@@ -12,12 +12,12 @@ import (
"strings"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/conflict"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/remoterepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -57,8 +57,7 @@ func handleResolveConflictsErr(err error, stream gitalypb.ConflictsService_Resol
// log the error since the interceptor won't catch this
// error due to the unique way the RPC is defined to
// handle resolution errors
- ctxlogrus.
- Extract(stream.Context()).
+ log.FromContext(stream.Context()).
WithError(err).
Error("ResolveConflicts: unable to resolve conflict")
return stream.SendAndClose(&gitalypb.ResolveConflictsResponse{
diff --git a/internal/gitaly/service/diff/commit_delta.go b/internal/gitaly/service/diff/commit_delta.go
index 131ec5798..1672854d7 100644
--- a/internal/gitaly/service/diff/commit_delta.go
+++ b/internal/gitaly/service/diff/commit_delta.go
@@ -3,10 +3,10 @@ package diff
import (
"fmt"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
- log "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/diff"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -14,7 +14,7 @@ import (
func (s *server) CommitDelta(in *gitalypb.CommitDeltaRequest, stream gitalypb.DiffService_CommitDeltaServer) error {
ctx := stream.Context()
- ctxlogrus.Extract(ctx).WithFields(log.Fields{
+ log.FromContext(ctx).WithFields(logrus.Fields{
"LeftCommitId": in.LeftCommitId,
"RightCommitId": in.RightCommitId,
"Paths": logPaths(in.Paths),
diff --git a/internal/gitaly/service/diff/commit_diff.go b/internal/gitaly/service/diff/commit_diff.go
index a5ae472d8..c80876462 100644
--- a/internal/gitaly/service/diff/commit_diff.go
+++ b/internal/gitaly/service/diff/commit_diff.go
@@ -3,10 +3,10 @@ package diff
import (
"fmt"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
- log "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/diff"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -14,7 +14,7 @@ import (
func (s *server) CommitDiff(in *gitalypb.CommitDiffRequest, stream gitalypb.DiffService_CommitDiffServer) error {
ctx := stream.Context()
- ctxlogrus.Extract(ctx).WithFields(log.Fields{
+ log.FromContext(ctx).WithFields(logrus.Fields{
"LeftCommitId": in.LeftCommitId,
"RightCommitId": in.RightCommitId,
"Paths": logPaths(in.Paths),
diff --git a/internal/gitaly/service/objectpool/get.go b/internal/gitaly/service/objectpool/get.go
index 2aa1bf90c..158e09368 100644
--- a/internal/gitaly/service/objectpool/get.go
+++ b/internal/gitaly/service/objectpool/get.go
@@ -3,8 +3,8 @@ package objectpool
import (
"context"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/objectpool"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -19,7 +19,7 @@ func (s *server) GetObjectPool(ctx context.Context, in *gitalypb.GetObjectPoolRe
objectPool, err := objectpool.FromRepo(s.locator, s.gitCmdFactory, s.catfileCache, s.txManager, s.housekeepingManager, repo)
if err != nil {
- ctxlogrus.Extract(ctx).
+ log.FromContext(ctx).
WithError(err).
WithField("storage", repository.GetStorageName()).
WithField("relative_path", repository.GetRelativePath()).
diff --git a/internal/gitaly/service/objectpool/testhelper_test.go b/internal/gitaly/service/objectpool/testhelper_test.go
index a20c28ed1..cb51df425 100644
--- a/internal/gitaly/service/objectpool/testhelper_test.go
+++ b/internal/gitaly/service/objectpool/testhelper_test.go
@@ -4,7 +4,6 @@ import (
"context"
"testing"
- "github.com/sirupsen/logrus"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/catfile"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/gittest"
@@ -16,6 +15,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/service/repository"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper/testcfg"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper/testserver"
@@ -61,7 +61,7 @@ func setupWithConfig(t *testing.T, ctx context.Context, cfg config.Cfg, opts ...
return cfg, repo, repoPath, locator, clientWithConn{ObjectPoolServiceClient: gitalypb.NewObjectPoolServiceClient(conn), conn: conn}
}
-func runObjectPoolServer(t *testing.T, cfg config.Cfg, locator storage.Locator, logger *logrus.Logger, opts ...testserver.GitalyServerOpt) string {
+func runObjectPoolServer(t *testing.T, cfg config.Cfg, locator storage.Locator, logger log.Logger, opts ...testserver.GitalyServerOpt) string {
return testserver.RunGitalyServer(t, cfg, func(srv *grpc.Server, deps *service.Dependencies) {
gitalypb.RegisterObjectPoolServiceServer(srv, NewServer(
deps.GetLocator(),
diff --git a/internal/gitaly/service/operations/apply_patch.go b/internal/gitaly/service/operations/apply_patch.go
index aa38e378d..e81daa98a 100644
--- a/internal/gitaly/service/operations/apply_patch.go
+++ b/internal/gitaly/service/operations/apply_patch.go
@@ -9,12 +9,12 @@ import (
"path/filepath"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/text"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
"gitlab.com/gitlab-org/gitaly/v16/streamio"
@@ -109,7 +109,7 @@ func (s *Server) userApplyPatch(ctx context.Context, header *gitalypb.UserApplyP
worktreeName := filepath.Base(worktreePath)
if err := s.removeWorktree(ctx, header.Repository, worktreeName); err != nil {
- ctxlogrus.Extract(ctx).WithField("worktree_name", worktreeName).WithError(err).Error("failed to remove worktree")
+ log.FromContext(ctx).WithField("worktree_name", worktreeName).WithError(err).Error("failed to remove worktree")
}
}()
diff --git a/internal/gitaly/service/operations/commit_files.go b/internal/gitaly/service/operations/commit_files.go
index c6ed6f5dc..b14a6b9cc 100644
--- a/internal/gitaly/service/operations/commit_files.go
+++ b/internal/gitaly/service/operations/commit_files.go
@@ -10,13 +10,13 @@ import (
"path/filepath"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/remoterepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/hook/updateref"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -144,7 +144,7 @@ func (s *Server) UserCommitFiles(stream gitalypb.OperationService_UserCommitFile
}
if err := s.userCommitFiles(ctx, header, stream, objectHash); err != nil {
- ctxlogrus.AddFields(ctx, logrus.Fields{
+ log.AddFields(ctx, logrus.Fields{
"repository_storage": header.Repository.StorageName,
"repository_relative_path": header.Repository.RelativePath,
"branch_name": header.BranchName,
@@ -154,7 +154,7 @@ func (s *Server) UserCommitFiles(stream gitalypb.OperationService_UserCommitFile
})
if startRepo := header.GetStartRepository(); startRepo != nil {
- ctxlogrus.AddFields(ctx, logrus.Fields{
+ log.AddFields(ctx, logrus.Fields{
"start_repository_storage": startRepo.StorageName,
"start_repository_relative_path": startRepo.RelativePath,
})
diff --git a/internal/gitaly/service/operations/merge_to_ref.go b/internal/gitaly/service/operations/merge_to_ref.go
index d04566c39..3a5e98780 100644
--- a/internal/gitaly/service/operations/merge_to_ref.go
+++ b/internal/gitaly/service/operations/merge_to_ref.go
@@ -6,10 +6,10 @@ import (
"fmt"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -105,7 +105,7 @@ func (s *Server) UserMergeToRef(ctx context.Context, request *gitalypb.UserMerge
false,
)
if err != nil {
- ctxlogrus.Extract(ctx).WithError(err).WithFields(
+ log.FromContext(ctx).WithError(err).WithFields(
logrus.Fields{
"source_sha": sourceOID,
"target_sha": oid,
diff --git a/internal/gitaly/service/operations/submodules.go b/internal/gitaly/service/operations/submodules.go
index 6ba4911bf..e999e7693 100644
--- a/internal/gitaly/service/operations/submodules.go
+++ b/internal/gitaly/service/operations/submodules.go
@@ -6,11 +6,11 @@ import (
"fmt"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/hook/updateref"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -88,8 +88,7 @@ func (s *Server) UserUpdateSubmodule(ctx context.Context, req *gitalypb.UserUpda
resp = &gitalypb.UserUpdateSubmoduleResponse{
CommitError: legacyErrPrefixInvalidSubmodulePath,
}
- ctxlogrus.
- Extract(ctx).
+ log.FromContext(ctx).
WithError(err).
Error("UserUpdateSubmodule: git2go subcommand failure")
}
diff --git a/internal/gitaly/service/repository/apply_gitattributes.go b/internal/gitaly/service/repository/apply_gitattributes.go
index 131d961ee..e0095678e 100644
--- a/internal/gitaly/service/repository/apply_gitattributes.go
+++ b/internal/gitaly/service/repository/apply_gitattributes.go
@@ -8,12 +8,12 @@ import (
"os"
"path/filepath"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/catfile"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/safe"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/internal/transaction/txinfo"
@@ -55,7 +55,7 @@ func (s *server) applyGitattributes(ctx context.Context, repo *localrepo.Repo, o
}
defer func() {
if err := locker.Close(); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Error("unlocking gitattributes")
+ log.FromContext(ctx).WithError(err).Error("unlocking gitattributes")
}
}()
diff --git a/internal/gitaly/service/repository/archive.go b/internal/gitaly/service/repository/archive.go
index 7254abd79..8992d0b42 100644
--- a/internal/gitaly/service/repository/archive.go
+++ b/internal/gitaly/service/repository/archive.go
@@ -9,7 +9,6 @@ import (
"os"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/command"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/catfile"
@@ -83,7 +82,7 @@ func (s *server) GetArchive(in *gitalypb.GetArchiveRequest, stream gitalypb.Repo
return stream.Send(&gitalypb.GetArchiveResponse{Data: p})
})
- ctxlogrus.Extract(ctx).WithField("request_hash", requestHash(in)).Info("request details")
+ log.FromContext(ctx).WithField("request_hash", requestHash(in)).Info("request details")
return s.handleArchive(ctx, archiveParams{
writer: writer,
diff --git a/internal/gitaly/service/repository/fetch.go b/internal/gitaly/service/repository/fetch.go
index f449f9a4f..143c67006 100644
--- a/internal/gitaly/service/repository/fetch.go
+++ b/internal/gitaly/service/repository/fetch.go
@@ -4,11 +4,11 @@ import (
"context"
"errors"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/remoterepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -91,7 +91,7 @@ func (s *server) FetchSourceBranch(ctx context.Context, req *gitalypb.FetchSourc
); err != nil {
// Design quirk: if the fetch fails, this RPC returns Result: false, but no error.
if errors.As(err, &localrepo.FetchFailedError{}) {
- ctxlogrus.Extract(ctx).
+ log.FromContext(ctx).
WithField("oid", sourceOid.String()).
WithError(err).Warn("git fetch failed")
return &gitalypb.FetchSourceBranchResponse{Result: false}, nil
diff --git a/internal/gitaly/service/repository/optimize_test.go b/internal/gitaly/service/repository/optimize_test.go
index c05086c23..02006ee52 100644
--- a/internal/gitaly/service/repository/optimize_test.go
+++ b/internal/gitaly/service/repository/optimize_test.go
@@ -10,7 +10,6 @@ import (
"testing"
"time"
- "github.com/sirupsen/logrus"
"github.com/sirupsen/logrus/hooks/test"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/gittest"
@@ -20,6 +19,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/text"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper/testserver"
@@ -259,7 +259,7 @@ type mockHousekeepingManager struct {
strategyCh chan housekeeping.OptimizationStrategy
}
-func (m mockHousekeepingManager) OptimizeRepository(_ context.Context, _ logrus.FieldLogger, _ *localrepo.Repo, opts ...housekeeping.OptimizeRepositoryOption) error {
+func (m mockHousekeepingManager) OptimizeRepository(_ context.Context, _ log.Logger, _ *localrepo.Repo, opts ...housekeeping.OptimizeRepositoryOption) error {
var cfg housekeeping.OptimizeRepositoryConfig
for _, opt := range opts {
opt(&cfg)
diff --git a/internal/gitaly/service/repository/rename.go b/internal/gitaly/service/repository/rename.go
index 51343e681..296d59e5c 100644
--- a/internal/gitaly/service/repository/rename.go
+++ b/internal/gitaly/service/repository/rename.go
@@ -7,9 +7,9 @@ import (
"os"
"path/filepath"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/safe"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -62,7 +62,7 @@ func (s *server) renameRepository(ctx context.Context, sourceRepo, targetRepo *g
}
defer func() {
if err := sourceLocker.Close(); err != nil {
- ctxlogrus.Extract(ctx).Error("closing source repo locker: %w", err)
+ log.FromContext(ctx).Error("closing source repo locker: %w", err)
}
}()
@@ -72,7 +72,7 @@ func (s *server) renameRepository(ctx context.Context, sourceRepo, targetRepo *g
}
defer func() {
if err := targetLocker.Close(); err != nil {
- ctxlogrus.Extract(ctx).Error("closing target repo locker: %w", err)
+ log.FromContext(ctx).Error("closing target repo locker: %w", err)
}
}()
diff --git a/internal/gitaly/service/repository/replicate.go b/internal/gitaly/service/repository/replicate.go
index 233dd9bdf..d7aaac44b 100644
--- a/internal/gitaly/service/repository/replicate.go
+++ b/internal/gitaly/service/repository/replicate.go
@@ -10,7 +10,6 @@ import (
"path/filepath"
"strings"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/command"
"gitlab.com/gitlab-org/gitaly/v16/internal/featureflag"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
@@ -23,6 +22,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/client"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/metadata"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/safe"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/internal/tempdir"
@@ -151,7 +151,7 @@ func (s *server) create(ctx context.Context, in *gitalypb.ReplicateRepositoryReq
return fmt.Errorf("error deleting invalid repo: %w", err)
}
- ctxlogrus.Extract(ctx).WithField("repo_path", repoPath).Warn("removed invalid repository")
+ log.FromContext(ctx).WithField("repo_path", repoPath).Warn("removed invalid repository")
}
if err := s.createFromSnapshot(ctx, in.GetSource(), in.GetRepository()); err != nil {
diff --git a/internal/gitaly/service/repository/snapshot.go b/internal/gitaly/service/repository/snapshot.go
index 4d67fd8e6..1530013f4 100644
--- a/internal/gitaly/service/repository/snapshot.go
+++ b/internal/gitaly/service/repository/snapshot.go
@@ -7,9 +7,9 @@ import (
"path/filepath"
"regexp"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/archive"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
"gitlab.com/gitlab-org/gitaly/v16/streamio"
@@ -98,7 +98,7 @@ func (s *server) addAlternateFiles(ctx context.Context, repository *gitalypb.Rep
altObjDirs, err := git.AlternateObjectDirectories(ctx, storageRoot, repoPath)
if err != nil {
- ctxlogrus.Extract(ctx).WithField("error", err).Warn("error getting alternate object directories")
+ log.FromContext(ctx).WithField("error", err).Warn("error getting alternate object directories")
return nil
}
diff --git a/internal/gitaly/service/server/disk_stats.go b/internal/gitaly/service/server/disk_stats.go
index f278357a4..2abcf251f 100644
--- a/internal/gitaly/service/server/disk_stats.go
+++ b/internal/gitaly/service/server/disk_stats.go
@@ -3,7 +3,7 @@ package server
import (
"context"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -12,7 +12,7 @@ func (s *server) DiskStatistics(ctx context.Context, _ *gitalypb.DiskStatisticsR
for _, shard := range s.storages {
shardInfo, err := getStorageStatus(shard)
if err != nil {
- ctxlogrus.Extract(ctx).WithField("storage", shard).WithError(err).Error("to retrieve shard disk statistics")
+ log.FromContext(ctx).WithField("storage", shard).WithError(err).Error("to retrieve shard disk statistics")
results = append(results, &gitalypb.DiskStatisticsResponse_StorageStatus{StorageName: shard.Name})
continue
}
diff --git a/internal/gitaly/service/server/info.go b/internal/gitaly/service/server/info.go
index 0e3d9fa0f..f1580bc47 100644
--- a/internal/gitaly/service/server/info.go
+++ b/internal/gitaly/service/server/info.go
@@ -5,10 +5,10 @@ import (
"os"
"path/filepath"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/fstype"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/internal/version"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -27,7 +27,7 @@ func (s *server) ServerInfo(ctx context.Context, in *gitalypb.ServerInfoRequest)
gitalyMetadata, err := storage.ReadMetadataFile(shard.Path)
if err != nil {
- ctxlogrus.Extract(ctx).WithField("storage", shard).WithError(err).Error("reading gitaly metadata file")
+ log.FromContext(ctx).WithField("storage", shard).WithError(err).Error("reading gitaly metadata file")
}
storageStatuses = append(storageStatuses, &gitalypb.ServerInfoResponse_StorageStatus{
diff --git a/internal/gitaly/service/smarthttp/cache.go b/internal/gitaly/service/smarthttp/cache.go
index b5ca72969..37add5bad 100644
--- a/internal/gitaly/service/smarthttp/cache.go
+++ b/internal/gitaly/service/smarthttp/cache.go
@@ -5,11 +5,11 @@ import (
"io"
"sync"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
- log "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/cache"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -53,7 +53,7 @@ func (c infoRefCache) tryCache(ctx context.Context, in *gitalypb.InfoRefsRequest
return missFn(w)
}
- logger := ctxlogrus.Extract(ctx).WithFields(log.Fields{"service": uploadPackSvc})
+ logger := log.FromContext(ctx).WithFields(logrus.Fields{"service": uploadPackSvc})
logger.Debug("Attempting to fetch cached response")
countAttempt()
diff --git a/internal/gitaly/service/smarthttp/inforefs.go b/internal/gitaly/service/smarthttp/inforefs.go
index 97b50bbdc..b384f6142 100644
--- a/internal/gitaly/service/smarthttp/inforefs.go
+++ b/internal/gitaly/service/smarthttp/inforefs.go
@@ -5,10 +5,10 @@ import (
"fmt"
"io"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
- log "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/pktline"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
"gitlab.com/gitlab-org/gitaly/v16/streamio"
@@ -54,7 +54,7 @@ func (s *server) InfoRefsReceivePack(in *gitalypb.InfoRefsRequest, stream gitaly
}
func (s *server) handleInfoRefs(ctx context.Context, service, repoPath string, req *gitalypb.InfoRefsRequest, w io.Writer) error {
- ctxlogrus.Extract(ctx).WithFields(log.Fields{
+ log.FromContext(ctx).WithFields(logrus.Fields{
"service": service,
}).Debug("handleInfoRefs")
diff --git a/internal/gitaly/service/smarthttp/receive_pack.go b/internal/gitaly/service/smarthttp/receive_pack.go
index d440bc8db..561c5ce49 100644
--- a/internal/gitaly/service/smarthttp/receive_pack.go
+++ b/internal/gitaly/service/smarthttp/receive_pack.go
@@ -3,11 +3,11 @@ package smarthttp
import (
"errors"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
- log "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/internal/transaction/voting"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -21,7 +21,7 @@ func (s *server) PostReceivePack(stream gitalypb.SmartHTTPService_PostReceivePac
return err
}
- ctxlogrus.Extract(ctx).WithFields(log.Fields{
+ log.FromContext(ctx).WithFields(logrus.Fields{
"GlID": req.GlId,
"GlRepository": req.GlRepository,
"GlUsername": req.GlUsername,
diff --git a/internal/gitaly/service/smarthttp/upload_pack.go b/internal/gitaly/service/smarthttp/upload_pack.go
index f39a21af2..aaca1417f 100644
--- a/internal/gitaly/service/smarthttp/upload_pack.go
+++ b/internal/gitaly/service/smarthttp/upload_pack.go
@@ -6,11 +6,11 @@ import (
"fmt"
"io"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/command"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/stats"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/sidechannel"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -64,7 +64,7 @@ func (s *server) runStatsCollector(ctx context.Context, r io.Reader) (io.Reader,
stats, err := stats.ParsePackfileNegotiation(pr)
if err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Debug("failed parsing packfile negotiation")
+ log.FromContext(ctx).WithError(err).Debug("failed parsing packfile negotiation")
return
}
stats.UpdateMetrics(s.packfileNegotiationMetrics)
@@ -141,6 +141,6 @@ func (s *server) runUploadPack(ctx context.Context, req *gitalypb.PostUploadPack
return nil, structerr.NewFailedPrecondition("waiting for upload-pack: %w", err)
}
- ctxlogrus.Extract(ctx).WithField("request_sha", fmt.Sprintf("%x", h.Sum(nil))).WithField("response_bytes", respBytes).Info("request details")
+ log.FromContext(ctx).WithField("request_sha", fmt.Sprintf("%x", h.Sum(nil))).WithField("response_bytes", respBytes).Info("request details")
return nil, nil
}
diff --git a/internal/gitaly/service/ssh/receive_pack.go b/internal/gitaly/service/ssh/receive_pack.go
index ac8f03d7d..302d1dc0c 100644
--- a/internal/gitaly/service/ssh/receive_pack.go
+++ b/internal/gitaly/service/ssh/receive_pack.go
@@ -8,12 +8,12 @@ import (
"strings"
"sync"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
- log "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/command"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/transaction"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/internal/transaction/voting"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -26,7 +26,7 @@ func (s *server) SSHReceivePack(stream gitalypb.SSHService_SSHReceivePackServer)
return structerr.NewInternal("%w", err)
}
- ctxlogrus.Extract(stream.Context()).WithFields(log.Fields{
+ log.FromContext(stream.Context()).WithFields(logrus.Fields{
"GlID": req.GlId,
"GlRepository": req.GlRepository,
"GlUsername": req.GlUsername,
@@ -128,7 +128,7 @@ func (s *server) sshReceivePack(stream gitalypb.SSHService_SSHReceivePackServer,
if errSend := stream.Send(&gitalypb.SSHReceivePackResponse{
ExitStatus: &gitalypb.ExitStatus{Value: int32(status)},
}); errSend != nil {
- ctxlogrus.Extract(ctx).WithError(errSend).Error("send final status code")
+ log.FromContext(ctx).WithError(errSend).Error("send final status code")
}
// Detect the case where the user has cancelled the push and log it with a proper
diff --git a/internal/gitaly/service/ssh/upload_pack.go b/internal/gitaly/service/ssh/upload_pack.go
index c5815536a..f798a71e0 100644
--- a/internal/gitaly/service/ssh/upload_pack.go
+++ b/internal/gitaly/service/ssh/upload_pack.go
@@ -8,8 +8,7 @@ import (
"strings"
"sync"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
- log "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/command"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/pktline"
@@ -17,6 +16,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/sidechannel"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/stream"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -31,7 +31,7 @@ func (s *server) SSHUploadPack(stream gitalypb.SSHService_SSHUploadPackServer) e
return structerr.NewInternal("%w", err)
}
- ctxlogrus.Extract(ctx).WithFields(log.Fields{
+ log.FromContext(ctx).WithFields(logrus.Fields{
"GlRepository": req.GetRepository().GetGlRepository(),
"GitConfigOptions": req.GitConfigOptions,
"GitProtocol": req.GitProtocol,
@@ -60,7 +60,7 @@ func (s *server) SSHUploadPack(stream gitalypb.SSHService_SSHUploadPackServer) e
if errSend := stream.Send(&gitalypb.SSHUploadPackResponse{
ExitStatus: &gitalypb.ExitStatus{Value: int32(status)},
}); errSend != nil {
- ctxlogrus.Extract(ctx).WithError(errSend).Error("send final status code")
+ log.FromContext(ctx).WithError(errSend).Error("send final status code")
}
return structerr.NewInternal("%w", err)
@@ -115,7 +115,7 @@ func (s *server) sshUploadPack(rpcContext context.Context, req sshUploadPackRequ
stats, errIgnore := stats.ParsePackfileNegotiation(pr)
negotiation = &stats
if errIgnore != nil {
- ctxlogrus.Extract(ctx).WithError(errIgnore).Debug("failed parsing packfile negotiation")
+ log.FromContext(ctx).WithError(errIgnore).Debug("failed parsing packfile negotiation")
return
}
stats.UpdateMetrics(s.packfileNegotiationMetrics)
@@ -179,7 +179,7 @@ func (s *server) sshUploadPack(rpcContext context.Context, req sshUploadPackRequ
return nil, status, fmt.Errorf("cmd wait: %w, stderr: %q", err, stderrBuilder.String())
}
- ctxlogrus.Extract(ctx).WithField("response_bytes", stdoutCounter.N).Info("request details")
+ log.FromContext(ctx).WithField("response_bytes", stdoutCounter.N).Info("request details")
return nil, 0, nil
}
diff --git a/internal/gitaly/storage/counter/counter.go b/internal/gitaly/storage/counter/counter.go
index 6fd0dc694..66a19b054 100644
--- a/internal/gitaly/storage/counter/counter.go
+++ b/internal/gitaly/storage/counter/counter.go
@@ -10,11 +10,11 @@ import (
"time"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/dontpanic"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage/walk"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// RepositoryCounter provides metrics with a count of repositories present
@@ -61,7 +61,7 @@ func (c *RepositoryCounter) Collect(metrics chan<- prometheus.Metric) {
func (c *RepositoryCounter) StartCountingRepositories(
ctx context.Context,
locator storage.Locator,
- logger logrus.FieldLogger,
+ logger log.Logger,
) {
dontpanic.Go(logger, func() {
c.countRepositories(ctx, locator, logger)
@@ -71,7 +71,7 @@ func (c *RepositoryCounter) StartCountingRepositories(
func (c *RepositoryCounter) countRepositories(
ctx context.Context,
locator storage.Locator,
- logger logrus.FieldLogger,
+ logger log.Logger,
) {
defer func() {
c.suppressMetric.Store(false)
diff --git a/internal/gitaly/storage/storagemgr/partition_manager.go b/internal/gitaly/storage/storagemgr/partition_manager.go
index 9ff3e2f72..ccf5e368e 100644
--- a/internal/gitaly/storage/storagemgr/partition_manager.go
+++ b/internal/gitaly/storage/storagemgr/partition_manager.go
@@ -12,13 +12,13 @@ import (
"sync"
"github.com/dgraph-io/badger/v4"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/housekeeping"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/safe"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
)
@@ -51,7 +51,7 @@ type storageManager struct {
// mu synchronizes access to the fields of storageManager.
mu sync.Mutex
// logger handles all logging for storageManager.
- logger logrus.FieldLogger
+ logger log.Logger
// path is the absolute path to the storage's root.
path string
// repoFactory is a factory type that builds localrepo instances for this storage.
@@ -180,7 +180,7 @@ func NewPartitionManager(
cmdFactory git.CommandFactory,
housekeepingManager housekeeping.Manager,
localRepoFactory localrepo.Factory,
- logger logrus.FieldLogger,
+ logger log.Logger,
) (*PartitionManager, error) {
storages := make(map[string]*storageManager, len(configuredStorages))
for _, storage := range configuredStorages {
diff --git a/internal/gitaly/storage/storagemgr/transaction_manager.go b/internal/gitaly/storage/storagemgr/transaction_manager.go
index 6e480b692..af0174b1f 100644
--- a/internal/gitaly/storage/storagemgr/transaction_manager.go
+++ b/internal/gitaly/storage/storagemgr/transaction_manager.go
@@ -18,13 +18,13 @@ import (
"sync"
"github.com/dgraph-io/badger/v4"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/housekeeping"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/localrepo"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/updateref"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/repoutil"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/safe"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -263,7 +263,7 @@ func (mgr *TransactionManager) Begin(ctx context.Context, opts TransactionOption
defer func() {
if returnedErr != nil {
if err := txn.finish(); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Error("failed finishing unsuccessful transaction begin")
+ log.FromContext(ctx).WithError(err).Error("failed finishing unsuccessful transaction begin")
}
}
}()
@@ -1363,7 +1363,7 @@ func (mgr *TransactionManager) prepareReferenceTransaction(ctx context.Context,
// We ask housekeeping to cleanup stale reference locks. We don't add a grace period, because
// transaction manager is the only process which writes into the repository, so it is safe
// to delete these locks.
- if err := mgr.housekeepingManager.CleanStaleData(ctx, ctxlogrus.Extract(ctx), mgr.repository, housekeeping.OnlyStaleReferenceLockCleanup(0)); err != nil {
+ if err := mgr.housekeepingManager.CleanStaleData(ctx, log.FromContext(ctx), mgr.repository, housekeeping.OnlyStaleReferenceLockCleanup(0)); err != nil {
return nil, fmt.Errorf("running reflock cleanup: %w", err)
}
diff --git a/internal/gitaly/transaction/manager.go b/internal/gitaly/transaction/manager.go
index 6ce6e05e2..0ba4312aa 100644
--- a/internal/gitaly/transaction/manager.go
+++ b/internal/gitaly/transaction/manager.go
@@ -6,12 +6,12 @@ import (
"fmt"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/prometheus/client_golang/prometheus"
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/backchannel"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/client"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/transaction/txinfo"
"gitlab.com/gitlab-org/gitaly/v16/internal/transaction/voting"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -175,6 +175,6 @@ func (m *PoolManager) Stop(ctx context.Context, tx txinfo.Transaction) error {
return nil
}
-func (m *PoolManager) log(ctx context.Context) logrus.FieldLogger {
- return ctxlogrus.Extract(ctx).WithField("component", "transaction.PoolManager")
+func (m *PoolManager) log(ctx context.Context) log.Logger {
+ return log.FromContext(ctx).WithField("component", "transaction.PoolManager")
}
diff --git a/internal/gitlab/client/gitlabnet.go b/internal/gitlab/client/gitlabnet.go
index 127797d94..bde1a6f8f 100644
--- a/internal/gitlab/client/gitlabnet.go
+++ b/internal/gitlab/client/gitlabnet.go
@@ -12,6 +12,7 @@ import (
"github.com/golang-jwt/jwt/v5"
"github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
const (
@@ -29,7 +30,7 @@ type ErrorResponse struct {
//nolint:revive // This is unintentionally missing documentation.
type GitlabNetClient struct {
- logger logrus.FieldLogger
+ logger log.Logger
httpClient *HTTPClient
user string
password string
@@ -52,7 +53,7 @@ func (e *APIError) Error() string {
//nolint:revive // This is unintentionally missing documentation.
func NewGitlabNetClient(
- logger logrus.FieldLogger,
+ logger log.Logger,
user,
password,
secret string,
diff --git a/internal/gitlab/http_client.go b/internal/gitlab/http_client.go
index c00efca85..99bbb88f8 100644
--- a/internal/gitlab/http_client.go
+++ b/internal/gitlab/http_client.go
@@ -13,10 +13,10 @@ import (
"strings"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
gitalycfgprom "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config/prometheus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitlab/client"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/prometheus/metrics"
"gitlab.com/gitlab-org/gitaly/v16/internal/version"
)
@@ -27,12 +27,12 @@ var glIDRegex = regexp.MustCompile(`\A[0-9]+\z`)
type HTTPClient struct {
*client.GitlabNetClient
latencyMetric metrics.HistogramVec
- logger logrus.FieldLogger
+ logger log.Logger
}
// NewHTTPClient creates an HTTP client to talk to the Rails internal API
func NewHTTPClient(
- logger logrus.FieldLogger,
+ logger log.Logger,
gitlabCfg config.Gitlab,
tlsCfg config.TLS,
promCfg gitalycfgprom.Config,
diff --git a/internal/grpc/backchannel/backchannel.go b/internal/grpc/backchannel/backchannel.go
index 627a492d2..f5cbe05bf 100644
--- a/internal/grpc/backchannel/backchannel.go
+++ b/internal/grpc/backchannel/backchannel.go
@@ -33,14 +33,14 @@ import (
"sync"
"github.com/hashicorp/yamux"
- "github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// magicBytes are sent by the client to server to identify as a multiplexing aware client.
var magicBytes = []byte("backchannel")
// muxConfig returns a new config to use with the multiplexing session.
-func muxConfig(logger logrus.FieldLogger, cfg Configuration) *yamux.Config {
+func muxConfig(logger log.Logger, cfg Configuration) *yamux.Config {
yamuxCfg := yamux.DefaultConfig()
yamuxCfg.Logger = logger
yamuxCfg.LogOutput = nil
diff --git a/internal/grpc/backchannel/backchannel_example_test.go b/internal/grpc/backchannel/backchannel_example_test.go
index 0bc341e6e..23d2adb68 100644
--- a/internal/grpc/backchannel/backchannel_example_test.go
+++ b/internal/grpc/backchannel/backchannel_example_test.go
@@ -8,6 +8,7 @@ import (
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/backchannel"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/listenmux"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
@@ -106,7 +107,7 @@ func Example() {
// Gitaly responding to a non-multiplexed client
}
-func invokeWithMuxedClient(logger *logrus.Entry, address string) error {
+func invokeWithMuxedClient(logger log.Logger, address string) error {
// clientHandshaker's ClientHandshake gets called on each established connection. The Server returned by the
// ServerFactory is started on Praefect's end of the connection, which Gitaly can call.
clientHandshaker := backchannel.NewClientHandshaker(logger, func() backchannel.Server {
diff --git a/internal/grpc/backchannel/client.go b/internal/grpc/backchannel/client.go
index f6f3d0663..d3c5c7fc2 100644
--- a/internal/grpc/backchannel/client.go
+++ b/internal/grpc/backchannel/client.go
@@ -7,7 +7,7 @@ import (
"time"
"github.com/hashicorp/yamux"
- "github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"google.golang.org/grpc/credentials"
)
@@ -50,14 +50,14 @@ func DefaultConfiguration() Configuration {
// ClientHandshaker implements the client side handshake of the multiplexed connection.
type ClientHandshaker struct {
- logger logrus.FieldLogger
+ logger log.Logger
serverFactory ServerFactory
cfg Configuration
}
// NewClientHandshaker returns a new client side implementation of the backchannel. The provided
// logger is used to log multiplexing errors.
-func NewClientHandshaker(logger logrus.FieldLogger, serverFactory ServerFactory, cfg Configuration) ClientHandshaker {
+func NewClientHandshaker(logger log.Logger, serverFactory ServerFactory, cfg Configuration) ClientHandshaker {
return ClientHandshaker{logger: logger, serverFactory: serverFactory, cfg: cfg}
}
@@ -71,7 +71,7 @@ func (ch ClientHandshaker) ClientHandshake(tc credentials.TransportCredentials)
type clientHandshake struct {
credentials.TransportCredentials
serverFactory ServerFactory
- logger logrus.FieldLogger
+ logger log.Logger
cfg Configuration
}
diff --git a/internal/grpc/backchannel/server.go b/internal/grpc/backchannel/server.go
index 4e815e07f..4eeb99701 100644
--- a/internal/grpc/backchannel/server.go
+++ b/internal/grpc/backchannel/server.go
@@ -8,7 +8,7 @@ import (
"net"
"github.com/hashicorp/yamux"
- "github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/credentials/insecure"
@@ -73,7 +73,7 @@ func withSessionInfo(authInfo credentials.AuthInfo, id ID, muxSession *yamux.Ses
// ServerHandshaker implements the server side handshake of the multiplexed connection.
type ServerHandshaker struct {
registry *Registry
- logger logrus.FieldLogger
+ logger log.Logger
dialOpts []grpc.DialOption
}
@@ -85,7 +85,7 @@ func (s *ServerHandshaker) Magic() string { return string(magicBytes) }
// are handshaked prior to initializing the multiplexing session. The Registry is used to store the backchannel connections.
// DialOptions can be used to set custom dial options for the backchannel connections. They must not contain a dialer or
// transport credentials as those set by the handshaker.
-func NewServerHandshaker(logger logrus.FieldLogger, reg *Registry, dialOpts []grpc.DialOption) *ServerHandshaker {
+func NewServerHandshaker(logger log.Logger, reg *Registry, dialOpts []grpc.DialOption) *ServerHandshaker {
return &ServerHandshaker{registry: reg, logger: logger, dialOpts: dialOpts}
}
diff --git a/internal/grpc/dnsresolver/builder.go b/internal/grpc/dnsresolver/builder.go
index 810a68ab8..69a7d2346 100644
--- a/internal/grpc/dnsresolver/builder.go
+++ b/internal/grpc/dnsresolver/builder.go
@@ -5,8 +5,8 @@ import (
"strings"
"time"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/backoff"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"google.golang.org/grpc/resolver"
)
@@ -31,7 +31,7 @@ type BuilderConfig struct {
// LookupTimeout determines the timeout of underlying DNS query.
LookupTimeout time.Duration
// Logger defines a logger for logging internal activities
- Logger logrus.FieldLogger
+ Logger log.Logger
// Backoff defines the backoff strategy when the resolver fails to resolve or pushes new
// state to client connection
Backoff backoff.Strategy
diff --git a/internal/grpc/dnsresolver/resolver.go b/internal/grpc/dnsresolver/resolver.go
index 01faa1f81..28396582b 100644
--- a/internal/grpc/dnsresolver/resolver.go
+++ b/internal/grpc/dnsresolver/resolver.go
@@ -6,14 +6,14 @@ import (
"sync"
"time"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/backoff"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"google.golang.org/grpc/resolver"
)
type dnsResolver struct {
- logger *logrus.Entry
+ logger log.Logger
retry backoff.Strategy
ctx context.Context
diff --git a/internal/grpc/middleware/cache/cache.go b/internal/grpc/middleware/cache/cache.go
index ad06647a7..b9d5474ba 100644
--- a/internal/grpc/middleware/cache/cache.go
+++ b/internal/grpc/middleware/cache/cache.go
@@ -6,14 +6,14 @@ import (
"strings"
"sync"
- "github.com/sirupsen/logrus"
diskcache "gitlab.com/gitlab-org/gitaly/v16/internal/cache"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/protoregistry"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"google.golang.org/grpc"
"google.golang.org/protobuf/proto"
)
-func methodErrLogger(logger logrus.FieldLogger, method string) func(error) {
+func methodErrLogger(logger log.Logger, method string) func(error) {
return func(err error) {
countMethodErr(method)
logger.WithField("full_method_name", method).Error(err)
@@ -42,7 +42,7 @@ func shouldInvalidate(mi protoregistry.MethodInfo) bool {
// StreamInvalidator will invalidate any mutating RPC that targets a
// repository in a gRPC stream based RPC
-func StreamInvalidator(ci diskcache.Invalidator, reg *protoregistry.Registry, logger logrus.FieldLogger) grpc.StreamServerInterceptor {
+func StreamInvalidator(ci diskcache.Invalidator, reg *protoregistry.Registry, logger log.Logger) grpc.StreamServerInterceptor {
return func(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
if shouldIgnore(reg, info.FullMethod) {
return handler(srv, ss)
@@ -69,7 +69,7 @@ func StreamInvalidator(ci diskcache.Invalidator, reg *protoregistry.Registry, lo
// UnaryInvalidator will invalidate any mutating RPC that targets a
// repository in a gRPC unary RPC
-func UnaryInvalidator(ci diskcache.Invalidator, reg *protoregistry.Registry, logger logrus.FieldLogger) grpc.UnaryServerInterceptor {
+func UnaryInvalidator(ci diskcache.Invalidator, reg *protoregistry.Registry, logger log.Logger) grpc.UnaryServerInterceptor {
return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
if shouldIgnore(reg, info.FullMethod) {
return handler(ctx, req)
diff --git a/internal/grpc/middleware/customfieldshandler/customfields_handler_test.go b/internal/grpc/middleware/customfieldshandler/customfields_handler_test.go
index 60adabe47..f1a02b859 100644
--- a/internal/grpc/middleware/customfieldshandler/customfields_handler_test.go
+++ b/internal/grpc/middleware/customfieldshandler/customfields_handler_test.go
@@ -25,10 +25,10 @@ import (
"google.golang.org/grpc/test/bufconn"
)
-func createNewServer(t *testing.T, cfg config.Cfg, logger *logrus.Logger) *grpc.Server {
+func createNewServer(t *testing.T, cfg config.Cfg, logger log.Logger) *grpc.Server {
t.Helper()
- logrusEntry := logrus.NewEntry(logger).WithField("test", t.Name())
+ logrusEntry := logger.WithField("test", t.Name())
opts := []grpc.ServerOption{
grpc.ChainStreamInterceptor(
diff --git a/internal/grpc/middleware/panichandler/panic_handler.go b/internal/grpc/middleware/panichandler/panic_handler.go
index 089dfcc79..de5e56249 100644
--- a/internal/grpc/middleware/panichandler/panic_handler.go
+++ b/internal/grpc/middleware/panichandler/panic_handler.go
@@ -4,6 +4,7 @@ import (
"context"
"github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
@@ -17,7 +18,7 @@ func toPanicError(grpcMethodName string, r interface{}) error {
}
// UnaryPanicHandler creates a new unary server interceptor that handles panics.
-func UnaryPanicHandler(logger logrus.FieldLogger) grpc.UnaryServerInterceptor {
+func UnaryPanicHandler(logger log.Logger) grpc.UnaryServerInterceptor {
return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
defer handleCrash(logger, info.FullMethod, func(grpcMethodName string, r interface{}) {
err = toPanicError(grpcMethodName, r)
@@ -28,7 +29,7 @@ func UnaryPanicHandler(logger logrus.FieldLogger) grpc.UnaryServerInterceptor {
}
// StreamPanicHandler creates a new stream server interceptor that handles panics.
-func StreamPanicHandler(logger logrus.FieldLogger) grpc.StreamServerInterceptor {
+func StreamPanicHandler(logger log.Logger) grpc.StreamServerInterceptor {
return func(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) (err error) {
defer handleCrash(logger, info.FullMethod, func(grpcMethodName string, r interface{}) {
err = toPanicError(grpcMethodName, r)
@@ -45,7 +46,7 @@ func InstallPanicHandler(handler PanicHandler) {
additionalHandlers = append(additionalHandlers, handler)
}
-func handleCrash(logger logrus.FieldLogger, grpcMethodName string, handler PanicHandler) {
+func handleCrash(logger log.Logger, grpcMethodName string, handler PanicHandler) {
if r := recover(); r != nil {
logger.WithFields(logrus.Fields{
"error": r,
diff --git a/internal/grpc/sidechannel/conn.go b/internal/grpc/sidechannel/conn.go
index e76496ea9..7e8830bd8 100644
--- a/internal/grpc/sidechannel/conn.go
+++ b/internal/grpc/sidechannel/conn.go
@@ -6,9 +6,9 @@ import (
"io"
"net"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/git/pktline"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/client"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/streamio"
"google.golang.org/grpc"
)
@@ -186,7 +186,7 @@ func (cc *ClientConn) CloseWrite() error {
// Dial configures the dialer to establish a Gitaly backchannel connection instead of a regular gRPC connection. It
// also injects sr as a sidechannel registry, so that Gitaly can establish sidechannels back to the client.
-func Dial(ctx context.Context, registry *Registry, logger logrus.FieldLogger, rawAddress string, connOpts []grpc.DialOption) (*grpc.ClientConn, error) {
+func Dial(ctx context.Context, registry *Registry, logger log.Logger, rawAddress string, connOpts []grpc.DialOption) (*grpc.ClientConn, error) {
clientHandshaker := NewClientHandshaker(logger, registry)
return client.Dial(ctx, rawAddress, client.WithGrpcOptions(connOpts), client.WithHandshaker(clientHandshaker))
}
diff --git a/internal/grpc/sidechannel/proxy.go b/internal/grpc/sidechannel/proxy.go
index 68632a334..f8ca329ff 100644
--- a/internal/grpc/sidechannel/proxy.go
+++ b/internal/grpc/sidechannel/proxy.go
@@ -5,14 +5,14 @@ import (
"fmt"
"io"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/metadata"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"google.golang.org/grpc"
grpcMetadata "google.golang.org/grpc/metadata"
)
// NewUnaryProxy creates a gRPC client middleware that proxies sidechannels.
-func NewUnaryProxy(registry *Registry, log logrus.FieldLogger) grpc.UnaryClientInterceptor {
+func NewUnaryProxy(registry *Registry, log log.Logger) grpc.UnaryClientInterceptor {
return func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) (err error) {
if !hasSidechannelMetadata(ctx) {
return invoker(ctx, method, req, reply, cc, opts...)
@@ -37,7 +37,7 @@ func NewUnaryProxy(registry *Registry, log logrus.FieldLogger) grpc.UnaryClientI
}
// NewStreamProxy creates a gRPC client middleware that proxies sidechannels.
-func NewStreamProxy(registry *Registry, log logrus.FieldLogger) grpc.StreamClientInterceptor {
+func NewStreamProxy(registry *Registry, log log.Logger) grpc.StreamClientInterceptor {
return func(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) {
if !hasSidechannelMetadata(ctx) {
return streamer(ctx, desc, cc, method, opts...)
@@ -63,7 +63,7 @@ func NewStreamProxy(registry *Registry, log logrus.FieldLogger) grpc.StreamClien
type streamWrapper struct {
grpc.ClientStream
waiter *Waiter
- log logrus.FieldLogger
+ log log.Logger
}
func (sw *streamWrapper) RecvMsg(m interface{}) (err error) {
diff --git a/internal/grpc/sidechannel/sidechannel.go b/internal/grpc/sidechannel/sidechannel.go
index aff38728c..dee78044f 100644
--- a/internal/grpc/sidechannel/sidechannel.go
+++ b/internal/grpc/sidechannel/sidechannel.go
@@ -9,10 +9,10 @@ import (
"strconv"
"time"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/backchannel"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/client"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/listenmux"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/tracing"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
@@ -136,7 +136,7 @@ func NewServerHandshaker(registry *Registry) *ServerHandshaker {
// NewClientHandshaker is used to enable sidechannel support on outbound
// gRPC connections.
-func NewClientHandshaker(logger logrus.FieldLogger, registry *Registry) client.Handshaker {
+func NewClientHandshaker(logger log.Logger, registry *Registry) client.Handshaker {
cfg := backchannel.DefaultConfiguration()
// If a client hangs up while the server is writing data to it then the
// server will block for 5 minutes by default before erroring out. This
diff --git a/internal/helper/perm/fix_permissions.go b/internal/helper/perm/fix_permissions.go
index 330ee84ee..d80abd4ca 100644
--- a/internal/helper/perm/fix_permissions.go
+++ b/internal/helper/perm/fix_permissions.go
@@ -5,8 +5,8 @@ import (
"os"
"path/filepath"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// FixDirectoryPermissions does a recursive directory walk to look for
@@ -20,7 +20,7 @@ func FixDirectoryPermissions(ctx context.Context, path string) error {
func fixDirectoryPermissions(ctx context.Context, path string, retriedPaths map[string]struct{}) error {
return filepath.Walk(path, func(path string, info os.FileInfo, errIncoming error) error {
if info == nil {
- ctxlogrus.Extract(ctx).WithFields(logrus.Fields{
+ log.FromContext(ctx).WithFields(logrus.Fields{
"path": path,
}).WithError(errIncoming).Error("nil FileInfo in perm.fixDirectoryPermissions")
diff --git a/internal/limiter/adaptive_calculator.go b/internal/limiter/adaptive_calculator.go
index 94e9dc9a6..bb7088527 100644
--- a/internal/limiter/adaptive_calculator.go
+++ b/internal/limiter/adaptive_calculator.go
@@ -9,8 +9,8 @@ import (
"time"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
const (
@@ -52,7 +52,7 @@ type ResourceWatcher interface {
type AdaptiveCalculator struct {
sync.Mutex
- logger logrus.FieldLogger
+ logger log.Logger
// started tells whether the calculator already starts. One calculator is allowed to be used once.
started bool
// calibration is the time duration until the next calibration event.
@@ -79,7 +79,7 @@ type AdaptiveCalculator struct {
// NewAdaptiveCalculator constructs a AdaptiveCalculator object. It's the responsibility of the caller to validate
// the correctness of input AdaptiveLimiter and ResourceWatcher.
-func NewAdaptiveCalculator(calibration time.Duration, logger logrus.FieldLogger, limits []AdaptiveLimiter, watchers []ResourceWatcher) *AdaptiveCalculator {
+func NewAdaptiveCalculator(calibration time.Duration, logger log.Logger, limits []AdaptiveLimiter, watchers []ResourceWatcher) *AdaptiveCalculator {
watcherTimeouts := map[ResourceWatcher]*atomic.Int32{}
for _, watcher := range watchers {
watcherTimeouts[watcher] = &atomic.Int32{}
diff --git a/internal/log/configure.go b/internal/log/configure.go
new file mode 100644
index 000000000..691ffa7b3
--- /dev/null
+++ b/internal/log/configure.go
@@ -0,0 +1,135 @@
+package log //nolint:gitaly-linters // Importing testhelper creates a cyclic dependency.
+
+import (
+ "fmt"
+ "io"
+ "os"
+
+ grpcmwlogrus "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus"
+ "github.com/sirupsen/logrus"
+)
+
+const (
+ // GitalyLogDirEnvKey defines the environment variable used to specify the Gitaly log directory
+ GitalyLogDirEnvKey = "GITALY_LOG_DIR"
+)
+
+// SkipReplacingGlobalLoggers will cause `Configure()` to skip replacing global loggers. This is mostly a hack: command
+// line applications are expected to call `log.Configure()` in their subcommand actions, and that should indeed always
+// replace global loggers, as well. But when running tests, we invoke the subcommand actions multiple times, which is
+// thus re-configuring the logger repeatedly. Because global logger are per definition a global shared resource, the
+// consequence is that we might end up replacing the global loggers while tests are using them, and this race rightfully
+// gets detected by Go's race detector.
+//
+// This variable should thus only be set in the testhelper's setup routines such that we configure the global logger a
+// single time for all of our tests, only.
+var SkipReplacingGlobalLoggers bool
+
+// Config contains logging configuration values
+type Config struct {
+ Dir string `toml:"dir,omitempty" json:"dir"`
+ Format string `toml:"format,omitempty" json:"format"`
+ Level string `toml:"level,omitempty" json:"level"`
+}
+
+// Configure configures the default and gRPC loggers. The gRPC logger's log level will be mapped in order to decrease
+// its default verbosity. Returns the configured default logger that would also be returned by `Default()`.
+func Configure(out io.Writer, format string, level string, hooks ...logrus.Hook) (Logger, error) {
+ l := logrus.New() //nolint:forbidigo
+
+ if err := configure(l, out, format, level, hooks...); err != nil {
+ return nil, fmt.Errorf("configuring logger: %w", err)
+ }
+
+ if !SkipReplacingGlobalLoggers {
+ // Replace the logrus standar logger. While we shouldn't ever be using it in our own codebase, there
+ // will very likely be cases where dependencies use it.
+ //
+ //nolint:forbidigo
+ if err := configure(logrus.StandardLogger(), out, format, level, hooks...); err != nil {
+ return nil, fmt.Errorf("configuring global logrus logger: %w", err)
+ }
+
+ // We replace the gRPC logger with a custom one because the default one is too chatty.
+ grpcLogger := logrus.New() //nolint:forbidigo
+
+ if err := configure(grpcLogger, out, format, mapGRPCLogLevel(level), hooks...); err != nil {
+ return nil, fmt.Errorf("configuring global gRPC logger: %w", err)
+ }
+
+ grpcmwlogrus.ReplaceGrpcLogger(grpcLogger.WithField("pid", os.Getpid()))
+ }
+
+ return FromLogrusEntry(l.WithField("pid", os.Getpid())), nil
+}
+
+// ConfigureCommand configures the logging infrastructure such that it can be used with simple one-off commands. This
+// configuration is supposed to be opinionated and ensures that all one-off commands behave in a sane way:
+//
+// - The server configuration does not influence logs generated by the command. This is done intentionally as you don't
+// want to force administrators to adapt the server configuration to influence normal commands.
+//
+// - The output always goes to stderr such that output that is supposed to be consumed can be separated from log
+// messages.
+//
+// - The output uses text format as it is supposed to be human-readable, not machine-readable.
+//
+// - The default log level is set to "error" such that we don't generate tons of log messages that are ultimately
+// uninteresting.
+//
+// Servers and commands with special requirements should instead use `Configure()`.
+func ConfigureCommand() Logger {
+ logger, err := Configure(os.Stderr, "text", "error")
+ if err != nil {
+ // The configuration can't really return an error as we invoke it with known-good parameters.
+ panic(err)
+ }
+
+ return logger
+}
+
+func configure(logger *logrus.Logger, out io.Writer, format, level string, hooks ...logrus.Hook) error {
+ var formatter logrus.Formatter
+ switch format {
+ case "json":
+ formatter = UTCJsonFormatter()
+ case "", "text":
+ formatter = UTCTextFormatter()
+ default:
+ return fmt.Errorf("invalid logger format %q", format)
+ }
+
+ logrusLevel, err := logrus.ParseLevel(level)
+ if err != nil {
+ logrusLevel = logrus.InfoLevel
+ }
+
+ logger.Out = out
+ logger.SetLevel(logrusLevel)
+ logger.Formatter = formatter
+ for _, hook := range hooks {
+ logger.Hooks.Add(hook)
+ }
+
+ return nil
+}
+
+func mapGRPCLogLevel(level string) string {
+ // Honor grpc-go's debug settings: https://github.com/grpc/grpc-go#how-to-turn-on-logging
+ switch os.Getenv("GRPC_GO_LOG_SEVERITY_LEVEL") {
+ case "ERROR", "error":
+ return "error"
+ case "WARNING", "warning":
+ return "warning"
+ case "INFO", "info":
+ return "info"
+ }
+
+ // grpc-go is too verbose at level 'info'. So when config.toml requests
+ // level info, we tell grpc-go to log at 'warn' instead.
+ if level == "info" {
+ return "warning"
+ }
+
+ return level
+}
diff --git a/internal/log/logger_test.go b/internal/log/configure_test.go
index db2f0fe2e..db2f0fe2e 100644
--- a/internal/log/logger_test.go
+++ b/internal/log/configure_test.go
diff --git a/internal/log/customfields.go b/internal/log/customfields.go
index 64bb59566..38874e15c 100644
--- a/internal/log/customfields.go
+++ b/internal/log/customfields.go
@@ -1,4 +1,4 @@
-package log //nolint:gitaly-linters // Importing testhelper creates a cyclic dependency.
+package log
import (
"context"
diff --git a/internal/log/formatter.go b/internal/log/formatter.go
new file mode 100644
index 000000000..bb45cf601
--- /dev/null
+++ b/internal/log/formatter.go
@@ -0,0 +1,31 @@
+package log
+
+import "github.com/sirupsen/logrus"
+
+const (
+ // LogTimestampFormat defines the timestamp format in log files
+ LogTimestampFormat = "2006-01-02T15:04:05.000"
+ // LogTimestampFormatUTC defines the utc timestamp format in log files
+ LogTimestampFormatUTC = "2006-01-02T15:04:05.000Z"
+)
+
+type utcFormatter struct {
+ logrus.Formatter
+}
+
+func (u utcFormatter) Format(e *logrus.Entry) ([]byte, error) {
+ e.Time = e.Time.UTC()
+ return u.Formatter.Format(e)
+}
+
+// UTCJsonFormatter returns a Formatter that formats a logrus Entry's as json and converts the time
+// field into UTC
+func UTCJsonFormatter() logrus.Formatter {
+ return &utcFormatter{Formatter: &logrus.JSONFormatter{TimestampFormat: LogTimestampFormatUTC}}
+}
+
+// UTCTextFormatter returns a Formatter that formats a logrus Entry's as text and converts the time
+// field into UTC
+func UTCTextFormatter() logrus.Formatter {
+ return &utcFormatter{Formatter: &logrus.TextFormatter{TimestampFormat: LogTimestampFormatUTC}}
+}
diff --git a/internal/log/logger.go b/internal/log/logger.go
index d7a60946d..49411c7a7 100644
--- a/internal/log/logger.go
+++ b/internal/log/logger.go
@@ -1,160 +1,42 @@
package log
import (
- "fmt"
- "io"
- "os"
+ "context"
- grpcmwlogrus "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus"
+ "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
)
-const (
- // GitalyLogDirEnvKey defines the environment variable used to specify the Gitaly log directory
- GitalyLogDirEnvKey = "GITALY_LOG_DIR"
- // LogTimestampFormat defines the timestamp format in log files
- LogTimestampFormat = "2006-01-02T15:04:05.000"
- // LogTimestampFormatUTC defines the utc timestamp format in log files
- LogTimestampFormatUTC = "2006-01-02T15:04:05.000Z"
-)
-
-type utcFormatter struct {
- logrus.Formatter
-}
-
-func (u utcFormatter) Format(e *logrus.Entry) ([]byte, error) {
- e.Time = e.Time.UTC()
- return u.Formatter.Format(e)
-}
-
-// UTCJsonFormatter returns a Formatter that formats a logrus Entry's as json and converts the time
-// field into UTC
-func UTCJsonFormatter() logrus.Formatter {
- return &utcFormatter{Formatter: &logrus.JSONFormatter{TimestampFormat: LogTimestampFormatUTC}}
-}
-
-// UTCTextFormatter returns a Formatter that formats a logrus Entry's as text and converts the time
-// field into UTC
-func UTCTextFormatter() logrus.Formatter {
- return &utcFormatter{Formatter: &logrus.TextFormatter{TimestampFormat: LogTimestampFormatUTC}}
+// Logger is the logging type used by Gitaly.
+type Logger interface {
+ logrus.FieldLogger
}
-// SkipReplacingGlobalLoggers will cause `Configure()` to skip replacing global loggers. This is mostly a hack: command
-// line applications are expected to call `log.Configure()` in their subcommand actions, and that should indeed always
-// replace global loggers, as well. But when running tests, we invoke the subcommand actions multiple times, which is
-// thus re-configuring the logger repeatedly. Because global logger are per definition a global shared resource, the
-// consequence is that we might end up replacing the global loggers while tests are using them, and this race rightfully
-// gets detected by Go's race detector.
-//
-// This variable should thus only be set in the testhelper's setup routines such that we configure the global logger a
-// single time for all of our tests, only.
-var SkipReplacingGlobalLoggers bool
-
-// Config contains logging configuration values
-type Config struct {
- Dir string `toml:"dir,omitempty" json:"dir"`
- Format string `toml:"format,omitempty" json:"format"`
- Level string `toml:"level,omitempty" json:"level"`
+// LogrusLogger is an implementation of the Logger interface that is implemented via a `logrus.FieldLogger`.
+type LogrusLogger struct {
+ *logrus.Entry
}
-// Configure configures the default and gRPC loggers. The gRPC logger's log level will be mapped in order to decrease
-// its default verbosity. Returns the configured default logger that would also be returned by `Default()`.
-func Configure(out io.Writer, format string, level string, hooks ...logrus.Hook) (logrus.FieldLogger, error) {
- logger := logrus.New() //nolint:forbidigo
-
- if err := configure(logger, out, format, level, hooks...); err != nil {
- return nil, fmt.Errorf("configuring logger: %w", err)
- }
-
- if !SkipReplacingGlobalLoggers {
- // Replace the logrus standar logger. While we shouldn't ever be using it in our own codebase, there
- // will very likely be cases where dependencies use it.
- //
- //nolint:forbidigo
- if err := configure(logrus.StandardLogger(), out, format, level, hooks...); err != nil {
- return nil, fmt.Errorf("configuring global logrus logger: %w", err)
- }
-
- // We replace the gRPC logger with a custom one because the default one is too chatty.
- grpcLogger := logrus.New() //nolint:forbidigo
-
- if err := configure(grpcLogger, out, format, mapGRPCLogLevel(level), hooks...); err != nil {
- return nil, fmt.Errorf("configuring global gRPC logger: %w", err)
- }
-
- grpcmwlogrus.ReplaceGrpcLogger(grpcLogger.WithField("pid", os.Getpid()))
- }
-
- return logger.WithField("pid", os.Getpid()), nil
+// FromLogrusEntry constructs a new Gitaly-specific logger from a `logrus.Logger`.
+func FromLogrusEntry(entry *logrus.Entry) LogrusLogger {
+ return LogrusLogger{Entry: entry}
}
-// ConfigureCommand configures the logging infrastructure such that it can be used with simple one-off commands. This
-// configuration is supposed to be opinionated and ensures that all one-off commands behave in a sane way:
-//
-// - The server configuration does not influence logs generated by the command. This is done intentionally as you don't
-// want to force administrators to adapt the server configuration to influence normal commands.
-//
-// - The output always goes to stderr such that output that is supposed to be consumed can be separated from log
-// messages.
-//
-// - The output uses text format as it is supposed to be human-readable, not machine-readable.
-//
-// - The default log level is set to "error" such that we don't generate tons of log messages that are ultimately
-// uninteresting.
-//
-// Servers and commands with special requirements should instead use `Configure()`.
-func ConfigureCommand() logrus.FieldLogger {
- logger, err := Configure(os.Stderr, "text", "error")
- if err != nil {
- // The configuration can't really return an error as we invoke it with known-good parameters.
- panic(err)
- }
-
- return logger
+// ToContext injects the logger into the given context so that it can be retrieved via `FromContext()`.
+func (l LogrusLogger) ToContext(ctx context.Context) context.Context {
+ return ctxlogrus.ToContext(ctx, l.Entry)
}
-func configure(logger *logrus.Logger, out io.Writer, format, level string, hooks ...logrus.Hook) error {
- var formatter logrus.Formatter
- switch format {
- case "json":
- formatter = UTCJsonFormatter()
- case "", "text":
- formatter = UTCTextFormatter()
- default:
- return fmt.Errorf("invalid logger format %q", format)
- }
-
- logrusLevel, err := logrus.ParseLevel(level)
- if err != nil {
- logrusLevel = logrus.InfoLevel
+// FromContext extracts the logger from the context. If no logger has been injected then this will return a discarding
+// logger.
+func FromContext(ctx context.Context) LogrusLogger {
+ return LogrusLogger{
+ Entry: ctxlogrus.Extract(ctx),
}
-
- logger.Out = out
- logger.SetLevel(logrusLevel)
- logger.Formatter = formatter
- for _, hook := range hooks {
- logger.Hooks.Add(hook)
- }
-
- return nil
}
-func mapGRPCLogLevel(level string) string {
- // Honor grpc-go's debug settings: https://github.com/grpc/grpc-go#how-to-turn-on-logging
- switch os.Getenv("GRPC_GO_LOG_SEVERITY_LEVEL") {
- case "ERROR", "error":
- return "error"
- case "WARNING", "warning":
- return "warning"
- case "INFO", "info":
- return "info"
- }
-
- // grpc-go is too verbose at level 'info'. So when config.toml requests
- // level info, we tell grpc-go to log at 'warn' instead.
- if level == "info" {
- return "warning"
- }
-
- return level
+// AddFields adds the given log fields to the context so that it will be used by any context logger extracted via
+// `FromContext()`.
+func AddFields(ctx context.Context, fields logrus.Fields) {
+ ctxlogrus.AddFields(ctx, fields)
}
diff --git a/internal/log/middleware.go b/internal/log/middleware.go
index c258d5c83..cab888e87 100644
--- a/internal/log/middleware.go
+++ b/internal/log/middleware.go
@@ -6,7 +6,6 @@ import (
grpcmwlogging "github.com/grpc-ecosystem/go-grpc-middleware/logging"
grpcmwlogrus "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/env"
"google.golang.org/grpc"
@@ -81,7 +80,7 @@ func MessageProducer(mp grpcmwlogrus.MessageProducer, fieldsProducers ...FieldsP
}
type messageProducerHolder struct {
- logger *logrus.Entry
+ logger LogrusLogger
actual grpcmwlogrus.MessageProducer
format string
level logrus.Level
@@ -113,7 +112,7 @@ func PropagationMessageProducer(actual grpcmwlogrus.MessageProducer) grpcmwlogru
return
}
*mpp = messageProducerHolder{
- logger: ctxlogrus.Extract(ctx),
+ logger: FromContext(ctx),
actual: actual,
format: format,
level: level,
@@ -170,7 +169,7 @@ func (lh PerRPCLogHandler) HandleRPC(ctx context.Context, rs stats.RPCStats) {
// a logger we need to set logger manually into the context.
// It's needed because github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus.DefaultMessageProducer
// extracts logger from the context and use it to write the logs.
- ctx = ctxlogrus.ToContext(ctx, mpp.logger)
+ ctx = mpp.logger.ToContext(ctx)
mpp.actual(ctx, mpp.format, mpp.level, mpp.code, mpp.err, mpp.fields)
return
}
@@ -191,7 +190,7 @@ func UnaryLogDataCatcherServerInterceptor() grpc.UnaryServerInterceptor {
return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
mpp := messageProducerPropagationFrom(ctx)
if mpp != nil {
- mpp.fields = ctxlogrus.Extract(ctx).Data
+ mpp.fields = FromContext(ctx).Entry.Data
}
return handler(ctx, req)
}
@@ -204,7 +203,7 @@ func StreamLogDataCatcherServerInterceptor() grpc.StreamServerInterceptor {
ctx := ss.Context()
mpp := messageProducerPropagationFrom(ctx)
if mpp != nil {
- mpp.fields = ctxlogrus.Extract(ctx).Data
+ mpp.fields = FromContext(ctx).Entry.Data
}
return handler(srv, ss)
}
diff --git a/internal/praefect/coordinator.go b/internal/praefect/coordinator.go
index 58c30c469..4f1583ede 100644
--- a/internal/praefect/coordinator.go
+++ b/internal/praefect/coordinator.go
@@ -7,7 +7,6 @@ import (
"sync"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/prometheus/client_golang/prometheus"
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/featureflag"
@@ -17,6 +16,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/protoregistry"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/proxy"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/metrics"
@@ -252,7 +252,7 @@ func (c *Coordinator) Collect(metrics chan<- prometheus.Metric) {
}
func (c *Coordinator) directRepositoryScopedMessage(ctx context.Context, call grpcCall) (*proxy.StreamParameters, error) {
- ctxlogrus.AddFields(ctx, logrus.Fields{
+ log.AddFields(ctx, logrus.Fields{
"virtual_storage": call.targetRepo.StorageName,
"relative_path": call.targetRepo.RelativePath,
})
@@ -491,14 +491,14 @@ func (c *Coordinator) mutatorStreamParameters(ctx context.Context, call grpcCall
defer nodeErrors.Unlock()
nodeErrors.errByNode[secondary.Storage] = err
- ctxlogrus.Extract(ctx).WithError(err).
+ log.FromContext(ctx).WithError(err).
Error("proxying to secondary failed")
// Cancels failed node's voter in its current subtransaction.
// Also updates internal state of subtransaction to fail and
// release blocked voters if quorum becomes impossible.
if err := c.txMgr.CancelTransactionNodeVoter(transaction.ID(), secondary.Storage); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).
+ log.FromContext(ctx).WithError(err).
Error("canceling secondary voter failed")
}
@@ -544,8 +544,7 @@ func (c *Coordinator) mutatorStreamParameters(ctx context.Context, call grpcCall
continue
}
- ctxlogrus.
- Extract(ctx).
+ log.FromContext(ctx).
WithError(err).
Error("coordinator proxy stream finalizer failure")
}
@@ -590,7 +589,7 @@ func (c *Coordinator) maintenanceStreamParameters(ctx context.Context, call grpc
defer nodeErrors.Unlock()
nodeErrors.errByNode[node.Storage] = err
- ctxlogrus.Extract(ctx).WithField("gitaly_storage", node.Storage).WithError(err).Error("proxying maintenance RPC to node failed")
+ log.FromContext(ctx).WithField("gitaly_storage", node.Storage).WithError(err).Error("proxying maintenance RPC to node failed")
// We ignore any errors returned by nodes such that they all have a
// chance to finish their maintenance RPC in a best-effort strategy.
@@ -667,7 +666,7 @@ func streamParametersContext(ctx context.Context) context.Context {
func (c *Coordinator) StreamDirector(ctx context.Context, fullMethodName string, peeker proxy.StreamPeeker) (*proxy.StreamParameters, error) {
// For phase 1, we need to route messages based on the storage location
// to the appropriate Gitaly node.
- ctxlogrus.Extract(ctx).Debugf("Stream director received method %s", fullMethodName)
+ log.FromContext(ctx).Debugf("Stream director received method %s", fullMethodName)
mi, err := c.registry.LookupMethod(fullMethodName)
if err != nil {
@@ -952,7 +951,7 @@ func getUpdatedAndOutdatedSecondaries(
nodesByState := make(map[string][]string)
defer func() {
- ctxlogrus.Extract(ctx).
+ log.FromContext(ctx).
WithField("transaction.primary", route.Primary.Storage).
WithField("transaction.secondaries", nodesByState).
Info("transactional node states")
@@ -1071,18 +1070,18 @@ func (c *Coordinator) newRequestFinalizer(
ctx, cancel := context.WithTimeout(helper.SuppressCancellation(originalCtx), 30*time.Second)
defer cancel()
- log := ctxlogrus.Extract(ctx).WithFields(logrus.Fields{
+ logEntry := log.FromContext(ctx).WithFields(logrus.Fields{
"replication.cause": cause,
"replication.change": change,
"replication.primary": primary,
})
if len(updatedSecondaries) > 0 {
- log = log.WithField("replication.updated", updatedSecondaries)
+ logEntry = logEntry.WithField("replication.updated", updatedSecondaries)
}
if len(outdatedSecondaries) > 0 {
- log = log.WithField("replication.outdated", outdatedSecondaries)
+ logEntry = logEntry.WithField("replication.outdated", outdatedSecondaries)
}
- log.Info("queueing replication jobs")
+ logEntry.Info("queueing replication jobs")
switch change {
case datastore.UpdateRepo:
@@ -1101,7 +1100,7 @@ func (c *Coordinator) newRequestFinalizer(
return fmt.Errorf("rename repository: %w", err)
}
- ctxlogrus.Extract(ctx).WithError(err).Info("renamed repository does not have a store entry")
+ log.FromContext(ctx).WithError(err).Info("renamed repository does not have a store entry")
}
case datastore.CreateRepo:
repositorySpecificPrimariesEnabled := c.conf.Failover.ElectionStrategy == config.ElectionStrategyPerRepository
@@ -1148,7 +1147,7 @@ func (c *Coordinator) newRequestFinalizer(
g.Go(func() error {
if _, err := c.queue.Enqueue(ctx, event); err != nil {
if errors.As(err, &datastore.ReplicationEventExistsError{}) {
- ctxlogrus.Extract(ctx).WithError(err).Info("replication event queue already has similar entry")
+ log.FromContext(ctx).WithError(err).Info("replication event queue already has similar entry")
return nil
}
diff --git a/internal/praefect/datastore/collector.go b/internal/praefect/datastore/collector.go
index 5a33744b1..328ce8960 100644
--- a/internal/praefect/datastore/collector.go
+++ b/internal/praefect/datastore/collector.go
@@ -6,7 +6,7 @@ import (
"time"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore/glsql"
)
@@ -28,7 +28,7 @@ var (
// RepositoryStoreCollector collects metrics from the RepositoryStore.
type RepositoryStoreCollector struct {
- log logrus.FieldLogger
+ log log.Logger
db glsql.Querier
virtualStorages []string
timeout time.Duration
@@ -36,7 +36,7 @@ type RepositoryStoreCollector struct {
// NewRepositoryStoreCollector returns a new collector.
func NewRepositoryStoreCollector(
- log logrus.FieldLogger,
+ log log.Logger,
virtualStorages []string,
db glsql.Querier,
timeout time.Duration,
@@ -105,7 +105,7 @@ GROUP BY virtual_storage
// QueueDepthCollector collects metrics describing replication queue depths
type QueueDepthCollector struct {
- log logrus.FieldLogger
+ log log.Logger
timeout time.Duration
db glsql.Querier
}
@@ -116,7 +116,7 @@ func (q *QueueDepthCollector) Describe(ch chan<- *prometheus.Desc) {
}
// NewQueueDepthCollector returns a new QueueDepthCollector
-func NewQueueDepthCollector(log logrus.FieldLogger, db glsql.Querier, timeout time.Duration) *QueueDepthCollector {
+func NewQueueDepthCollector(log log.Logger, db glsql.Querier, timeout time.Duration) *QueueDepthCollector {
return &QueueDepthCollector{
log: log.WithField("component", "queue_depth_collector"),
timeout: timeout,
@@ -168,7 +168,7 @@ const (
// VerificationQueueDepthCollector collects the verification queue depth metric from the database.
type VerificationQueueDepthCollector struct {
- log logrus.FieldLogger
+ log log.Logger
timeout time.Duration
db glsql.Querier
verificationInterval time.Duration
@@ -176,7 +176,7 @@ type VerificationQueueDepthCollector struct {
}
// NewVerificationQueueDepthCollector returns a new VerificationQueueDepthCollector
-func NewVerificationQueueDepthCollector(log logrus.FieldLogger, db glsql.Querier, timeout, verificationInterval time.Duration, configuredStorages map[string][]string) *VerificationQueueDepthCollector {
+func NewVerificationQueueDepthCollector(log log.Logger, db glsql.Querier, timeout, verificationInterval time.Duration, configuredStorages map[string][]string) *VerificationQueueDepthCollector {
v := &VerificationQueueDepthCollector{
log: log.WithField("component", "verification_queue_depth_collector"),
timeout: timeout,
diff --git a/internal/praefect/datastore/listener.go b/internal/praefect/datastore/listener.go
index bf65f7c7e..54b9fa586 100644
--- a/internal/praefect/datastore/listener.go
+++ b/internal/praefect/datastore/listener.go
@@ -9,8 +9,8 @@ import (
"github.com/jackc/pgx/v5"
promclient "github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore/glsql"
)
@@ -106,12 +106,12 @@ func (mh metricsHandlerMiddleware) Disconnect(err error) {
type ResilientListener struct {
conf config.DB
ticker helper.Ticker
- logger logrus.FieldLogger
+ logger log.Logger
reconnectTotal *promclient.CounterVec
}
// NewResilientListener returns instance of the *ResilientListener.
-func NewResilientListener(conf config.DB, ticker helper.Ticker, logger logrus.FieldLogger) *ResilientListener {
+func NewResilientListener(conf config.DB, ticker helper.Ticker, logger log.Logger) *ResilientListener {
return &ResilientListener{
conf: conf,
ticker: ticker,
diff --git a/internal/praefect/datastore/storage_provider.go b/internal/praefect/datastore/storage_provider.go
index e61c5f822..bc6ffad43 100644
--- a/internal/praefect/datastore/storage_provider.go
+++ b/internal/praefect/datastore/storage_provider.go
@@ -10,8 +10,8 @@ import (
lru "github.com/hashicorp/golang-lru/v2"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/datastructure"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore/glsql"
)
@@ -44,12 +44,12 @@ type CachingConsistentStoragesGetter struct {
// access is access method to use: 0 - without caching; 1 - with caching.
access int32
// callbackLogger should be used only inside of the methods used as callbacks.
- callbackLogger logrus.FieldLogger
+ callbackLogger log.Logger
cacheAccessTotal *prometheus.CounterVec
}
// NewCachingConsistentStoragesGetter returns a ConsistentStoragesGetter that uses caching.
-func NewCachingConsistentStoragesGetter(logger logrus.FieldLogger, csg ConsistentStoragesGetter, virtualStorages []string) (*CachingConsistentStoragesGetter, error) {
+func NewCachingConsistentStoragesGetter(logger log.Logger, csg ConsistentStoragesGetter, virtualStorages []string) (*CachingConsistentStoragesGetter, error) {
cached := &CachingConsistentStoragesGetter{
csg: csg,
caches: make(map[string]*virtualStorageCache, len(virtualStorages)),
diff --git a/internal/praefect/datastore/storage_provider_test.go b/internal/praefect/datastore/storage_provider_test.go
index 4a907c5c1..17b1c0e52 100644
--- a/internal/praefect/datastore/storage_provider_test.go
+++ b/internal/praefect/datastore/storage_provider_test.go
@@ -9,13 +9,13 @@ import (
"sync"
"testing"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/prometheus/client_golang/prometheus/testutil"
"github.com/sirupsen/logrus"
"github.com/sirupsen/logrus/hooks/test"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v16/internal/datastructure"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore/glsql"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper/testdb"
@@ -32,7 +32,7 @@ func TestCachingStorageProvider_GetSyncedNodes(t *testing.T) {
require.NoError(t, rs.CreateRepository(ctx, 1, "unknown", "/repo/path", "replica-path", "g1", []string{"g2", "g3"}, nil, true, false))
- cache, err := NewCachingConsistentStoragesGetter(ctxlogrus.Extract(ctx), rs, []string{"vs"})
+ cache, err := NewCachingConsistentStoragesGetter(log.FromContext(ctx), rs, []string{"vs"})
require.NoError(t, err)
cache.Connected()
@@ -56,7 +56,7 @@ func TestCachingStorageProvider_GetSyncedNodes(t *testing.T) {
require.NoError(t, rs.CreateRepository(ctx, 1, "vs", "/repo/path", "replica-path", "g1", []string{"g2", "g3"}, nil, true, false))
- cache, err := NewCachingConsistentStoragesGetter(ctxlogrus.Extract(ctx), rs, []string{"vs"})
+ cache, err := NewCachingConsistentStoragesGetter(log.FromContext(ctx), rs, []string{"vs"})
require.NoError(t, err)
cache.Connected()
@@ -180,7 +180,7 @@ func TestCachingStorageProvider_GetSyncedNodes(t *testing.T) {
require.NoError(t, rs.CreateRepository(ctx, 1, "vs", "/repo/path/1", "replica-path-1", "g1", []string{"g2", "g3"}, nil, true, false))
require.NoError(t, rs.CreateRepository(ctx, 2, "vs", "/repo/path/2", "replica-path-2", "g1", []string{"g2"}, nil, true, false))
- cache, err := NewCachingConsistentStoragesGetter(ctxlogrus.Extract(ctx), rs, []string{"vs"})
+ cache, err := NewCachingConsistentStoragesGetter(log.FromContext(ctx), rs, []string{"vs"})
require.NoError(t, err)
cache.Connected()
@@ -230,7 +230,7 @@ func TestCachingStorageProvider_GetSyncedNodes(t *testing.T) {
require.NoError(t, rs.CreateRepository(ctx, 1, "vs", "/repo/path", "replica-path", "g1", []string{"g2", "g3"}, nil, true, false))
- cache, err := NewCachingConsistentStoragesGetter(ctxlogrus.Extract(ctx), rs, []string{"vs"})
+ cache, err := NewCachingConsistentStoragesGetter(log.FromContext(ctx), rs, []string{"vs"})
require.NoError(t, err)
cache.Connected()
@@ -266,7 +266,7 @@ func TestCachingStorageProvider_GetSyncedNodes(t *testing.T) {
require.NoError(t, rs.CreateRepository(ctx, 1, "vs", "/repo/path/1", "replica-path-1", "g1", nil, nil, true, false))
require.NoError(t, rs.CreateRepository(ctx, 2, "vs", "/repo/path/2", "replica-path-2", "g1", nil, nil, true, false))
- cache, err := NewCachingConsistentStoragesGetter(ctxlogrus.Extract(ctx), rs, []string{"vs"})
+ cache, err := NewCachingConsistentStoragesGetter(log.FromContext(ctx), rs, []string{"vs"})
require.NoError(t, err)
cache.Connected()
@@ -331,7 +331,7 @@ func TestCachingStorageProvider_GetSyncedNodes(t *testing.T) {
},
}
- cache, err := NewCachingConsistentStoragesGetter(ctxlogrus.Extract(ctx), mockRepositoryStore, []string{"storage-1", "storage-2"})
+ cache, err := NewCachingConsistentStoragesGetter(log.FromContext(ctx), mockRepositoryStore, []string{"storage-1", "storage-2"})
require.NoError(t, err)
cache.Connected()
diff --git a/internal/praefect/dependencies.go b/internal/praefect/dependencies.go
index 9184ab466..4dd0091bc 100644
--- a/internal/praefect/dependencies.go
+++ b/internal/praefect/dependencies.go
@@ -1,9 +1,9 @@
package praefect
import (
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/protoregistry"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/proxy"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/nodes"
@@ -14,7 +14,7 @@ import (
// Dependencies consolidates Praefect service dependencies for injection.
type Dependencies struct {
Config config.Config
- Logger logrus.FieldLogger
+ Logger log.Logger
Coordinator *Coordinator
Director proxy.StreamDirector
NodeMgr nodes.Manager
diff --git a/internal/praefect/middleware/methodtype.go b/internal/praefect/middleware/methodtype.go
index bd0d4b11a..78c9637b7 100644
--- a/internal/praefect/middleware/methodtype.go
+++ b/internal/praefect/middleware/methodtype.go
@@ -3,14 +3,14 @@ package middleware
import (
"context"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/protoregistry"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/metrics"
"google.golang.org/grpc"
)
// MethodTypeUnaryInterceptor returns a Unary Interceptor that records the method type of incoming RPC requests
-func MethodTypeUnaryInterceptor(r *protoregistry.Registry, logger logrus.FieldLogger) grpc.UnaryServerInterceptor {
+func MethodTypeUnaryInterceptor(r *protoregistry.Registry, logger log.Logger) grpc.UnaryServerInterceptor {
return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
observeMethodType(r, logger, info.FullMethod)
@@ -21,7 +21,7 @@ func MethodTypeUnaryInterceptor(r *protoregistry.Registry, logger logrus.FieldLo
}
// MethodTypeStreamInterceptor returns a Stream Interceptor that records the method type of incoming RPC requests
-func MethodTypeStreamInterceptor(r *protoregistry.Registry, logger logrus.FieldLogger) grpc.StreamServerInterceptor {
+func MethodTypeStreamInterceptor(r *protoregistry.Registry, logger log.Logger) grpc.StreamServerInterceptor {
return func(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
observeMethodType(r, logger, info.FullMethod)
@@ -31,7 +31,7 @@ func MethodTypeStreamInterceptor(r *protoregistry.Registry, logger logrus.FieldL
}
}
-func observeMethodType(registry *protoregistry.Registry, logger logrus.FieldLogger, fullMethod string) {
+func observeMethodType(registry *protoregistry.Registry, logger log.Logger, fullMethod string) {
if registry.IsInterceptedMethod(fullMethod) {
return
}
diff --git a/internal/praefect/node.go b/internal/praefect/node.go
index cc60de11c..6a91b4aa7 100644
--- a/internal/praefect/node.go
+++ b/internal/praefect/node.go
@@ -4,10 +4,10 @@ import (
"context"
"fmt"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/client"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/protoregistry"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/sidechannel"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/nodes"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/nodes/tracker"
@@ -99,7 +99,7 @@ func DialNodes(
errorTracker tracker.ErrorTracker,
handshaker client.Handshaker,
sidechannelRegistry *sidechannel.Registry,
- log logrus.FieldLogger,
+ log log.Logger,
) (NodeSet, error) {
set := make(NodeSet, len(virtualStorages))
for _, virtualStorage := range virtualStorages {
diff --git a/internal/praefect/nodes/health_manager.go b/internal/praefect/nodes/health_manager.go
index 94d929bc5..1e4d9ba28 100644
--- a/internal/praefect/nodes/health_manager.go
+++ b/internal/praefect/nodes/health_manager.go
@@ -9,6 +9,7 @@ import (
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore/glsql"
"gitlab.com/gitlab-org/labkit/correlation"
"google.golang.org/grpc/health/grpc_health_v1"
@@ -33,7 +34,7 @@ type HealthClients map[string]map[string]grpc_health_v1.HealthClient
// `node_status` table. Each Praefect node is identified by their host name and the provided
// stable ID. The stable ID should uniquely identify a Praefect instance on the host.
type HealthManager struct {
- log logrus.FieldLogger
+ log log.Logger
db glsql.Querier
handleError func(error) error
// clients contains connections to the configured physical storages within each
@@ -59,7 +60,7 @@ type HealthManager struct {
// NewHealthManager returns a new health manager that monitors which nodes in the cluster
// are healthy.
func NewHealthManager(
- log logrus.FieldLogger,
+ log log.Logger,
db glsql.Querier,
praefectName string,
clients HealthClients,
diff --git a/internal/praefect/nodes/local_elector.go b/internal/praefect/nodes/local_elector.go
index 57afcb9d6..ca8636e10 100644
--- a/internal/praefect/nodes/local_elector.go
+++ b/internal/praefect/nodes/local_elector.go
@@ -5,7 +5,7 @@ import (
"sync"
"time"
- "github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/metrics"
)
@@ -18,12 +18,12 @@ type localElector struct {
shardName string
nodes []Node
primaryNode Node
- log logrus.FieldLogger
+ log log.Logger
doneCh chan struct{}
}
-func newLocalElector(name string, log logrus.FieldLogger, ns []*nodeStatus) *localElector {
+func newLocalElector(name string, log log.Logger, ns []*nodeStatus) *localElector {
nodes := make([]Node, len(ns))
for i, n := range ns {
nodes[i] = n
diff --git a/internal/praefect/nodes/manager.go b/internal/praefect/nodes/manager.go
index 83ab7fede..25cf8dab5 100644
--- a/internal/praefect/nodes/manager.go
+++ b/internal/praefect/nodes/manager.go
@@ -17,6 +17,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/protoregistry"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/proxy"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/sidechannel"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/metrics"
@@ -131,7 +132,7 @@ func Dial(
errorTracker tracker.ErrorTracker,
handshaker client.Handshaker,
sidechannelRegistry *sidechannel.Registry,
- log logrus.FieldLogger,
+ log log.Logger,
) (*grpc.ClientConn, error) {
streamInterceptors := []grpc.StreamClientInterceptor{
grpcprometheus.StreamClientInterceptor,
@@ -165,7 +166,7 @@ func Dial(
// NewManager creates a new NodeMgr based on virtual storage configs
func NewManager(
- log logrus.FieldLogger,
+ log log.Logger,
c config.Config,
db *sql.DB,
csg datastore.ConsistentStoragesGetter,
@@ -335,7 +336,7 @@ func (n *Mgr) HealthyNodes() map[string][]string {
//nolint:revive // This is unintentionally missing documentation.
func (n *Mgr) Nodes() map[string][]Node { return n.nodes }
-func newConnectionStatus(node config.Node, cc *grpc.ClientConn, l logrus.FieldLogger, latencyHist prommetrics.HistogramVec, errorTracker tracker.ErrorTracker) *nodeStatus {
+func newConnectionStatus(node config.Node, cc *grpc.ClientConn, l log.Logger, latencyHist prommetrics.HistogramVec, errorTracker tracker.ErrorTracker) *nodeStatus {
return &nodeStatus{
node: node,
clientConn: cc,
@@ -348,7 +349,7 @@ func newConnectionStatus(node config.Node, cc *grpc.ClientConn, l logrus.FieldLo
type nodeStatus struct {
node config.Node
clientConn *grpc.ClientConn
- log logrus.FieldLogger
+ log log.Logger
latencyHist prommetrics.HistogramVec
mtx sync.RWMutex
statuses []bool
diff --git a/internal/praefect/nodes/per_repository.go b/internal/praefect/nodes/per_repository.go
index cd457d3a5..9c53ef184 100644
--- a/internal/praefect/nodes/per_repository.go
+++ b/internal/praefect/nodes/per_repository.go
@@ -6,8 +6,8 @@ import (
"errors"
"fmt"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore/glsql"
)
@@ -110,7 +110,7 @@ WHERE snapshot.repository_id = $1
}
if current != previous {
- ctxlogrus.Extract(ctx).WithFields(logrus.Fields{
+ log.FromContext(ctx).WithFields(logrus.Fields{
"repository_id": repositoryID,
"current_primary": current.String,
"previous_primary": previous.String,
diff --git a/internal/praefect/nodes/per_repository_test.go b/internal/praefect/nodes/per_repository_test.go
index 673c2a9a0..19b73bd25 100644
--- a/internal/praefect/nodes/per_repository_test.go
+++ b/internal/praefect/nodes/per_repository_test.go
@@ -3,11 +3,11 @@ package nodes
import (
"testing"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
"github.com/sirupsen/logrus/hooks/test"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper/testdb"
@@ -533,7 +533,7 @@ func TestPerRepositoryElector(t *testing.T) {
logger, hook := test.NewNullLogger()
elector := NewPerRepositoryElector(tx)
- primary, err := elector.GetPrimary(ctxlogrus.ToContext(ctx, logrus.NewEntry(logger)), "", repositoryID)
+ primary, err := elector.GetPrimary(log.FromLogrusEntry(logrus.NewEntry(logger)).ToContext(ctx), "", repositoryID)
assert.Equal(t, step.error, err)
assert.Less(t, len(hook.Entries), 2)
diff --git a/internal/praefect/nodes/sql_elector.go b/internal/praefect/nodes/sql_elector.go
index f66cad8f7..c72e889a3 100644
--- a/internal/praefect/nodes/sql_elector.go
+++ b/internal/praefect/nodes/sql_elector.go
@@ -12,6 +12,7 @@ import (
"github.com/google/uuid"
"github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore/glsql"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/metrics"
@@ -83,12 +84,12 @@ type sqlElector struct {
nodes []*sqlCandidate
primaryNode *sqlCandidate
db *sql.DB
- log logrus.FieldLogger
+ log log.Logger
failoverTimeout time.Duration
doneCh chan struct{}
}
-func newSQLElector(name string, c config.Config, db *sql.DB, log logrus.FieldLogger, ns []*nodeStatus) *sqlElector {
+func newSQLElector(name string, c config.Config, db *sql.DB, log log.Logger, ns []*nodeStatus) *sqlElector {
log = log.WithField("virtual_storage", name)
praefectName := GeneratePraefectName(c, log)
@@ -118,7 +119,7 @@ func newSQLElector(name string, c config.Config, db *sql.DB, log logrus.FieldLog
// doesn't change across restarts since that may temporarily make it
// look like there are more Praefect processes active for
// determining a quorum.
-func GeneratePraefectName(c config.Config, log logrus.FieldLogger) string {
+func GeneratePraefectName(c config.Config, log log.Logger) string {
name, err := os.Hostname()
if err != nil {
name = uuid.New().String()
diff --git a/internal/praefect/reconciler/reconciler.go b/internal/praefect/reconciler/reconciler.go
index d4ddecc36..b91cc2c98 100644
--- a/internal/praefect/reconciler/reconciler.go
+++ b/internal/praefect/reconciler/reconciler.go
@@ -5,8 +5,8 @@ import (
"fmt"
"github.com/prometheus/client_golang/prometheus"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore/advisorylock"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore/glsql"
@@ -16,7 +16,7 @@ const logBatchSize = 25
// Reconciler implements reconciliation logic for repairing outdated repository replicas.
type Reconciler struct {
- log logrus.FieldLogger
+ log log.Logger
db glsql.Querier
hc praefect.HealthChecker
storages map[string][]string
@@ -27,7 +27,7 @@ type Reconciler struct {
}
// NewReconciler returns a new Reconciler for repairing outdated repositories.
-func NewReconciler(log logrus.FieldLogger, db glsql.Querier, hc praefect.HealthChecker, storages map[string][]string, buckets []float64) *Reconciler {
+func NewReconciler(log log.Logger, db glsql.Querier, hc praefect.HealthChecker, storages map[string][]string, buckets []float64) *Reconciler {
log = log.WithField("component", "reconciler")
r := &Reconciler{
diff --git a/internal/praefect/remove_repository.go b/internal/praefect/remove_repository.go
index 58401d682..83c9cbb83 100644
--- a/internal/praefect/remove_repository.go
+++ b/internal/praefect/remove_repository.go
@@ -7,9 +7,9 @@ import (
"sync"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore"
"gitlab.com/gitlab-org/gitaly/v16/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -99,7 +99,7 @@ func removeRepositoryHandler(rs datastore.RepositoryStore, conns Connections, pa
rewritten.RelativePath = replicaPath
if err := proxyRequest(ctx, conn, rewritten); err != nil {
- ctxlogrus.Extract(ctx).WithFields(logrus.Fields{
+ log.FromContext(ctx).WithFields(logrus.Fields{
"virtual_storage": virtualStorage,
"relative_path": repo.RelativePath,
"storage": rewrittenStorage,
diff --git a/internal/praefect/replicator.go b/internal/praefect/replicator.go
index 5dbb8baac..5fd0ac1dd 100644
--- a/internal/praefect/replicator.go
+++ b/internal/praefect/replicator.go
@@ -13,6 +13,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/middleware/metadatahandler"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore"
prommetrics "gitlab.com/gitlab-org/gitaly/v16/internal/prometheus/metrics"
@@ -34,7 +35,7 @@ type Replicator interface {
type defaultReplicator struct {
rs datastore.RepositoryStore
- log logrus.FieldLogger
+ log log.Logger
}
func (dr defaultReplicator) Replicate(ctx context.Context, event datastore.ReplicationEvent, sourceCC, targetCC *grpc.ClientConn) error {
@@ -200,7 +201,7 @@ func (dr defaultReplicator) Rename(ctx context.Context, event datastore.Replicat
// ReplMgr is a replication manager for handling replication jobs
type ReplMgr struct {
- log *logrus.Entry
+ log log.Logger
queue datastore.ReplicationEventQueue
hc HealthChecker
nodes NodeSet
@@ -249,7 +250,7 @@ func WithParallelStorageProcessingWorkers(n uint) func(*ReplMgr) {
// NewReplMgr initializes a replication manager with the provided dependencies
// and options
-func NewReplMgr(log logrus.FieldLogger, storageNames map[string][]string, queue datastore.ReplicationEventQueue, rs datastore.RepositoryStore, hc HealthChecker, nodes NodeSet, opts ...ReplMgrOpt) ReplMgr {
+func NewReplMgr(log log.Logger, storageNames map[string][]string, queue datastore.ReplicationEventQueue, rs datastore.RepositoryStore, hc HealthChecker, nodes NodeSet, opts ...ReplMgrOpt) ReplMgr {
r := ReplMgr{
log: log.WithField("component", "replication_manager"),
queue: queue,
@@ -514,7 +515,7 @@ func (r ReplMgr) handleNode(ctx context.Context, virtualStorage string, target N
return len(events)
}
-func (r ReplMgr) startHealthUpdate(ctx context.Context, logger logrus.FieldLogger, events []datastore.ReplicationEvent) context.CancelFunc {
+func (r ReplMgr) startHealthUpdate(ctx context.Context, logger log.Logger, events []datastore.ReplicationEvent) context.CancelFunc {
healthUpdateCtx, healthUpdateCancel := context.WithCancel(ctx)
go func() {
ticker := time.NewTicker(5 * time.Second)
@@ -533,7 +534,7 @@ func (r ReplMgr) startHealthUpdate(ctx context.Context, logger logrus.FieldLogge
return healthUpdateCancel
}
-func (r ReplMgr) handleNodeEvent(ctx context.Context, logger logrus.FieldLogger, targetConnection *grpc.ClientConn, event datastore.ReplicationEvent) datastore.JobState {
+func (r ReplMgr) handleNodeEvent(ctx context.Context, logger log.Logger, targetConnection *grpc.ClientConn, event datastore.ReplicationEvent) datastore.JobState {
cid := getCorrelationID(event.Meta)
ctx = correlation.ContextWithCorrelation(ctx, cid)
diff --git a/internal/praefect/replicator_test.go b/internal/praefect/replicator_test.go
index 716cc5227..c38d5b32e 100644
--- a/internal/praefect/replicator_test.go
+++ b/internal/praefect/replicator_test.go
@@ -22,6 +22,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/middleware/metadatahandler"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/protoregistry"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/nodes"
@@ -290,7 +291,7 @@ func TestConfirmReplication(t *testing.T) {
require.False(t, equal)
}
-func confirmChecksums(ctx context.Context, logger logrus.FieldLogger, primaryClient, replicaClient gitalypb.RepositoryServiceClient, primary, replica *gitalypb.Repository) (bool, error) {
+func confirmChecksums(ctx context.Context, logger log.Logger, primaryClient, replicaClient gitalypb.RepositoryServiceClient, primary, replica *gitalypb.Repository) (bool, error) {
g, gCtx := errgroup.WithContext(ctx)
var primaryChecksum, replicaChecksum string
diff --git a/internal/praefect/repocleaner/action_log.go b/internal/praefect/repocleaner/action_log.go
index 4aed3403c..b2ec5588c 100644
--- a/internal/praefect/repocleaner/action_log.go
+++ b/internal/praefect/repocleaner/action_log.go
@@ -4,16 +4,17 @@ import (
"context"
"github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
// LogWarnAction is an implementation of the Action interface that allows to log a warning message
// for the repositories that are not known for the praefect.
type LogWarnAction struct {
- logger logrus.FieldLogger
+ logger log.Logger
}
// NewLogWarnAction return new instance of the LogWarnAction.
-func NewLogWarnAction(logger logrus.FieldLogger) *LogWarnAction {
+func NewLogWarnAction(logger log.Logger) *LogWarnAction {
return &LogWarnAction{
logger: logger.WithField("component", "repocleaner.log_warn_action"),
}
diff --git a/internal/praefect/repocleaner/repository.go b/internal/praefect/repocleaner/repository.go
index 784d8ec77..adc0e62f9 100644
--- a/internal/praefect/repocleaner/repository.go
+++ b/internal/praefect/repocleaner/repository.go
@@ -9,6 +9,7 @@ import (
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
@@ -39,7 +40,7 @@ type Action interface {
// found repositories are known by praefect and runs a special action.
type Runner struct {
cfg Cfg
- logger logrus.FieldLogger
+ logger log.Logger
healthChecker praefect.HealthChecker
conns praefect.Connections
walker *Walker
@@ -59,7 +60,7 @@ type Cfg struct {
}
// NewRunner returns instance of the Runner.
-func NewRunner(cfg Cfg, logger logrus.FieldLogger, healthChecker praefect.HealthChecker, conns praefect.Connections, stateOwner StateOwner, acquirer Acquirer, action Action) *Runner {
+func NewRunner(cfg Cfg, logger log.Logger, healthChecker praefect.HealthChecker, conns praefect.Connections, stateOwner StateOwner, acquirer Acquirer, action Action) *Runner {
return &Runner{
cfg: cfg,
logger: logger.WithField("component", "repocleaner.repository_existence"),
@@ -149,7 +150,7 @@ func (gs *Runner) run(ctx context.Context) {
}
}
-func (gs *Runner) loggerWith(virtualStorage, storage string) logrus.FieldLogger {
+func (gs *Runner) loggerWith(virtualStorage, storage string) log.Logger {
return gs.logger.WithFields(logrus.Fields{"virtual_storage": virtualStorage, "storage": storage})
}
diff --git a/internal/praefect/router.go b/internal/praefect/router.go
index 36fe9b179..9abdce830 100644
--- a/internal/praefect/router.go
+++ b/internal/praefect/router.go
@@ -3,8 +3,8 @@ package praefect
import (
"context"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"google.golang.org/grpc"
)
@@ -27,7 +27,7 @@ func (e additionalRepositoryNotFoundError) Error() string {
}
func addRouteLogField(ctx context.Context, fields logrus.Fields) {
- ctxlogrus.AddFields(ctx, logrus.Fields{"route": fields})
+ log.AddFields(ctx, logrus.Fields{"route": fields})
}
func routerNodeStorages(secondaries []RouterNode) []string {
diff --git a/internal/praefect/server.go b/internal/praefect/server.go
index 84e75eb66..efcd781ff 100644
--- a/internal/praefect/server.go
+++ b/internal/praefect/server.go
@@ -45,7 +45,7 @@ import (
// NewBackchannelServerFactory returns a ServerFactory that serves the RefTransactionServer on the backchannel
// connection.
-func NewBackchannelServerFactory(logger logrus.FieldLogger, refSvc gitalypb.RefTransactionServer, registry *sidechannel.Registry) backchannel.ServerFactory {
+func NewBackchannelServerFactory(logger log.Logger, refSvc gitalypb.RefTransactionServer, registry *sidechannel.Registry) backchannel.ServerFactory {
logMsgProducer := log.MessageProducer(
log.PropagationMessageProducer(grpcmwlogrus.DefaultMessageProducer),
structerr.FieldsProducer,
@@ -236,7 +236,7 @@ func registerServices(
grpcprometheus.Register(srv)
}
-func warnDupeAddrs(logger logrus.FieldLogger, conf config.Config) {
+func warnDupeAddrs(logger log.Logger, conf config.Config) {
var fishy bool
for _, virtualStorage := range conf.VirtualStorages {
diff --git a/internal/praefect/service/server/info.go b/internal/praefect/service/server/info.go
index 9481ecb8d..644007a37 100644
--- a/internal/praefect/service/server/info.go
+++ b/internal/praefect/service/server/info.go
@@ -5,8 +5,8 @@ import (
"sync"
"github.com/google/uuid"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/metadata"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
"google.golang.org/grpc"
)
@@ -52,7 +52,7 @@ func (s *Server) ServerInfo(ctx context.Context, in *gitalypb.ServerInfoRequest)
client := gitalypb.NewServerServiceClient(conn)
resp, err := client.ServerInfo(ctx, &gitalypb.ServerInfoRequest{})
if err != nil {
- ctxlogrus.Extract(ctx).WithField("storage", storage).WithError(err).Error("error getting server info")
+ log.FromContext(ctx).WithField("storage", storage).WithError(err).Error("error getting server info")
return
}
diff --git a/internal/praefect/testserver.go b/internal/praefect/testserver.go
index f3954667d..291d890f3 100644
--- a/internal/praefect/testserver.go
+++ b/internal/praefect/testserver.go
@@ -14,6 +14,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/client"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/protoregistry"
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/proxy"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/nodes"
@@ -40,7 +41,7 @@ type BuildOptions struct {
// WithAnnotations sets a proto-registry to use by praefect service.
WithAnnotations *protoregistry.Registry
// WithLogger sets a logger to use by praefect service.
- WithLogger *logrus.Entry
+ WithLogger log.Logger
// WithNodeMgr sets an implementation of the node manager to use by praefect service.
WithNodeMgr nodes.Manager
// WithRepoStore sets an implementation of the repositories store to use by praefect service.
diff --git a/internal/praefect/transactions/manager.go b/internal/praefect/transactions/manager.go
index 7622df3d4..2d56d82e7 100644
--- a/internal/praefect/transactions/manager.go
+++ b/internal/praefect/transactions/manager.go
@@ -8,9 +8,9 @@ import (
"sync/atomic"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/prometheus/client_golang/prometheus"
"github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/transaction/voting"
)
@@ -75,8 +75,8 @@ func (mgr *Manager) Collect(metrics chan<- prometheus.Metric) {
mgr.subtransactionsMetric.Collect(metrics)
}
-func (mgr *Manager) log(ctx context.Context) logrus.FieldLogger {
- return ctxlogrus.Extract(ctx).WithField("component", "transactions.Manager")
+func (mgr *Manager) log(ctx context.Context) log.Logger {
+ return log.FromContext(ctx).WithField("component", "transactions.Manager")
}
// CancelFunc is the transaction cancellation function returned by
diff --git a/internal/praefect/verifier.go b/internal/praefect/verifier.go
index b68e0b1e9..5c6684e70 100644
--- a/internal/praefect/verifier.go
+++ b/internal/praefect/verifier.go
@@ -10,6 +10,7 @@ import (
"github.com/prometheus/client_golang/prometheus"
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/internal/praefect/datastore/glsql"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -21,7 +22,7 @@ import (
// is still left in place even if all of the replicas are lost to ensure the data loss doesn't
// go unnoticed.
type MetadataVerifier struct {
- log logrus.FieldLogger
+ log log.Logger
db glsql.Querier
conns Connections
batchSize int
@@ -48,7 +49,7 @@ const (
// NewMetadataVerifier creates a new MetadataVerifier.
func NewMetadataVerifier(
- log logrus.FieldLogger,
+ log log.Logger,
db glsql.Querier,
conns Connections,
healthChecker HealthChecker,
diff --git a/internal/streamcache/cache.go b/internal/streamcache/cache.go
index be16f923a..ad365c2f6 100644
--- a/internal/streamcache/cache.go
+++ b/internal/streamcache/cache.go
@@ -35,10 +35,10 @@ import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/dontpanic"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
var (
@@ -132,7 +132,7 @@ type cache struct {
createFile func() (namedWriteCloser, error)
stop chan struct{}
stopOnce sync.Once
- logger logrus.FieldLogger
+ logger log.Logger
dir string
sleepLoop *dontpanic.Forever
@@ -142,7 +142,7 @@ type cache struct {
}
// New returns a new cache instance.
-func New(cfg config.StreamCacheConfig, logger logrus.FieldLogger) Cache {
+func New(cfg config.StreamCacheConfig, logger log.Logger) Cache {
if cfg.Enabled {
packObjectsCacheEnabled.WithLabelValues(
cfg.Dir,
@@ -165,7 +165,7 @@ func newCacheWithSleep(
maxAge time.Duration,
filestoreSleep func(time.Duration) <-chan time.Time,
cleanSleep func(time.Duration) <-chan time.Time,
- logger logrus.FieldLogger,
+ logger log.Logger,
) *cache {
fs := newFilestore(dir, maxAge, filestoreSleep, logger)
diff --git a/internal/streamcache/filestore.go b/internal/streamcache/filestore.go
index bf9b1b318..4d01e377e 100644
--- a/internal/streamcache/filestore.go
+++ b/internal/streamcache/filestore.go
@@ -12,9 +12,9 @@ import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/dontpanic"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
var (
@@ -60,7 +60,7 @@ type filestore struct {
sleepLoop *dontpanic.Forever
}
-func newFilestore(dir string, maxAge time.Duration, sleep func(time.Duration) <-chan time.Time, logger logrus.FieldLogger) *filestore {
+func newFilestore(dir string, maxAge time.Duration, sleep func(time.Duration) <-chan time.Time, logger log.Logger) *filestore {
fs := &filestore{
dir: dir,
maxAge: maxAge,
diff --git a/internal/tempdir/clean.go b/internal/tempdir/clean.go
index 31dea0618..ee28ec331 100644
--- a/internal/tempdir/clean.go
+++ b/internal/tempdir/clean.go
@@ -15,6 +15,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
const (
@@ -28,7 +29,7 @@ const (
)
// StartCleaning starts tempdir cleanup in a goroutine.
-func StartCleaning(logger logrus.FieldLogger, locator storage.Locator, storages []config.Storage, d time.Duration) {
+func StartCleaning(logger log.Logger, locator storage.Locator, storages []config.Storage, d time.Duration) {
dontpanic.Go(logger, func() {
for {
cleanTempDir(logger, locator, storages)
@@ -37,7 +38,7 @@ func StartCleaning(logger logrus.FieldLogger, locator storage.Locator, storages
})
}
-func cleanTempDir(logger logrus.FieldLogger, locator storage.Locator, storages []config.Storage) {
+func cleanTempDir(logger log.Logger, locator storage.Locator, storages []config.Storage) {
for _, storage := range storages {
start := time.Now()
err := clean(logger, locator, storage)
@@ -55,7 +56,7 @@ func cleanTempDir(logger logrus.FieldLogger, locator storage.Locator, storages [
type invalidCleanRoot string
-func clean(logger logrus.FieldLogger, locator storage.Locator, storage config.Storage) error {
+func clean(logger log.Logger, locator storage.Locator, storage config.Storage) error {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
diff --git a/internal/tempdir/tempdir.go b/internal/tempdir/tempdir.go
index 01bdd5eee..15e9b5484 100644
--- a/internal/tempdir/tempdir.go
+++ b/internal/tempdir/tempdir.go
@@ -7,9 +7,9 @@ import (
"path/filepath"
"time"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
)
@@ -98,7 +98,7 @@ func newDirectory(ctx context.Context, storageName string, prefix string, loc st
func (d Dir) cleanupOnDone(ctx context.Context) {
<-ctx.Done()
if err := os.RemoveAll(d.Path()); err != nil {
- ctxlogrus.Extract(ctx).WithError(err).Errorf("failed to cleanup temp dir %q", d.path)
+ log.FromContext(ctx).WithError(err).Errorf("failed to cleanup temp dir %q", d.path)
}
close(d.doneCh)
}
diff --git a/internal/testhelper/configure.go b/internal/testhelper/configure.go
index 6dc326057..2f8162af1 100644
--- a/internal/testhelper/configure.go
+++ b/internal/testhelper/configure.go
@@ -8,7 +8,6 @@ import (
"runtime"
"testing"
- "github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
"gitlab.com/gitlab-org/gitaly/v16/internal/log"
)
@@ -150,7 +149,7 @@ func configure() (_ func(), returnedErr error) {
return cleanup, nil
}
-func configureTestDirectory(logger logrus.FieldLogger) (_ func(), returnedErr error) {
+func configureTestDirectory(logger log.Logger) (_ func(), returnedErr error) {
if testDirectory != "" {
return nil, errors.New("test directory has already been configured")
}
diff --git a/internal/testhelper/testhelper.go b/internal/testhelper/testhelper.go
index 6b92eade3..4ee0e5f19 100644
--- a/internal/testhelper/testhelper.go
+++ b/internal/testhelper/testhelper.go
@@ -17,8 +17,6 @@ import (
"syscall"
"testing"
- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
- log "github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v16/internal/featureflag"
@@ -208,13 +206,6 @@ func GetLocalhostListener(tb testing.TB) (net.Listener, string) {
// ContextOpt returns a new context instance with the new additions to it.
type ContextOpt func(context.Context) context.Context
-// ContextWithLogger allows to inject provided logger into the context.
-func ContextWithLogger(logger *log.Entry) ContextOpt {
- return func(ctx context.Context) context.Context {
- return ctxlogrus.ToContext(ctx, logger)
- }
-}
-
// Context returns that gets canceled at the end of the test.
func Context(tb testing.TB, opts ...ContextOpt) context.Context {
ctx, cancel := context.WithCancel(ContextWithoutCancel(opts...))
diff --git a/internal/testhelper/testserver/gitaly.go b/internal/testhelper/testserver/gitaly.go
index 30778d13c..2d91de675 100644
--- a/internal/testhelper/testserver/gitaly.go
+++ b/internal/testhelper/testserver/gitaly.go
@@ -6,7 +6,6 @@ import (
"os"
"testing"
- "github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
gitalyauth "gitlab.com/gitlab-org/gitaly/v16/auth"
@@ -33,7 +32,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v16/internal/grpc/middleware/limithandler"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
"gitlab.com/gitlab-org/gitaly/v16/internal/limiter"
- gitalylog "gitlab.com/gitlab-org/gitaly/v16/internal/log"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/log"
praefectconfig "gitlab.com/gitlab-org/gitaly/v16/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v16/internal/streamcache"
"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
@@ -108,7 +107,7 @@ func runPraefectProxy(tb testing.TB, gitalyCfg config.Cfg, gitalyAddr string) Pr
VerificationInterval: -1,
},
Replication: praefectconfig.DefaultReplicationConfig(),
- Logging: gitalylog.Config{
+ Logging: log.Config{
Format: "json",
Level: "info",
},
@@ -252,7 +251,7 @@ func registerHealthServerIfNotRegistered(srv *grpc.Server) {
type gitalyServerDeps struct {
disablePraefect bool
- logger *logrus.Logger
+ logger log.Logger
conns *client.Pool
locator storage.Locator
txMgr transaction.Manager
@@ -392,8 +391,8 @@ func (gsd *gitalyServerDeps) createDependencies(tb testing.TB, cfg config.Cfg) *
// GitalyServerOpt is a helper type to shorten declarations.
type GitalyServerOpt func(gitalyServerDeps) gitalyServerDeps
-// WithLogger sets a logrus.Logger instance that will be used for gitaly services initialisation.
-func WithLogger(logger *logrus.Logger) GitalyServerOpt {
+// WithLogger sets a log.Logger instance that will be used for gitaly services initialisation.
+func WithLogger(logger log.Logger) GitalyServerOpt {
return func(deps gitalyServerDeps) gitalyServerDeps {
deps.logger = logger
return deps