Skip to content

Commit 97cdb71

Browse files
authored
Merge pull request #106 from RachelTucker/OTHER-improve-error-message
OTHER: improving error message when retriving a file from the BP ends up with less data then expected
2 parents bdaaae4 + 813c2bf commit 97cdb71

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)