internal/storage: add object not found error
This error will be used by the server to respond with a 404
on requests for objects that do not exist.
Change-Id: I64d232e4f3321d9b80be9b3da2572c5b32c76c9c
Reviewed-on: https://go-review.googlesource.com/c/telemetry/+/523737
Run-TryBot: Jamal Carvalho <jamal@golang.org>
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/godev/internal/storage/storage.go b/godev/internal/storage/storage.go
index 93182b3..41f2482 100644
--- a/godev/internal/storage/storage.go
+++ b/godev/internal/storage/storage.go
@@ -70,7 +70,11 @@
func (s *gcStore) Reader(ctx context.Context, object string) (io.ReadCloser, error) {
obj := s.bucket.Object(object)
- return obj.NewReader(ctx)
+ r, err := obj.NewReader(ctx)
+ if errors.Is(err, storage.ErrObjectNotExist) {
+ return nil, ErrObjectNotExist
+ }
+ return r, err
}
func (s *gcStore) List(ctx context.Context, prefix string) (*ObjectIterator, error) {
@@ -120,7 +124,11 @@
}
func (s *fsStore) Reader(ctx context.Context, object string) (io.ReadCloser, error) {
- return os.Open(filepath.Join(s.dir, s.bucket, filepath.FromSlash(object)))
+ r, err := os.Open(filepath.Join(s.dir, s.bucket, filepath.FromSlash(object)))
+ if errors.Is(err, os.ErrNotExist) {
+ return nil, ErrObjectNotExist
+ }
+ return r, err
}
func (s *fsStore) List(ctx context.Context, prefix string) (*ObjectIterator, error) {
@@ -157,6 +165,7 @@
}
var ErrObjectIteratorDone = errors.New("object iterator done")
+var ErrObjectNotExist = errors.New("object does not exist")
type ObjectIterator struct {
Next func() (elem string, err error)