From 033f3a4d5153c681146139c1bf10800fee3770e1 Mon Sep 17 00:00:00 2001 From: poornas Date: Thu, 2 May 2019 08:27:10 -0700 Subject: [PATCH] gcs: check error on object writer close (#7606) Fixes #7605. Object metadata should be written to storage only when the object was written successfully --- cmd/gateway/gcs/gateway-gcs.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cmd/gateway/gcs/gateway-gcs.go b/cmd/gateway/gcs/gateway-gcs.go index 5424cea04..5aa0d6c09 100644 --- a/cmd/gateway/gcs/gateway-gcs.go +++ b/cmd/gateway/gcs/gateway-gcs.go @@ -915,15 +915,12 @@ func (l *gcsGateway) PutObject(ctx context.Context, bucket string, key string, r } // Close the object writer upon success. - w.Close() - - attrs, err := object.Attrs(ctx) - if err != nil { + if err := w.Close(); err != nil { logger.LogIf(ctx, err) return minio.ObjectInfo{}, gcsToObjectError(err, bucket, key) } - return fromGCSAttrsToObjectInfo(attrs), nil + return fromGCSAttrsToObjectInfo(w.Attrs()), nil } // CopyObject - Copies a blob from source container to destination container. @@ -1093,7 +1090,10 @@ func (l *gcsGateway) PutObjectPart(ctx context.Context, bucket string, key strin return minio.PartInfo{}, gcsToObjectError(err, bucket, key) } // Make sure to close the object writer upon success. - w.Close() + if err := w.Close(); err != nil { + logger.LogIf(ctx, err) + return minio.PartInfo{}, gcsToObjectError(err, bucket, key) + } return minio.PartInfo{ PartNumber: partNumber, ETag: etag,