Hello,
Over the last few weeks I made sure that all Cuirass SQL queries were using indexes. As the "Builds" and "Outputs" tables can be really large, having queries covered by indexes is imperative for consistent queries duration. However, I observed that some queries have inconsistent duration. --8<---------------cut here---------------start------------->8--- 2020-10-07T17:59:09 Database worker unresponsive for 5 seconds (db-get-builds-max). 2020-10-07T17:59:13 GET /build/3183151/details 2020-10-07T17:59:13 GET /eval/92 2020-10-07T17:59:14 builds request took 3.66e-4 seconds 2020-10-07T17:59:14 Database worker unresponsive for 5 seconds (db-get-builds-max). 2020-10-07T17:59:15 GET /eval/13234 2020-10-07T17:59:16 GET /build/3146487/details 2020-10-07T17:59:19 Database worker unresponsive for 5 seconds (db-get-builds-max). --8<---------------cut here---------------end--------------->8--- "db-get-builds-max" query has the following query plan: --8<---------------cut here---------------start------------->8--- QUERY PLAN |--SEARCH TABLE Builds USING INDEX Builds_stoptime_id (stoptime=?) `--SCALAR SUBQUERY 1 `--SEARCH TABLE Builds USING INDEX Builds_evaluation_index (evaluation=?) --8<---------------cut here---------------end--------------->8--- so it should always reasonably fast. The log seem to indicate that the worker running one of those queries is busy for more than 10 seconds here. My understanding of SQLite WAL mode is that writers should not block readers. So I don't get why this query can be intermittently so slow. Thanks, Mathieu -- https://othacehe.org