summaryrefslogtreecommitdiff
path: root/internal/command/uploadpack
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2021-05-05 16:00:35 +0100
committerNick Thomas <nick@gitlab.com>2021-05-05 17:07:23 +0100
commitd79d4777a88fcbf8f44771df76c4a6f1d3baa58b (patch)
treea62dc12af04fe38c0bd78d8247ffa3ccf1d7ad8e /internal/command/uploadpack
parent584643e0e10e0cbeee4f8366b5e50656dfee9ea4 (diff)
downloadgitlab-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.go4
-rw-r--r--internal/command/uploadpack/gitalycall_test.go5
-rw-r--r--internal/command/uploadpack/uploadpack.go2
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) {