Skip to content

Commit d581877

Browse files
authored
Merge pull request moby#5254 from tonistiigi/uploadprovider-closer
uploadprovider: allow closing used sources
2 parents 51c2a75 + 3294c68 commit d581877

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

frontend/dockerfile/dockerfile_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5311,7 +5311,7 @@ COPY foo /
53115311
defer c.Close()
53125312

53135313
up := uploadprovider.New()
5314-
url := up.Add(buf)
5314+
url := up.Add(io.NopCloser(buf))
53155315

53165316
_, err = f.Solve(sb.Context(), c, client.SolveOpt{
53175317
FrontendAttrs: map[string]string{
@@ -5356,7 +5356,7 @@ COPY foo bar
53565356
defer c.Close()
53575357

53585358
up := uploadprovider.New()
5359-
url := up.Add(buf)
5359+
url := up.Add(io.NopCloser(buf))
53605360

53615361
// repeat with changed default args should match the old cache
53625362
destDir := t.TempDir()

session/upload/uploadprovider/provider.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ import (
1313
)
1414

1515
func New() *Uploader {
16-
return &Uploader{m: map[string]io.Reader{}}
16+
return &Uploader{m: map[string]io.ReadCloser{}}
1717
}
1818

1919
type Uploader struct {
2020
mu sync.Mutex
21-
m map[string]io.Reader
21+
m map[string]io.ReadCloser
2222
}
2323

24-
func (hp *Uploader) Add(r io.Reader) string {
24+
func (hp *Uploader) Add(r io.ReadCloser) string {
2525
id := identity.NewID()
2626
hp.m[id] = r
2727
return "http://buildkit-session/" + id
@@ -51,6 +51,11 @@ func (hp *Uploader) Pull(stream upload.Upload_PullServer) error {
5151
hp.mu.Unlock()
5252

5353
_, err := io.Copy(&writer{stream}, r)
54+
55+
if err1 := r.Close(); err == nil {
56+
err = err1
57+
}
58+
5459
return err
5560
}
5661

0 commit comments

Comments
 (0)