11//
2- // Copyright 2024 The Chainloop Authors.
2+ // Copyright 2024-2026 The Chainloop Authors.
33//
44// Licensed under the Apache License, Version 2.0 (the "License");
55// you may not use this file except in compliance with the License.
@@ -75,15 +75,15 @@ func (s *ByteStreamService) Write(stream bytestream.ByteStream_WriteServer) erro
7575 return kerrors .BadRequest ("resource name" , err .Error ())
7676 }
7777
78- backend , err := s .loadBackend (ctx , info .BackendType , info .StoredSecretID )
78+ storageBackend , err := s .loadBackend (ctx , info .BackendType , info .StoredSecretID )
7979 if err != nil && kerrors .IsNotFound (err ) {
8080 return err
8181 } else if err != nil {
8282 return sl .LogAndMaskErr (err , s .log )
8383 }
8484
8585 // We check if the file already exists even before we wait for the whole buffer to be filled
86- if exists , err := backend .Exists (ctx , req .resource .Digest ); err != nil {
86+ if exists , err := storageBackend .Exists (ctx , req .resource .Digest ); err != nil {
8787 return sl .LogAndMaskErr (err , s .log )
8888 } else if exists {
8989 s .log .Infow ("msg" , "artifact already exists" , "digest" , req .resource .Digest )
@@ -95,6 +95,9 @@ func (s *ByteStreamService) Write(stream bytestream.ByteStream_WriteServer) erro
9595 buffer := newStreamReader (info .MaxBytes )
9696 // Add data from first request
9797 if err = buffer .Write (req .GetData ()); err != nil {
98+ if backend .IsUploadSizeExceeded (err ) {
99+ return status .Error (codes .ResourceExhausted , err .Error ())
100+ }
98101 return sl .LogAndMaskErr (err , s .log )
99102 }
100103
@@ -115,11 +118,14 @@ func (s *ByteStreamService) Write(stream bytestream.ByteStream_WriteServer) erro
115118 s .log .Infow ("msg" , "upload canceled" , "digest" , req .resource .Digest , "name" , req .resource .FileName )
116119 return nil
117120 }
121+ if backend .IsUploadSizeExceeded (err ) {
122+ return status .Error (codes .ResourceExhausted , err .Error ())
123+ }
118124 return sl .LogAndMaskErr (err , s .log )
119125 }
120126
121127 s .log .Infow ("msg" , "artifact received, uploading now to backend" , "name" , req .resource .FileName , "digest" , req .resource .Digest , "size" , buffer .size )
122- if err := backend .Upload (ctx , buffer , req .resource ); err != nil {
128+ if err := storageBackend .Upload (ctx , buffer , req .resource ); err != nil {
123129 return sl .LogAndMaskErr (err , s .log )
124130 }
125131
@@ -245,7 +251,7 @@ func (r *streamReader) Write(data []byte) error {
245251 // Check if the size of the buffer has exceeded the maximum allowed size
246252 // if maxSize is 0, then there is no limit
247253 if r .maxSize != 0 && r .size > r .maxSize {
248- return fmt . Errorf ( "max size of upload exceeded: want=%d, max=%d" , r .size , r .maxSize )
254+ return backend . NewErrUploadSizeExceeded ( r .size , r .maxSize )
249255 }
250256
251257 _ , err := r .Buffer .Write (data )
0 commit comments