Skip to content

Commit

Permalink
Merge pull request #6 from vimeo/cancel-gcs-write-obj-ctx
Browse files Browse the repository at this point in the history
Cancel WriteObject context on GCS copy error
  • Loading branch information
tab1293 authored May 4, 2020
2 parents 5dafb74 + a0a5ea7 commit 39e21d0
Show file tree
Hide file tree
Showing 3 changed files with 134 additions and 69 deletions.
6 changes: 5 additions & 1 deletion pkg/gcsstore/gcsstore.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,12 @@ func (upload gcsUpload) WriteChunk(ctx context.Context, offset int64, src io.Rea
ID: cid,
}

n, err := store.Service.WriteObject(ctx, objectParams, src)
ctxCancel, cancel := context.WithCancel(ctx)
defer cancel()

n, err := store.Service.WriteObject(ctxCancel, objectParams, src)
if err != nil {
cancel()
return 0, err
}

Expand Down
192 changes: 125 additions & 67 deletions pkg/gcsstore/gcsstore_mock_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion pkg/gcsstore/gcsstore_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -421,9 +421,12 @@ func TestWriteChunk(t *testing.T) {
rGet := bytes.NewReader([]byte(mockReaderData))

ctx := context.Background()
ctxCancel, cancel := context.WithCancel(ctx)
defer cancel()

gomock.InOrder(
service.EXPECT().FilterObjects(ctx, filterParams).Return(partials, nil),
service.EXPECT().WriteObject(ctx, writeObjectParams, rGet).Return(int64(len(mockReaderData)), nil),
service.EXPECT().WriteObject(ctxCancel, writeObjectParams, rGet).Return(int64(len(mockReaderData)), nil),
)

upload, err := store.GetUpload(context.Background(), mockID)
Expand Down

0 comments on commit 39e21d0

Please sign in to comment.