From: Matt Joiner <anacrolix@gmail.com>
Date: Thu, 27 Jun 2024 04:31:31 +0000 (+1000)
Subject: Fix sqlite piece completion error when dirs are missing
X-Git-Tag: v1.57.0~27
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=c5175082b72b1e03d990c0f49be1ccdb351ee5c8;p=btrtrc.git

Fix sqlite piece completion error when dirs are missing
---

diff --git a/storage/piece-completion.go b/storage/piece-completion.go
index bc646bd7..edc1e086 100644
--- a/storage/piece-completion.go
+++ b/storage/piece-completion.go
@@ -2,6 +2,7 @@ package storage
 
 import (
 	"github.com/anacrolix/log"
+	"os"
 
 	"github.com/anacrolix/torrent/metainfo"
 )
@@ -18,9 +19,12 @@ type PieceCompletion interface {
 }
 
 func pieceCompletionForDir(dir string) (ret PieceCompletion) {
+	// This should be happening before sqlite attempts to open a database in the intended directory.
+	os.MkdirAll(dir, 0o700)
 	ret, err := NewDefaultPieceCompletionForDir(dir)
 	if err != nil {
-		log.Printf("couldn't open piece completion db in %q: %s", dir, err)
+		// This kinda sux using the global logger. This code is ancient.
+		log.Levelf(log.Warning, "couldn't open piece completion db in %q: %s", dir, err)
 		ret = NewMapPieceCompletion()
 	}
 	return