Locked database

Hi,

I’m using:

  • Server:
    • Debian 11 10
    • Seafile Server 9.0.10
    • sqlite3 3.27.2
  • Client:
    • Debian Testing
    • Seafile client 8.0.10

I’m getting, server side, “database is locked” errors, quite often, this happens since I’ve upgraded sometime last year.

The errors are:

2023-01-14 18:04:54 ../common/seaf-db.c(1344): sqlite3_prepare_v2 failed SELECT 1 FROM Repo WHERE repo_id=?: database is locked
2023-01-14 18:04:54 http-server.c(901): DB error when check repo existence.

I suppose the locked database is seafile-data/seafile.db, however if I try to query this db using sqlite3 I get no error.

On the client side this has the effect of sometimes failing to sync with the server and get “Library damaged on server” errors:

[01/14/23 18:43:44] sync-mgr.c(640): Repo 'XXXXXX' sync state transition from initializing to 'error': 'Library damaged on server'

I’ve run seaf-fsck.sh but no errors where found.
I’ve checked the hardware for errors and, again, found no errors.

I’m running out of ideias.


An unimportant note, the log lines sometimes appear run-together, for example:

2023-01-14 18:28:59 ../common/seaf-db.c(1344): sqlite3_prepare_v2 failed SELECT r.repo_id, s.size, b.commit_id, v.repo_id, v.origin_repo, v.path, v.base_commit, fc.file_count, i.status FROM Repo r LEFT JOIN Branch b ON r.repo_id = b.repo_id LEFT JOIN RepoSize s ON r.repo_id = s.repo_id LEFT JOIN VirtualRepo v ON r.repo_id = v.repo_id LEFT JOIN RepoFileCount fc ON r.repo_id = fc.repo_id LEFT JOIN RepoInfo i on r.repo_id = i.repo_id WHERE r.repo_id = ? AND b.name = 'master': database is locked2023-01-14 18:28:59 ../common/seaf-db.c(1344): sqlite3_prepare_v2 failed SELECT r.repo_id, s.size, b.commit_id, v.repo_id, v.origin_repo, v.path, v.base_commit, fc.file_count, i.status FROM Repo r LEFT JOIN Branch b ON r.repo_id = b.repo_id LEFT JOIN RepoSize s ON r.repo_id = s.repo_id LEFT JOIN VirtualRepo v ON r.repo_id = v.repo_id LEFT JOIN RepoFileCount fc ON r.repo_id = fc.repo_id LEFT JOIN RepoInfo i on r.repo_id = i.repo_id WHERE r.repo_id = ? AND b.name = 'master': database is locked2023-01-14 18:28:59 ../common/seaf-db.c(1344): sqlite3_prepare_v2 failed SELECT r.repo_id, s.size, b.commit_id, v.repo_id, v.origin_repo, v.path, v.base_commit, fc.file_count, i.status FROM Repo r LEFT JOIN Branch b ON r.repo_id = b.repo_id LEFT JOIN RepoSize s ON r.repo_id = s.repo_id LEFT JOIN VirtualRepo v ON r.repo_id = v.repo_id LEFT JOIN RepoFileCount fc ON r.repo_id = fc.repo_id LEFT JOIN RepoInfo i on r.repo_id = i.repo_id WHERE r.repo_id = ? AND b.name = 'master': database is locked2023-01-14 18:28:59 virtual-repo.c(801): Failed to get virt repo 89936eaa-9.

Yesterday I migrated to mariadb, since then I had no more errors.