From ef6d561c66d90a3ab0454fe18fc531ded168d3e4 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Fri, 6 Jun 2025 11:27:53 +0200 Subject: [PATCH] chore(sqlite): linter complaints --- .golangci.yml | 2 ++ go.mod | 1 - go.sum | 2 -- internal/db/sqlite/db_folderdb.go | 2 +- internal/db/sqlite/db_open.go | 16 ++++++++++++---- internal/db/sqlite/db_service.go | 8 +++++--- internal/db/sqlite/folderdb_open.go | 6 +++++- internal/db/sqlite/folderdb_update.go | 9 +++++---- 8 files changed, 30 insertions(+), 16 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 6d83857a3..3e5c436bc 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -8,12 +8,14 @@ linters: - exhaustive - exhaustruct - forbidigo + - funcorder - funlen - gochecknoglobals - gochecknoinits - gocognit - goconst - gocyclo + - godot - godox - gomoddirectives - inamedparam diff --git a/go.mod b/go.mod index edd012200..5af31ba21 100644 --- a/go.mod +++ b/go.mod @@ -61,7 +61,6 @@ require ( github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/coreos/go-semver v0.3.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dustin/go-humanize v1.0.1 // indirect diff --git a/go.sum b/go.sum index 5f505877f..a10124f68 100644 --- a/go.sum +++ b/go.sum @@ -48,8 +48,6 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= -github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= diff --git a/internal/db/sqlite/db_folderdb.go b/internal/db/sqlite/db_folderdb.go index 5b45713f0..077b73a6a 100644 --- a/internal/db/sqlite/db_folderdb.go +++ b/internal/db/sqlite/db_folderdb.go @@ -255,7 +255,7 @@ func (s *DB) ListDevicesForFolder(folder string) ([]protocol.DeviceID, error) { func (s *DB) RemoteSequences(folder string) (map[protocol.DeviceID]int64, error) { fdb, err := s.getFolderDB(folder, false) if errors.Is(err, errNoSuchFolder) { - return nil, nil + return nil, nil //nolint:nilnil } if err != nil { return nil, err diff --git a/internal/db/sqlite/db_open.go b/internal/db/sqlite/db_open.go index ce8fe7851..072755f3c 100644 --- a/internal/db/sqlite/db_open.go +++ b/internal/db/sqlite/db_open.go @@ -50,10 +50,14 @@ func Open(path string, opts ...Option) (*DB, error) { "sql/schema/common/*", "sql/schema/main/*", } + migrations := []string{ + "sql/migrations/common/*", + "sql/migrations/main/*", + } - os.MkdirAll(path, 0o700) + _ = os.MkdirAll(path, 0o700) mainPath := filepath.Join(path, "main.db") - mainBase, err := openBase(mainPath, maxDBConns, pragmas, schemas, nil) + mainBase, err := openBase(mainPath, maxDBConns, pragmas, schemas, migrations) if err != nil { return nil, err } @@ -88,10 +92,14 @@ func OpenForMigration(path string) (*DB, error) { "sql/schema/common/*", "sql/schema/main/*", } + migrations := []string{ + "sql/migrations/common/*", + "sql/migrations/main/*", + } - os.MkdirAll(path, 0o700) + _ = os.MkdirAll(path, 0o700) mainPath := filepath.Join(path, "main.db") - mainBase, err := openBase(mainPath, 1, pragmas, schemas, nil) + mainBase, err := openBase(mainPath, 1, pragmas, schemas, migrations) if err != nil { return nil, err } diff --git a/internal/db/sqlite/db_service.go b/internal/db/sqlite/db_service.go index 635542ad5..38695785e 100644 --- a/internal/db/sqlite/db_service.go +++ b/internal/db/sqlite/db_service.go @@ -84,8 +84,11 @@ func (s *Service) periodic(ctx context.Context) error { defer func() { l.Debugln("Periodic done in", time.Since(t1), "+", t1.Sub(t0)) }() s.sdb.updateLock.Lock() - tidy(ctx, s.sdb.sql) + err := tidy(ctx, s.sdb.sql) s.sdb.updateLock.Unlock() + if err != nil { + return err + } return wrap(s.sdb.forEachFolder(func(fdb *folderDB) error { fdb.updateLock.Lock() @@ -97,8 +100,7 @@ func (s *Service) periodic(ctx context.Context) error { if err := garbageCollectBlocklistsAndBlocksLocked(ctx, fdb); err != nil { return wrap(err) } - tidy(ctx, fdb.sql) - return nil + return tidy(ctx, fdb.sql) })) } diff --git a/internal/db/sqlite/folderdb_open.go b/internal/db/sqlite/folderdb_open.go index f0b96bd28..5c38b112d 100644 --- a/internal/db/sqlite/folderdb_open.go +++ b/internal/db/sqlite/folderdb_open.go @@ -32,8 +32,12 @@ func openFolderDB(folder, path string, deleteRetention time.Duration) (*folderDB "sql/schema/common/*", "sql/schema/folder/*", } + migrations := []string{ + "sql/migrations/common/*", + "sql/migrations/folder/*", + } - base, err := openBase(path, maxDBConns, pragmas, schemas, nil) + base, err := openBase(path, maxDBConns, pragmas, schemas, migrations) if err != nil { return nil, err } diff --git a/internal/db/sqlite/folderdb_update.go b/internal/db/sqlite/folderdb_update.go index 3e5befb9b..f787ab8c3 100644 --- a/internal/db/sqlite/folderdb_update.go +++ b/internal/db/sqlite/folderdb_update.go @@ -433,7 +433,7 @@ type fileRow struct { func (e fileRow) Compare(other fileRow) int { // From FileInfo.WinsConflict - vc := e.Version.Vector.Compare(other.Version.Vector) + vc := e.Version.Compare(other.Version.Vector) switch vc { case protocol.Equal: if e.Invalid != other.Invalid { @@ -519,11 +519,12 @@ func (s *folderDB) periodicCheckpointLocked(fs []protocol.FileInfo) { // failed, we'll keep trying it until we succeed. Increase it faster // when we fail to checkpoint, as it's more likely the WAL is // growing and will need truncation when we get out of this state. - if res == 1 { + switch { + case res == 1: s.checkpointsCount += 10 - } else if res == 0 && checkpointType == "TRUNCATE" { + case res == 0 && checkpointType == "TRUNCATE": s.checkpointsCount = 0 - } else { + default: s.checkpointsCount++ } s.updatePoints = 0