@@ -30,7 +30,6 @@ import (
3030)
3131
3232var (
33- ErrBlobNotFound = errors .New ("blob: not found" )
3433 ErrInvalidProof = errors .New ("blob: invalid proof" )
3534
3635 log = logging .Logger ("blob" )
@@ -296,7 +295,7 @@ func (s *Service) GetProof(
296295// the user will receive all found blobs along with a combined error message.
297296//
298297// All blobs will preserve the order of the namespaces that were requested.
299- func (s * Service ) GetAll (ctx context.Context , height uint64 , namespaces []libshare.Namespace ) (_ []* Blob , err error ) {
298+ func (s * Service ) GetAll (ctx context.Context , height uint64 , namespaces []libshare.Namespace ) (blobs []* Blob , err error ) {
300299 ctx , span := tracer .Start (ctx , "blob/get-all" )
301300 defer func () {
302301 utils .SetStatusAndEnd (span , err )
@@ -318,49 +317,62 @@ func (s *Service) GetAll(ctx context.Context, height uint64, namespaces []libsha
318317
319318 header , err := s .headerGetter (ctx , height )
320319 if err != nil {
321- return nil , err
320+ return nil , fmt .Errorf ("err getting header: %w" , err )
321+ }
322+
323+ blobs , err = s .getAll (ctx , header , namespaces )
324+ if err != nil {
325+ return blobs , fmt .Errorf ("err getting blobs: %w" , err )
322326 }
323327
324- return s .getAll (ctx , header , namespaces )
328+ namespaceStrings := make ([]string , len (namespaces ))
329+ for i := range namespaces {
330+ namespaceStrings [i ] = namespaces [i ].String ()
331+ }
332+ span .SetAttributes (attribute .StringSlice ("namespaces" , namespaceStrings ))
333+ span .SetAttributes (attribute .Int ("total" , len (blobs )))
334+ return blobs , nil
325335}
326336
327337func (s * Service ) getAll (
328338 ctx context.Context ,
329339 header * header.ExtendedHeader ,
330340 namespaces []libshare.Namespace ,
331- ) ([]* Blob , error ) {
341+ ) (_ []* Blob , err error ) {
332342 var (
333- span = trace .SpanFromContext (ctx )
334- namespaceStrings = make ([]string , len (namespaces ))
335- resultBlobs = make ([][]* shwap.Blob , len (namespaces ))
336- resultErr = make ([]error , len (namespaces ))
337- wg = sync.WaitGroup {}
343+ resultBlobs = make ([][]* shwap.Blob , len (namespaces ))
344+ resultErr = make ([]error , len (namespaces ))
345+ wg = sync.WaitGroup {}
338346 )
339347
340348 for i , namespace := range namespaces {
341349 wg .Add (1 )
342350 go func (i int , namespace libshare.Namespace ) {
343351 defer wg .Done ()
352+ log .Debugw ("retrieving all blobs from" , "namespace" , namespace .String (), "height" , header .Height ())
344353 resultBlobs [i ], resultErr [i ] = s .shareGetter .GetBlobs (ctx , header , namespace )
354+ if errors .Is (resultErr [i ], shwap .ErrNotFound ) {
355+ resultErr [i ] = nil
356+ }
345357 }(i , namespace )
346-
347- namespaceStrings [i ] = namespace .String ()
348358 }
349- span .SetAttributes (attribute .StringSlice ("namespaces" , namespaceStrings ))
350359 wg .Wait ()
351360
352361 blbs := slices .Concat (resultBlobs ... )
353- errs := errors .Join (resultErr ... )
362+ err = errors .Join (resultErr ... )
363+ if len (blbs ) == 0 {
364+ return nil , err
365+ }
354366
355367 blobs := make ([]* Blob , len (blbs ))
356368 for i , blb := range blbs {
357- blob , err := fromShwapBlob (blb , len (header .DAH .RowRoots )/ 2 )
369+ blob , convertErr := fromShwapBlob (blb , len (header .DAH .RowRoots )/ 2 )
358370 if err != nil {
359- errs = errors .Join (errs , err )
371+ err = errors .Join (err , convertErr )
360372 }
361373 blobs [i ] = blob
362374 }
363- return blobs , errs
375+ return blobs , err
364376}
365377
366378// Included verifies that the blob was included in a specific height.
@@ -406,6 +418,9 @@ func (s *Service) Included(
406418
407419 shwapBlob , err := s .shareGetter .GetBlob (ctx , header , namespace , commitment )
408420 if err != nil {
421+ if errors .Is (err , shwap .ErrBlobNotFound ) {
422+ err = nil
423+ }
409424 return false , err
410425 }
411426
0 commit comments