Skip to content

Commit 8dc6be5

Browse files
committed
OTHER: improving error message when retriving a file from the BP ends up with less data then expected. Originally this returned an Unexpected EOF error, which is not very descriptive. Now it mentions how much data was retrieved, and on which blob the data failed to be retrieved from.
1 parent bdad56b commit 8dc6be5

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

helpers/getProducer.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package helpers
22

33
import (
4+
"fmt"
45
"github.com/SpectraLogic/ds3_go_sdk/ds3"
56
ds3Models "github.com/SpectraLogic/ds3_go_sdk/ds3/models"
67
helperModels "github.com/SpectraLogic/ds3_go_sdk/helpers/models"
@@ -137,8 +138,15 @@ func (producer *getProducer) transferOperationBuilder(info getObjectInfo) Transf
137138
return
138139
}
139140
defer info.channelBuilder.OnDone(writer)
140-
_, err = io.Copy(writer, getObjResponse.Content) //copy all content from response reader to destination writer
141-
if err != nil {
141+
bytesWritten, err := io.Copy(writer, getObjResponse.Content) //copy all content from response reader to destination writer
142+
if err != nil && err != io.ErrUnexpectedEOF {
143+
producer.strategy.Listeners.Errored(info.blob.Name(), err)
144+
info.channelBuilder.SetFatalError(err)
145+
producer.Errorf("unable to copy content of object '%s' at offset '%d' from source to destination: %s", info.blob.Name(), info.blob.Offset(), err.Error())
146+
return
147+
}
148+
if bytesWritten != info.blob.Length() {
149+
err = fmt.Errorf("failed to copy all content of object '%s' at offset '%d': only wrote %d of %d bytes", info.blob.Name(), info.blob.Offset(), bytesWritten, info.blob.Length())
142150
producer.strategy.Listeners.Errored(info.blob.Name(), err)
143151
info.channelBuilder.SetFatalError(err)
144152
producer.Errorf("unable to copy content of object '%s' at offset '%d' from source to destination: %s", info.blob.Name(), info.blob.Offset(), err.Error())

0 commit comments

Comments
 (0)