Add proper context based logging when bitrot stream calls fail (#7415)

master
Harshavardhana 6 years ago committed by kannappanr
parent 0250f7de67
commit 9629de8230
  1. 10
      cmd/bitrot-streaming.go
  2. 4
      cmd/bitrot.go

@ -84,9 +84,11 @@ func newStreamingBitrotWriter(disk StorageAPI, volume, filePath string, length i
totalFileSize := bitrotSumsTotalSize + length totalFileSize := bitrotSumsTotalSize + length
err := disk.CreateFile(volume, filePath, totalFileSize, r) err := disk.CreateFile(volume, filePath, totalFileSize, r)
if err != nil { if err != nil {
logger.LogIf(context.Background(), err) reqInfo := (&logger.ReqInfo{}).AppendTags("storageDisk", disk.String())
r.CloseWithError(err) ctx := logger.SetReqInfo(context.Background(), reqInfo)
logger.LogIf(ctx, err)
} }
r.CloseWithError(err)
close(bw.canClose) close(bw.canClose)
}() }()
return bw return bw
@ -125,7 +127,9 @@ func (b *streamingBitrotReader) ReadAt(buf []byte, offset int64) (int, error) {
streamOffset := (offset/b.shardSize)*int64(b.h.Size()) + offset streamOffset := (offset/b.shardSize)*int64(b.h.Size()) + offset
b.rc, err = b.disk.ReadFileStream(b.volume, b.filePath, streamOffset, b.tillOffset-streamOffset) b.rc, err = b.disk.ReadFileStream(b.volume, b.filePath, streamOffset, b.tillOffset-streamOffset)
if err != nil { if err != nil {
logger.LogIf(context.Background(), err) reqInfo := (&logger.ReqInfo{}).AppendTags("storageDisk", b.disk.String())
ctx := logger.SetReqInfo(context.Background(), reqInfo)
logger.LogIf(ctx, err)
return 0, err return 0, err
} }
} }

@ -133,7 +133,7 @@ func newBitrotReader(disk StorageAPI, bucket string, filePath string, tillOffset
// Close all the readers. // Close all the readers.
func closeBitrotReaders(rs []io.ReaderAt) { func closeBitrotReaders(rs []io.ReaderAt) {
for _, r := range rs { for _, r := range rs {
if br, ok := r.(*streamingBitrotReader); ok { if br, ok := r.(io.Closer); ok {
br.Close() br.Close()
} }
} }
@ -142,7 +142,7 @@ func closeBitrotReaders(rs []io.ReaderAt) {
// Close all the writers. // Close all the writers.
func closeBitrotWriters(ws []io.Writer) { func closeBitrotWriters(ws []io.Writer) {
for _, w := range ws { for _, w := range ws {
if bw, ok := w.(*streamingBitrotWriter); ok { if bw, ok := w.(io.Closer); ok {
bw.Close() bw.Close()
} }
} }

Loading…
Cancel
Save