vikunja/pkg
kolaente 26c0f71b6c
fix(db): use immediate txlock for SQLite instead of MaxOpenConns(1)
MaxOpenConns(1) caused Go-level deadlocks: when two goroutines needed
database connections concurrently, the second blocked forever waiting
for the single connection pool slot. This broke CI (sqlite web tests
timed out after 45min, e2e tests hung).

The actual "database is locked" errors were caused by SQLite's default
deferred transaction locking: two connections both acquire SHARED locks,
then deadlock when both try to promote to RESERVED for writing. SQLite
detects this instantly and returns SQLITE_BUSY, bypassing busy_timeout.

_txlock=immediate fixes this by acquiring the write lock at BEGIN time.
The second concurrent transaction waits (up to busy_timeout) instead of
deadlocking. Combined with WAL mode (concurrent readers + single writer),
this handles concurrency correctly without restricting the Go connection
pool.
2026-03-02 14:03:33 +01:00
..
caldav fix(caldav): do not assume the first element is the VTODO component 2025-12-13 15:30:22 +01:00
cmd feat(cli): reorganize repair commands under unified 'vikunja repair' parent (#2300) 2026-02-25 11:50:09 +00:00
config refactor: remove typesense support 2026-02-25 12:15:28 +01:00
cron fix: correct license header references (#882) 2025-06-10 12:18:38 +02:00
db fix(db): use immediate txlock for SQLite instead of MaxOpenConns(1) 2026-03-02 14:03:33 +01:00
doctor refactor: remove typesense support 2026-02-25 12:15:28 +01:00
events fix(events): only trigger task.updated once when marking task done 2025-11-16 11:01:15 +01:00
files feat(cli): reorganize repair commands under unified 'vikunja repair' parent (#2300) 2026-02-25 11:50:09 +00:00
health feat: introduce shared health check logic (#1073) 2025-07-02 21:01:41 +00:00
i18n chore(i18n): update translations via Crowdin 2026-02-21 01:09:54 +00:00
initialize refactor: remove typesense support 2026-02-25 12:15:28 +01:00
log fix(log): write each log category to its own file (#2206) 2026-02-08 15:22:58 +00:00
mail fix(mail): disable queue when mailer disabled (#2069) 2026-01-08 15:51:31 +01:00
metrics fix: correct license header references (#882) 2025-06-10 12:18:38 +02:00
migration refactor: remove typesense support 2026-02-25 12:15:28 +01:00
models fix: use MinPositionSpacing threshold in calculateNewPositionForTask (#2320) 2026-03-02 09:14:38 +01:00
modules fix(auth): use SameSite=None for refresh token cookie to fix desktop app 2026-03-02 13:54:10 +01:00
notifications fix: isolate deletion notifications into per-user transactions 2026-02-25 11:03:02 +01:00
plugins fix(deps): update module github.com/labstack/echo/v4 to v5 (#2131) 2026-01-24 20:38:32 +01:00
red fix: correct license header references (#882) 2025-06-10 12:18:38 +02:00
routes feat(api): enforce password validation on reset and update flows 2026-02-25 13:44:56 +01:00
swagger [skip ci] Updated swagger docs 2026-02-25 13:05:32 +00:00
user fix(auth): correctly delete older password reset tokens in cron 2026-02-27 14:44:26 +01:00
utils refactor(utils): extract ContainsPathTraversal to shared utils package 2026-02-25 13:01:00 +01:00
version fix: correct license header references (#882) 2025-06-10 12:18:38 +02:00
web fix(deps): update module github.com/labstack/echo/v4 to v5 (#2131) 2026-01-24 20:38:32 +01:00
webtests test(api): add tests for password validation in reset and update flows 2026-02-25 13:44:56 +01:00