From: Matt Joiner Date: Wed, 20 May 2015 12:21:20 +0000 (+1000) Subject: data/blob: Tidy error handling in WriteSectionTo X-Git-Tag: v1.0.0~1181 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=d87ae4f6a997bd38df4b5c7bcee5b1fbff9cf0dd;p=btrtrc.git data/blob: Tidy error handling in WriteSectionTo --- diff --git a/data/blob/blob.go b/data/blob/blob.go index d0741ed6..0afc047b 100644 --- a/data/blob/blob.go +++ b/data/blob/blob.go @@ -100,11 +100,7 @@ func (me *data) WriteSectionTo(w io.Writer, off, n int64) (written int64, err er var pr io.ReadCloser pr, err = me.pieceReader(i, off) if err != nil { - if err == io.EOF { - err = nil - } return - pr.Close() } var n1 int64 n1, err = io.CopyN(w, pr, n) diff --git a/data/blob/store.go b/data/blob/store.go index 662e8cc8..06ff2f7a 100644 --- a/data/blob/store.go +++ b/data/blob/store.go @@ -122,6 +122,8 @@ func (me *store) pieceWrite(p metainfo.Piece) (f *os.File) { return } +// Returns the file for the given piece, if it exists. It could be completed, +// or incomplete. func (me *store) pieceRead(p metainfo.Piece) (f *os.File) { me.mu.Lock() defer me.mu.Unlock() @@ -132,9 +134,9 @@ func (me *store) pieceRead(p metainfo.Piece) (f *os.File) { if !os.IsNotExist(err) { panic(err) } - // Ermahgerd, self heal. This occurs when the underlying data goes - // missing, likely due to a "cache flush", also known as deleting the - // files. TODO: Trigger an asynchronous initCompleted. + // Mark the file not completed, in case we thought it was. TODO: Trigger + // an asynchronous initCompleted to reinitialize the entire completed map + // as there are likely other files missing. delete(me.completed, sliceToPieceHashArray(p.Hash())) f, err = os.Open(me.path(p, false)) if err == nil {