From a7211c9eb7c8a892e3042c5d2bd20d37feef97ff Mon Sep 17 00:00:00 2001 From: sanposhiho Date: Sun, 10 Jan 2021 20:22:59 +0900 Subject: [PATCH 1/5] Return filestore.ErrNotFound when object not found --- pkg/filestore/minio/minio.go | 11 ++++++++++- pkg/model/BUILD.bazel | 7 +++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/pkg/filestore/minio/minio.go b/pkg/filestore/minio/minio.go index fc0abc96b9..6291d56b70 100644 --- a/pkg/filestore/minio/minio.go +++ b/pkg/filestore/minio/minio.go @@ -21,6 +21,7 @@ import ( "io" "io/ioutil" "mime" + "net/http" "net/url" "path/filepath" "strings" @@ -100,7 +101,15 @@ func (s *Store) EnsureBucket(ctx context.Context) error { } func (s *Store) NewReader(ctx context.Context, path string) (rc io.ReadCloser, err error) { - // No error returned even if the object does not exist. + _, err = s.client.StatObject(ctx, s.bucket, path, minio.GetObjectOptions{}) + if err != nil { + errRes := minio.ToErrorResponse(err) + if errRes.StatusCode == http.StatusNotFound { + err = filestore.ErrNotFound + } + s.logger.Error("failed to create minio object reader", zap.String("path", path), zap.Error(err)) + return + } return s.client.GetObject(ctx, s.bucket, path, minio.GetObjectOptions{}) } diff --git a/pkg/model/BUILD.bazel b/pkg/model/BUILD.bazel index db09715afa..1dbee77379 100644 --- a/pkg/model/BUILD.bazel +++ b/pkg/model/BUILD.bazel @@ -53,6 +53,8 @@ go_library( "deployment.go", "docs.go", "environment.go", + "event.pb.go", + "event.pb.validate.go", "filestore.go", "image_name.go", "imageprovider.go", @@ -66,7 +68,12 @@ go_library( importpath = "github.com/pipe-cd/pipe/pkg/model", visibility = ["//visibility:public"], deps = [ + "@com_github_envoyproxy_protoc_gen_validate//validate:go_default_library", + "@com_github_golang_protobuf//proto:go_default_library", + "@com_github_golang_protobuf//ptypes:go_default_library_gen", "@org_golang_google_protobuf//proto:go_default_library", + "@org_golang_google_protobuf//reflect/protoreflect:go_default_library", + "@org_golang_google_protobuf//runtime/protoimpl:go_default_library", "@org_golang_x_crypto//bcrypt:go_default_library", "@org_golang_x_oauth2//:go_default_library", "@org_golang_x_oauth2//github:go_default_library", From a4370c32f48a5ef52184dfbb0602ea82f3b12877 Mon Sep 17 00:00:00 2001 From: sanposhiho Date: Sun, 10 Jan 2021 21:35:57 +0900 Subject: [PATCH 2/5] Remove unuse deps --- pkg/model/BUILD.bazel | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pkg/model/BUILD.bazel b/pkg/model/BUILD.bazel index 1dbee77379..db09715afa 100644 --- a/pkg/model/BUILD.bazel +++ b/pkg/model/BUILD.bazel @@ -53,8 +53,6 @@ go_library( "deployment.go", "docs.go", "environment.go", - "event.pb.go", - "event.pb.validate.go", "filestore.go", "image_name.go", "imageprovider.go", @@ -68,12 +66,7 @@ go_library( importpath = "github.com/pipe-cd/pipe/pkg/model", visibility = ["//visibility:public"], deps = [ - "@com_github_envoyproxy_protoc_gen_validate//validate:go_default_library", - "@com_github_golang_protobuf//proto:go_default_library", - "@com_github_golang_protobuf//ptypes:go_default_library_gen", "@org_golang_google_protobuf//proto:go_default_library", - "@org_golang_google_protobuf//reflect/protoreflect:go_default_library", - "@org_golang_google_protobuf//runtime/protoimpl:go_default_library", "@org_golang_x_crypto//bcrypt:go_default_library", "@org_golang_x_oauth2//:go_default_library", "@org_golang_x_oauth2//github:go_default_library", From 4158a5a48ed1d7b3c42bf78e2e167bc209888249 Mon Sep 17 00:00:00 2001 From: Kensei Nakada <44139130+sanposhiho@users.noreply.github.com> Date: Tue, 12 Jan 2021 14:38:15 +0900 Subject: [PATCH 3/5] Restricting the scope of a variable `err` Co-authored-by: Le Van Nghia --- pkg/filestore/minio/minio.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkg/filestore/minio/minio.go b/pkg/filestore/minio/minio.go index 6291d56b70..7e6a007f17 100644 --- a/pkg/filestore/minio/minio.go +++ b/pkg/filestore/minio/minio.go @@ -101,13 +101,15 @@ func (s *Store) EnsureBucket(ctx context.Context) error { } func (s *Store) NewReader(ctx context.Context, path string) (rc io.ReadCloser, err error) { - _, err = s.client.StatObject(ctx, s.bucket, path, minio.GetObjectOptions{}) - if err != nil { - errRes := minio.ToErrorResponse(err) - if errRes.StatusCode == http.StatusNotFound { + if _, err := s.client.StatObject(ctx, s.bucket, path, minio.GetObjectOptions{}); err != nil { + e := minio.ToErrorResponse(err) + if e.StatusCode == http.StatusNotFound { err = filestore.ErrNotFound } - s.logger.Error("failed to create minio object reader", zap.String("path", path), zap.Error(err)) + s.logger.Error("failed to stat minio object", + zap.String("path", path), + zap.Error(err), + ) return } return s.client.GetObject(ctx, s.bucket, path, minio.GetObjectOptions{}) From 4e608abbb138722338e835d449b93465742ec393 Mon Sep 17 00:00:00 2001 From: pipecd-bot Date: Tue, 12 Jan 2021 05:39:48 +0000 Subject: [PATCH 4/5] Format unfmt-ed files --- pkg/filestore/minio/minio.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/filestore/minio/minio.go b/pkg/filestore/minio/minio.go index 7e6a007f17..aeb8fe66b7 100644 --- a/pkg/filestore/minio/minio.go +++ b/pkg/filestore/minio/minio.go @@ -106,7 +106,7 @@ func (s *Store) NewReader(ctx context.Context, path string) (rc io.ReadCloser, e if e.StatusCode == http.StatusNotFound { err = filestore.ErrNotFound } - s.logger.Error("failed to stat minio object", + s.logger.Error("failed to stat minio object", zap.String("path", path), zap.Error(err), ) From c5a8724b42e2f81f6c86f696d7af4c606338e04b Mon Sep 17 00:00:00 2001 From: Kensei Nakada <44139130+sanposhiho@users.noreply.github.com> Date: Tue, 12 Jan 2021 15:10:12 +0900 Subject: [PATCH 5/5] Fix assigning variable `err` Co-authored-by: Le Van Nghia --- pkg/filestore/minio/minio.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/filestore/minio/minio.go b/pkg/filestore/minio/minio.go index aeb8fe66b7..0011353ad7 100644 --- a/pkg/filestore/minio/minio.go +++ b/pkg/filestore/minio/minio.go @@ -101,7 +101,7 @@ func (s *Store) EnsureBucket(ctx context.Context) error { } func (s *Store) NewReader(ctx context.Context, path string) (rc io.ReadCloser, err error) { - if _, err := s.client.StatObject(ctx, s.bucket, path, minio.GetObjectOptions{}); err != nil { + if _, err = s.client.StatObject(ctx, s.bucket, path, minio.GetObjectOptions{}); err != nil { e := minio.ToErrorResponse(err) if e.StatusCode == http.StatusNotFound { err = filestore.ErrNotFound