Skip to content

Commit cf42966

Browse files
authored
[1.15] Fix gcp bucket binding create + improve error messages. (#3678)
Signed-off-by: Artur Souza <[email protected]>
1 parent 27f0435 commit cf42966

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

bindings/gcp/bucket/bucket.go

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ func (g *GCPStorage) create(ctx context.Context, req *bindings.InvokeRequest) (*
164164
var err error
165165
metadata, err := g.metadata.mergeWithRequestMetadata(req)
166166
if err != nil {
167-
return nil, fmt.Errorf("gcp bucket binding error. error merge metadata : %w", err)
167+
return nil, fmt.Errorf("gcp bucket binding error while merging metadata : %w", err)
168168
}
169169

170170
var name string
@@ -186,14 +186,23 @@ func (g *GCPStorage) create(ctx context.Context, req *bindings.InvokeRequest) (*
186186
}
187187

188188
h := g.client.Bucket(g.metadata.Bucket).Object(name).NewWriter(ctx)
189-
defer h.Close()
189+
// Cannot do `defer h.Close()` as Close() will flush the bytes and need to have error handling.
190190
if _, err = io.Copy(h, r); err != nil {
191-
return nil, fmt.Errorf("gcp bucket binding error. Uploading: %w", err)
191+
cerr := h.Close()
192+
if cerr != nil {
193+
return nil, fmt.Errorf("gcp bucket binding error while uploading and closing: %w", err)
194+
}
195+
return nil, fmt.Errorf("gcp bucket binding error while uploading: %w", err)
196+
}
197+
198+
err = h.Close()
199+
if err != nil {
200+
return nil, fmt.Errorf("gcp bucket binding error while flushing: %w", err)
192201
}
193202

194203
objectURL, err := url.Parse(fmt.Sprintf(objectURLBase, g.metadata.Bucket, name))
195204
if err != nil {
196-
return nil, fmt.Errorf("gcp bucket binding error. error building url response: %w", err)
205+
return nil, fmt.Errorf("gcp bucket binding error while building url response: %w", err)
197206
}
198207

199208
resp := createResponse{
@@ -202,7 +211,7 @@ func (g *GCPStorage) create(ctx context.Context, req *bindings.InvokeRequest) (*
202211

203212
b, err := json.Marshal(resp)
204213
if err != nil {
205-
return nil, fmt.Errorf("gcp binding error. error marshalling create response: %w", err)
214+
return nil, fmt.Errorf("gcp bucket binding error while marshalling the create response: %w", err)
206215
}
207216

208217
return &bindings.InvokeResponse{
@@ -213,7 +222,7 @@ func (g *GCPStorage) create(ctx context.Context, req *bindings.InvokeRequest) (*
213222
func (g *GCPStorage) get(ctx context.Context, req *bindings.InvokeRequest) (*bindings.InvokeResponse, error) {
214223
metadata, err := g.metadata.mergeWithRequestMetadata(req)
215224
if err != nil {
216-
return nil, fmt.Errorf("gcp binding error. error merge metadata : %w", err)
225+
return nil, fmt.Errorf("gcp binding error while merging metadata : %w", err)
217226
}
218227

219228
var key string
@@ -231,13 +240,13 @@ func (g *GCPStorage) get(ctx context.Context, req *bindings.InvokeRequest) (*bin
231240
return nil, errors.New("object not found")
232241
}
233242

234-
return nil, fmt.Errorf("gcp bucketgcp bucket binding error: error downloading bucket object: %w", err)
243+
return nil, fmt.Errorf("gcp bucketgcp bucket binding error while downloading object: %w", err)
235244
}
236245
defer rc.Close()
237246

238247
data, err := io.ReadAll(rc)
239248
if err != nil {
240-
return nil, fmt.Errorf("gcp bucketgcp bucket binding error: io.ReadAll: %v", err)
249+
return nil, fmt.Errorf("gcp bucketgcp bucket binding error while reading: %v", err)
241250
}
242251

243252
if metadata.EncodeBase64 {
@@ -299,7 +308,7 @@ func (g *GCPStorage) list(ctx context.Context, req *bindings.InvokeRequest) (*bi
299308

300309
jsonResponse, err := json.Marshal(result)
301310
if err != nil {
302-
return nil, fmt.Errorf("gcp bucketgcp bucket binding error. list operation. cannot marshal blobs to json: %w", err)
311+
return nil, fmt.Errorf("gcp bucketgcp bucket binding error while listing: cannot marshal blobs to json: %w", err)
303312
}
304313

305314
return &bindings.InvokeResponse{
@@ -348,7 +357,7 @@ func (g *GCPStorage) GetComponentMetadata() (metadataInfo metadata.MetadataMap)
348357
func (g *GCPStorage) sign(ctx context.Context, req *bindings.InvokeRequest) (*bindings.InvokeResponse, error) {
349358
metadata, err := g.metadata.mergeWithRequestMetadata(req)
350359
if err != nil {
351-
return nil, fmt.Errorf("gcp binding error. error merge metadata : %w", err)
360+
return nil, fmt.Errorf("gcp binding error while merging metadata : %w", err)
352361
}
353362

354363
var key string
@@ -371,7 +380,7 @@ func (g *GCPStorage) sign(ctx context.Context, req *bindings.InvokeRequest) (*bi
371380
SignURL: signURL,
372381
})
373382
if err != nil {
374-
return nil, fmt.Errorf("gcp bucket binding error: error marshalling sign response: %w", err)
383+
return nil, fmt.Errorf("gcp bucket binding error while marshalling sign response: %w", err)
375384
}
376385
return &bindings.InvokeResponse{
377386
Data: jsonResponse,
@@ -381,7 +390,7 @@ func (g *GCPStorage) sign(ctx context.Context, req *bindings.InvokeRequest) (*bi
381390
func (g *GCPStorage) signObject(bucket, object, ttl string) (string, error) {
382391
d, err := time.ParseDuration(ttl)
383392
if err != nil {
384-
return "", fmt.Errorf("gcp bucket binding error: error parsing signTTL: %w", err)
393+
return "", fmt.Errorf("gcp bucket binding error while parsing signTTL: %w", err)
385394
}
386395
opts := &storage.SignedURLOptions{
387396
Scheme: storage.SigningSchemeV4,

0 commit comments

Comments
 (0)