Skip to content

Commit f90c89a

Browse files
Merge pull request #148 from akevdmeer/revert-s3-stat-object-instead-of-empty-read
Revert "s3: stat object instead of empty read"
2 parents 8897e65 + 25c6a36 commit f90c89a

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

providers/s3/s3.go

+13-3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"strings"
1616
"testing"
1717

18+
"github.com/efficientgo/core/logerrcapture"
1819
"github.com/go-kit/log"
1920
"github.com/go-kit/log/level"
2021
"github.com/minio/minio-go/v7"
@@ -437,12 +438,21 @@ func (b *Bucket) getRange(ctx context.Context, name string, off, length int64) (
437438
return nil, err
438439
}
439440
}
441+
r, err := b.client.GetObject(ctx, b.name, name, *opts)
442+
if err != nil {
443+
return nil, err
444+
}
440445

441-
// StatObject to see if the object exists and we have permissions to read it
442-
if _, err := b.client.StatObject(ctx, b.name, name, *opts); err != nil {
446+
// NotFoundObject error is revealed only after first Read. This does the initial GetRequest. Prefetch this here
447+
// for convenience.
448+
if _, err := r.Read(nil); err != nil {
449+
defer logerrcapture.Do(b.logger, r.Close, "s3 get range obj close")
450+
451+
// First GET Object request error.
443452
return nil, err
444453
}
445-
return b.client.GetObject(ctx, b.name, name, *opts)
454+
455+
return r, nil
446456
}
447457

448458
// Get returns a reader for the given object name.

0 commit comments

Comments
 (0)