diff options
author | Nick Thomas <nick@gitlab.com> | 2021-05-05 16:00:35 +0100 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2021-05-05 17:07:23 +0100 |
commit | d79d4777a88fcbf8f44771df76c4a6f1d3baa58b (patch) | |
tree | a62dc12af04fe38c0bd78d8247ffa3ccf1d7ad8e /internal/command/uploadpack | |
parent | 584643e0e10e0cbeee4f8366b5e50656dfee9ea4 (diff) | |
download | gitlab-shell-d79d4777a88fcbf8f44771df76c4a6f1d3baa58b.tar.gz |
Respect parent context for Gitaly calls
Without these changes, Gitaly calls would not be linked to a parent
context. This means that they would have an unassociated correlationID,
and Gitaly RPC calls would not be cancel()ed by parent context
cancellation.
Changelog: fixed
Diffstat (limited to 'internal/command/uploadpack')
-rw-r--r-- | internal/command/uploadpack/gitalycall.go | 4 | ||||
-rw-r--r-- | internal/command/uploadpack/gitalycall_test.go | 5 | ||||
-rw-r--r-- | internal/command/uploadpack/uploadpack.go | 2 |
3 files changed, 7 insertions, 4 deletions
diff --git a/internal/command/uploadpack/gitalycall.go b/internal/command/uploadpack/gitalycall.go index 5a8a605..a263fc4 100644 --- a/internal/command/uploadpack/gitalycall.go +++ b/internal/command/uploadpack/gitalycall.go @@ -12,7 +12,7 @@ import ( "gitlab.com/gitlab-org/gitlab-shell/internal/handler" ) -func (c *Command) performGitalyCall(response *accessverifier.Response) error { +func (c *Command) performGitalyCall(ctx context.Context, response *accessverifier.Response) error { gc := &handler.GitalyCommand{ Config: c.Config, ServiceName: string(commandargs.UploadPack), @@ -27,7 +27,7 @@ func (c *Command) performGitalyCall(response *accessverifier.Response) error { GitConfigOptions: response.GitConfigOptions, } - return gc.RunGitalyCommand(func(ctx context.Context, conn *grpc.ClientConn) (int32, error) { + return gc.RunGitalyCommand(ctx, func(ctx context.Context, conn *grpc.ClientConn) (int32, error) { ctx, cancel := gc.PrepareContext(ctx, request.Repository, response, c.Args.Env) defer cancel() diff --git a/internal/command/uploadpack/gitalycall_test.go b/internal/command/uploadpack/gitalycall_test.go index d945764..bedc6e6 100644 --- a/internal/command/uploadpack/gitalycall_test.go +++ b/internal/command/uploadpack/gitalycall_test.go @@ -7,6 +7,7 @@ import ( "time" "github.com/stretchr/testify/require" + "gitlab.com/gitlab-org/labkit/correlation" "gitlab.com/gitlab-org/gitlab-shell/client/testserver" "gitlab.com/gitlab-org/gitlab-shell/internal/command/commandargs" @@ -35,8 +36,9 @@ func TestUploadPack(t *testing.T) { } hook := testhelper.SetupLogger() + ctx := correlation.ContextWithCorrelation(context.Background(), "a-correlation-id") - err := cmd.Execute(context.Background()) + err := cmd.Execute(ctx) require.NoError(t, err) require.Equal(t, "UploadPack: "+repo, output.String()) @@ -48,6 +50,7 @@ func TestUploadPack(t *testing.T) { require.Contains(t, entries[1].Message, "command=git-upload-pack") require.Contains(t, entries[1].Message, "gl_key_type=key") require.Contains(t, entries[1].Message, "gl_key_id=123") + require.Contains(t, entries[1].Message, "correlation_id=a-correlation-id") return true }, time.Second, time.Millisecond) diff --git a/internal/command/uploadpack/uploadpack.go b/internal/command/uploadpack/uploadpack.go index fca3823..82e4d6e 100644 --- a/internal/command/uploadpack/uploadpack.go +++ b/internal/command/uploadpack/uploadpack.go @@ -38,7 +38,7 @@ func (c *Command) Execute(ctx context.Context) error { return customAction.Execute(ctx, response) } - return c.performGitalyCall(response) + return c.performGitalyCall(ctx, response) } func (c *Command) verifyAccess(ctx context.Context, repo string) (*accessverifier.Response, error) { |