From d87ae4f6a997bd38df4b5c7bcee5b1fbff9cf0dd Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Wed, 20 May 2015 22:21:20 +1000 Subject: [PATCH] data/blob: Tidy error handling in WriteSectionTo --- data/blob/blob.go | 4 ---- data/blob/store.go | 8 +++++--- 2 files changed, 5 insertions(+), 7 deletions(-) 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 { -- 2.48.1