7253: instead of ignoring errors during BlockIterWithDuplicates, send them to the...
[arvados.git] / services / datamanager / collection / collection.go
index 7102ec3c054bb24df5e3e0979784b9c08b3949ed..0d583c2c99845ffcbd0841b73e28a78ab90d1592 100644 (file)
@@ -286,16 +286,20 @@ func ProcessCollections(arvLogger *logger.Logger,
 
                blockChannel := manifest.BlockIterWithDuplicates()
                for block := range blockChannel {
-                       if storedSize, stored := collection.BlockDigestToSize[block.Digest]; stored && storedSize != block.Size {
+                       if block.Err != nil {
+                               err = block.Err
+                               return
+                       }
+                       if storedSize, stored := collection.BlockDigestToSize[block.Locator.Digest]; stored && storedSize != block.Locator.Size {
                                err = fmt.Errorf(
                                        "Collection %s contains multiple sizes (%d and %d) for block %s",
                                        collection.UUID,
                                        storedSize,
-                                       block.Size,
-                                       block.Digest)
+                                       block.Locator.Size,
+                                       block.Locator.Digest)
                                return
                        }
-                       collection.BlockDigestToSize[block.Digest] = block.Size
+                       collection.BlockDigestToSize[block.Locator.Digest] = block.Locator.Size
                }
                collection.TotalSize = 0
                for _, size := range collection.BlockDigestToSize {