benbjohnson / litestream

Streaming replication for SQLite.
https://litestream.io
Apache License 2.0
11.1k stars 256 forks source link

Provide the correct context for database lock acquisition #601

Open kirusfg opened 3 months ago

kirusfg commented 3 months ago

The problem is that a DB context was being used to acquire a database lock when doing the last sync on database Close. At that point in time, the DB context has already been cancelled, hence this last sync could fail and produce an error "error closing db".

I think this is a concurrency issue, but I could not replicate it locally. However, we have been using Litestream in production at work, and probably because our VMs are much less computationally capable (1 CPU, 512MB RAM), this bug was very apparent.

Below are our logs from production. We shipped this change on Aug 7 at 1PM, and no errors since.

Logs from Litestream