Skip to content

Commit c4fce09

Browse files
committed
Improving error handling in helpers in case of malformed objects
1 parent 3e66613 commit c4fce09

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

helpers/getProducer.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,18 @@ func (producer *getProducer) queueBlobForTransfer(blob *helperModels.BlobDescrip
236236
return false // already been processed
237237
}
238238

239-
curReadObj := producer.readObjectMap[blob.Name()]
239+
curReadObj, ok := producer.readObjectMap[blob.Name()]
240+
if !ok {
241+
producer.Errorf("failed to find object associated with blob in object map: %s offset=%d length=%d", blob.Name(), blob.Offset(), blob.Length())
242+
producer.processedBlobTracker.MarkProcessed(*blob)
243+
return false // not actually transferring this blob
244+
}
245+
246+
if curReadObj.ChannelBuilder == nil {
247+
producer.Errorf("failed to transfer object, it does not have a channel builder: %s", curReadObj.Name)
248+
producer.processedBlobTracker.MarkProcessed(*blob)
249+
return false // not actually transferring this blob
250+
}
240251

241252
if curReadObj.ChannelBuilder.HasFatalError() {
242253
// a fatal error happened on a previous blob for this file, skip processing

helpers/putProducer.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,18 @@ func (producer *putProducer) queueBlobForTransfer(blob *helperModels.BlobDescrip
184184
return false // this was already processed
185185
}
186186

187-
curWriteObj := producer.writeObjectMap[blob.Name()]
187+
curWriteObj, ok := producer.writeObjectMap[blob.Name()]
188+
if !ok {
189+
producer.Errorf("failed to find object associated with blob in object map: %s offset=%d length=%d", blob.Name(), blob.Offset(), blob.Length())
190+
producer.processedBlobTracker.MarkProcessed(*blob)
191+
return false // not actually transferring this blob
192+
}
193+
194+
if curWriteObj.ChannelBuilder == nil {
195+
producer.Errorf("failed to transfer object, it does not have a channel builder: %s", curWriteObj.PutObject.Name)
196+
producer.processedBlobTracker.MarkProcessed(*blob)
197+
return false // not actually transferring this blob
198+
}
188199

189200
if curWriteObj.ChannelBuilder.HasFatalError() {
190201
// a fatal error happened on a previous blob for this file, skip processing

0 commit comments

Comments
 (0)