[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#30644: Cuirass runs out of build users

From: Ludovic Courtès
Subject: bug#30644: Cuirass runs out of build users
Date: Sun, 25 Mar 2018 14:40:20 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux)

Hi Danny,

Danny Milosavljevic <address@hidden> skribis:

> I've checked it some more.  The shared cache uses unlock_notify, and the 
> actual
> database uses sqlite3_busy_handler (sqlite3_busy_timeout) when BUSY is 
> returned.
> The 5 in
> ice-9/eval.scm:619:8: Throw to key `sqlite-error' with args `(#f 5 "database 
> is locked")'.  
>                                                                  ^^
> means SQLITE_BUSY, so that's the actual database.
> So the easiest way to work around it would be to call
>   sqlite3_busy_timeout(db, 10); // ms
> which would automatically repeatedly retry on busy until 10 ms have 
> accumulated,
> and only then give up.

Indeed, that’s actually what nix/libstore does.

> There's also sqlite3_busy_handler which can be used to install a busy handler,
> and of course in the future we could also handle SQLITE_BUSY ourselves and 
> yield.
> See also https://notabug.org/civodul/guile-sqlite3/pulls/4 for the former.


I’ve merged these guile-sqlite3 bits and added a “PRAGMA busy_timeout”
in Cuirass (the pragma allows us to set the timeout even when using an
older guile-sqlite3.)  I’ve updated the ‘cuirass’ package and will test
soonish on berlin.

Thank you!


reply via email to

[Prev in Thread] Current Thread [Next in Thread]