From 5fbb8a21ab177145eefd7a94ae18ec33bc6ef992 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Mon, 23 Dec 2024 22:46:10 +0200 Subject: [PATCH] hicli/sync: fix detecting db lock errors --- pkg/hicli/syncwrap.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/hicli/syncwrap.go b/pkg/hicli/syncwrap.go index e479e1c..8492da2 100644 --- a/pkg/hicli/syncwrap.go +++ b/pkg/hicli/syncwrap.go @@ -13,6 +13,7 @@ import ( "time" "github.com/mattn/go-sqlite3" + "github.com/rs/zerolog" "maunium.net/go/mautrix" "maunium.net/go/mautrix/id" @@ -46,7 +47,9 @@ func (h *hiSyncer) ProcessResponse(ctx context.Context, resp *mautrix.RespSync, err = c.DB.DoTxn(ctx, nil, func(ctx context.Context) error { return c.processSyncResponse(ctx, resp, since) }) - if errors.Is(err, sqlite3.ErrLocked) && i < 24 { + var sqliteErr sqlite3.Error + if errors.As(err, &sqliteErr) && sqliteErr.Code == sqlite3.ErrBusy && i < 24 { + zerolog.Ctx(ctx).Warn().Err(err).Msg("Database is busy, retrying") c.markSyncErrored(err, false) continue } else if err != nil {