Skip to content

Commit 946bfbf

Browse files
committed
Cleanup Closers
1 parent e11d02e commit 946bfbf

File tree

2 files changed

+35
-35
lines changed

2 files changed

+35
-35
lines changed

backend/storj/fs.go

+25-25
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,11 @@ func NewFs(name, root string, m configmap.Mapper) (_ fs.Fs, err error) {
133133
if err != nil {
134134
return f, errors.Wrap(err, "storj: bucket")
135135
}
136-
defer bucket.Close()
136+
defer fs.CheckClose(bucket, &err)
137137

138138
object, err := bucket.OpenObject(ctx, bucketPath)
139139
if err == nil {
140-
defer object.Close()
140+
defer fs.CheckClose(object, &err)
141141

142142
if !object.Meta.IsPrefix {
143143
return f, fs.ErrorIsFile
@@ -164,7 +164,7 @@ func (f *Fs) connect(ctx context.Context) (upl *uplink.Uplink, project *uplink.P
164164

165165
project, err = upl.OpenProject(ctx, f.scope.SatelliteAddr, f.scope.APIKey)
166166
if err != nil {
167-
upl.Close()
167+
fs.CheckClose(upl, &err)
168168

169169
return nil, nil, errors.Wrap(err, "storj: project")
170170
}
@@ -272,15 +272,15 @@ func (f *Fs) listObjects(ctx context.Context, relative, bucketName, bucketPath s
272272

273273
return nil, fs.ErrorDirNotFound
274274
}
275-
defer bucket.Close()
275+
defer fs.CheckClose(bucket, &err)
276276

277277
// Attempt to open the directory itself. If the directory itself exists
278278
// as an object it will not show up through the listing below.
279279
object, err := bucket.OpenObject(ctx, bucketPath)
280280
if err == nil {
281281
entries = append(entries, NewObjectFromUplink(f, object).setRelative(""))
282282

283-
object.Close()
283+
fs.CheckClose(object, &err)
284284
}
285285

286286
startAfter := ""
@@ -334,7 +334,7 @@ func (f *Fs) listObjects(ctx context.Context, relative, bucketName, bucketPath s
334334
//
335335
// Don't implement this unless you have a more efficient way of listing
336336
// recursively that doing a directory traversal.
337-
func (f *Fs) ListR(ctx context.Context, relative string, callback fs.ListRCallback) error {
337+
func (f *Fs) ListR(ctx context.Context, relative string, callback fs.ListRCallback) (err error) {
338338
fs.Infof(f, "ls -R ./%s", relative)
339339

340340
bucketName, bucketPath := f.absolute(relative)
@@ -401,7 +401,7 @@ func (f *Fs) listObjectsR(ctx context.Context, relative, bucketName, bucketPath
401401

402402
return fs.ErrorDirNotFound
403403
}
404-
defer bucket.Close()
404+
defer fs.CheckClose(bucket, &err)
405405

406406
// Attempt to open the directory itself. If the directory itself exists
407407
// as an object it will not show up through the listing below.
@@ -412,7 +412,7 @@ func (f *Fs) listObjectsR(ctx context.Context, relative, bucketName, bucketPath
412412
return err
413413
}
414414

415-
object.Close()
415+
fs.CheckClose(object, &err)
416416
}
417417

418418
startAfter := ""
@@ -462,7 +462,7 @@ func (f *Fs) listObjectsR(ctx context.Context, relative, bucketName, bucketPath
462462

463463
// NewObject finds the Object at relative. If it can't be found it returns the
464464
// error ErrorObjectNotFound.
465-
func (f *Fs) NewObject(ctx context.Context, relative string) (fs.Object, error) {
465+
func (f *Fs) NewObject(ctx context.Context, relative string) (_ fs.Object, err error) {
466466
fs.Infof(f, "stat ./%s", relative)
467467

468468
bucketName, bucketPath := f.absolute(relative)
@@ -473,15 +473,15 @@ func (f *Fs) NewObject(ctx context.Context, relative string) (fs.Object, error)
473473

474474
return nil, fs.ErrorObjectNotFound
475475
}
476-
defer bucket.Close()
476+
defer fs.CheckClose(bucket, &err)
477477

478478
object, err := bucket.OpenObject(ctx, bucketPath)
479479
if err != nil {
480480
fs.Debugf(f, "err: %+v", err)
481481

482482
return nil, fs.ErrorObjectNotFound
483483
}
484-
defer object.Close()
484+
defer fs.CheckClose(object, &err)
485485

486486
o := NewObjectFromUplink(f, object)
487487

@@ -503,7 +503,7 @@ func (f *Fs) NewObject(ctx context.Context, relative string) (fs.Object, error)
503503
//
504504
// May create the object even if it returns an error - if so will return the
505505
// object and the error, otherwise will return nil and the error
506-
func (f *Fs) Put(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) (fs.Object, error) {
506+
func (f *Fs) Put(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) (_ fs.Object, err error) {
507507
fs.Infof(f, "cp input ./%s # %+v %d", src.Remote(), options, src.Size())
508508

509509
// Reject options we don't support.
@@ -534,14 +534,14 @@ func (f *Fs) Put(ctx context.Context, in io.Reader, src fs.ObjectInfo, options .
534534
if err != nil {
535535
return nil, err
536536
}
537-
defer u.Close()
538-
defer p.Close()
537+
defer fs.CheckClose(u, &err)
538+
defer fs.CheckClose(p, &err)
539539

540540
bucket, err := p.OpenBucket(ctx, bucketName, f.scope.EncryptionAccess)
541541
if err != nil {
542542
return nil, err
543543
}
544-
defer bucket.Close()
544+
defer fs.CheckClose(bucket, &err)
545545

546546
out, err := bucket.NewWriter(ctx, bucketPath, &uplink.UploadOptions{
547547
Metadata: map[string]string{
@@ -560,7 +560,7 @@ func (f *Fs) Put(ctx context.Context, in io.Reader, src fs.ObjectInfo, options .
560560
fs.Debugf(f, "cp input ./%s %+v: copied %d %+v", src.Remote(), options, n, err)
561561

562562
if err == io.EOF {
563-
out.Close()
563+
fs.CheckClose(out, &err)
564564
}
565565

566566
ch <- err
@@ -590,7 +590,7 @@ func (f *Fs) Put(ctx context.Context, in io.Reader, src fs.ObjectInfo, options .
590590
if err != nil {
591591
return nil, err
592592
}
593-
defer object.Close()
593+
defer fs.CheckClose(object, &err)
594594

595595
o := NewObjectFromUplink(f, object).setRelative(src.Remote())
596596

@@ -602,14 +602,14 @@ func (f *Fs) Put(ctx context.Context, in io.Reader, src fs.ObjectInfo, options .
602602
//
603603
// May create the object even if it returns an error - if so will return the
604604
// object and the error, otherwise will return nil and the error.
605-
func (f *Fs) PutStream(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) (fs.Object, error) {
605+
func (f *Fs) PutStream(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) (_ fs.Object, err error) {
606606
return f.Put(ctx, in, src, options...)
607607
}
608608

609609
// Mkdir makes the directory (container, bucket)
610610
//
611611
// Shouldn't return an error if it already exists
612-
func (f *Fs) Mkdir(ctx context.Context, relative string) error {
612+
func (f *Fs) Mkdir(ctx context.Context, relative string) (err error) {
613613
fs.Infof(f, "mkdir -p ./%s", relative)
614614

615615
bucketName, _ := f.absolute(relative)
@@ -632,18 +632,18 @@ func (f *Fs) Mkdir(ctx context.Context, relative string) error {
632632

633633
_, err = f.project.CreateBucket(ctx, bucketName, cfg)
634634
if err != nil {
635-
return err
635+
return
636636
}
637637
}
638-
bucket.Close()
638+
fs.CheckClose(bucket, &err)
639639

640-
return nil
640+
return
641641
}
642642

643643
// Rmdir removes the directory (container, bucket) if empty
644644
//
645645
// Return an error if it doesn't exist or isn't empty
646-
func (f *Fs) Rmdir(ctx context.Context, relative string) error {
646+
func (f *Fs) Rmdir(ctx context.Context, relative string) (err error) {
647647
fs.Infof(f, "rmdir ./%s", relative)
648648

649649
bucketName, bucketPath := f.absolute(relative)
@@ -658,7 +658,7 @@ func (f *Fs) Rmdir(ctx context.Context, relative string) error {
658658
if err != nil {
659659
return fs.ErrorDirNotFound
660660
}
661-
defer bucket.Close()
661+
defer fs.CheckClose(bucket, &err)
662662

663663
if bucketPath == "" {
664664
result, err := bucket.ListObjects(ctx, &storj.ListOptions{Direction: storj.After, Recursive: true, Limit: 1})
@@ -677,7 +677,7 @@ func (f *Fs) Rmdir(ctx context.Context, relative string) error {
677677
if err != nil {
678678
return fs.ErrorDirNotFound
679679
}
680-
defer object.Close()
680+
defer fs.CheckClose(object, &err)
681681

682682
if object.Meta.IsPrefix {
683683
return fs.ErrorDirectoryNotEmpty

backend/storj/object.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ func (o *Object) Fs() fs.Info {
142142

143143
// Hash returns the selected checksum of the file
144144
// If no checksum is available it returns ""
145-
func (o *Object) Hash(ctx context.Context, ty hash.Type) (string, error) {
145+
func (o *Object) Hash(ctx context.Context, ty hash.Type) (_ string, err error) {
146146
fs.Debugf(o, "%s", ty)
147147

148148
return "", hash.ErrUnsupported
@@ -154,14 +154,14 @@ func (o *Object) Storable() bool {
154154
}
155155

156156
// SetModTime sets the metadata on the object to set the modification date
157-
func (o *Object) SetModTime(ctx context.Context, t time.Time) error {
157+
func (o *Object) SetModTime(ctx context.Context, t time.Time) (err error) {
158158
fs.Debugf(o, "touch -d %q sj://%s", t, path.Join(o.absolute()))
159159

160160
return fs.ErrorCantSetModTime
161161
}
162162

163163
// Open opens the file for read. Call Close() on the returned io.ReadCloser
164-
func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (io.ReadCloser, error) {
164+
func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (_ io.ReadCloser, err error) {
165165
fs.Infof(o, "cat sj://%s # %+v", path.Join(o.absolute()), options)
166166

167167
bucketName, bucketPath := o.absolute()
@@ -170,13 +170,13 @@ func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (io.ReadClo
170170
if err != nil {
171171
return nil, err
172172
}
173-
defer bucket.Close()
173+
defer fs.CheckClose(bucket, &err)
174174

175175
object, err := bucket.OpenObject(ctx, bucketPath)
176176
if err != nil {
177177
return nil, err
178178
}
179-
defer object.Close()
179+
defer fs.CheckClose(object, &err)
180180

181181
var (
182182
offset int64 = 0
@@ -220,7 +220,7 @@ func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (io.ReadClo
220220
// When called from outside a Fs by rclone, src.Size() will always be >= 0.
221221
// But for unknown-sized objects (indicated by src.Size() == -1), Upload should either
222222
// return an error or update the object properly (rather than e.g. calling panic).
223-
func (o *Object) Update(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) error {
223+
func (o *Object) Update(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) (err error) {
224224
fs.Debugf(o, "cp input ./%s %+v", src.Remote(), options)
225225

226226
oNew, err := o.fs.Put(ctx, in, src, options...)
@@ -233,7 +233,7 @@ func (o *Object) Update(ctx context.Context, in io.Reader, src fs.ObjectInfo, op
233233
}
234234

235235
// Remove this object.
236-
func (o *Object) Remove(ctx context.Context) error {
236+
func (o *Object) Remove(ctx context.Context) (err error) {
237237
fs.Infof(o, "rm sj://%s", path.Join(o.absolute()))
238238

239239
bucketName, bucketPath := o.absolute()
@@ -242,14 +242,14 @@ func (o *Object) Remove(ctx context.Context) error {
242242
if err != nil {
243243
return err
244244
}
245-
defer u.Close()
246-
defer p.Close()
245+
defer fs.CheckClose(u, &err)
246+
defer fs.CheckClose(p, &err)
247247

248248
bucket, err := p.OpenBucket(ctx, bucketName, o.fs.scope.EncryptionAccess)
249249
if err != nil {
250250
return err
251251
}
252-
defer bucket.Close()
252+
defer fs.CheckClose(bucket, &err)
253253

254254
err = bucket.DeleteObject(ctx, bucketPath)
255255

0 commit comments

Comments
 (0)