From 60fd7581e774c14a4d370b90672012b58a2739f4 Mon Sep 17 00:00:00 2001 From: Colin Marc Date: Mon, 13 Feb 2023 04:26:03 +0100 Subject: [PATCH] Remove unecessary completion "set" (#812) If the file has never been downloaded, complete will naturally be false. It's not necessary to then set it false again unless it was actually claimed to be true in the first place. In my tests, using the boltdb completion thingy with fsync turned *on*, this reduced the cold start for big buck bunny from multiple seconds to just a few ms. --- storage/file-piece.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/storage/file-piece.go b/storage/file-piece.go index 23cf4eec..47772017 100644 --- a/storage/file-piece.go +++ b/storage/file-piece.go @@ -28,20 +28,25 @@ func (fs *filePieceImpl) Completion() Completion { c.Ok = false return c } + + verified := true if c.Complete { // If it's allegedly complete, check that its constituent files have the necessary length. for _, fi := range extentCompleteRequiredLengths(fs.p.Info, fs.p.Offset(), fs.p.Length()) { s, err := os.Stat(fs.files[fi.fileIndex].path) if err != nil || s.Size() < fi.length { - c.Complete = false + verified = false break } } } - if !c.Complete { + + if !verified { // The completion was wrong, fix it. + c.Complete = false fs.completion.Set(fs.pieceKey(), false) } + return c } -- 2.48.1