Skip to content

Commit 4ca4640

Browse files
committed
s3proxy: use s3util.Client where useful
1 parent 2dc33cc commit 4ca4640

File tree

1 file changed

+8
-16
lines changed

1 file changed

+8
-16
lines changed

s3proxy/s3proxy.go

+8-16
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020

2121
"github.com/aws/aws-sdk-go-v2/service/s3"
2222
"github.com/creachadair/atomicfile"
23-
"github.com/creachadair/mds/value"
2423
"github.com/creachadair/taskgroup"
2524
"github.com/goproxy/goproxy"
2625
"github.com/tailscale/go-cache-plugin/internal/s3util"
@@ -98,6 +97,7 @@ type Cacher struct {
9897
tasks *taskgroup.Group
9998
start func(taskgroup.Task) *taskgroup.Group
10099
sema *semaphore.Weighted
100+
client *s3util.Client
101101

102102
pathError expvar.Int // errors constructing file paths
103103
getRequest expvar.Int // total number of Get requests
@@ -125,6 +125,7 @@ func (c *Cacher) init() {
125125
}
126126
c.tasks, c.start = taskgroup.New(nil).Limit(nt)
127127
c.sema = semaphore.NewWeighted(int64(nt))
128+
c.client = &s3util.Client{Client: c.S3Client, Bucket: c.S3Bucket}
128129
})
129130
}
130131

@@ -161,22 +162,19 @@ func (c *Cacher) Get(ctx context.Context, name string) (_ io.ReadCloser, oerr er
161162
}
162163
defer c.sema.Release(1)
163164

164-
obj, err := c.S3Client.GetObject(ctx, &s3.GetObjectInput{
165-
Bucket: &c.S3Bucket,
166-
Key: value.Ptr(c.makeKey(hash)),
167-
})
168-
if s3util.IsNotExist(err) {
165+
obj, err := c.client.Get(ctx, c.makeKey(hash))
166+
if errors.Is(err, fs.ErrNotExist) {
169167
c.getFaultMiss.Add(1)
170-
return nil, fmt.Errorf("%s: %w", name, fs.ErrNotExist)
168+
return nil, err
171169
} else if err != nil {
172170
c.getFaultError.Add(1)
173171
return nil, err
174172
}
173+
defer obj.Close()
175174
c.getFaultHit.Add(1)
176175
c.vlogf("mc F GET %q hit (%s)", name, hash)
177-
defer obj.Body.Close()
178176

179-
if _, err := c.putLocal(ctx, name, path, obj.Body); err != nil {
177+
if _, err := c.putLocal(ctx, name, path, obj); err != nil {
180178
return nil, err
181179
}
182180
rc, _, err := openReader(path)
@@ -233,13 +231,7 @@ func (c *Cacher) Put(ctx context.Context, name string, data io.ReadSeeker) (oerr
233231
sctx, cancel := context.WithTimeout(context.WithoutCancel(ctx), 1*time.Minute)
234232
defer cancel()
235233

236-
_, err := c.S3Client.PutObject(sctx, &s3.PutObjectInput{
237-
Bucket: &c.S3Bucket,
238-
Key: value.Ptr(c.makeKey(hash)),
239-
Body: f,
240-
ContentLength: &size,
241-
})
242-
if err != nil {
234+
if err := c.client.Put(sctx, c.makeKey(hash), f); err != nil {
243235
c.putS3Error.Add(1)
244236
c.logf("[s3] put %q failed: %v", name, err)
245237
} else {

0 commit comments

Comments
 (0)