Message ID | AM0PR10MB35861F244C507E9598F3787A80B6A@AM0PR10MB3586.EURPRD10.PROD.OUTLOOK.COM |
---|---|
State | New |
Headers | show |
Series | [bug#67253] add guix locate database is locked error message(resent) | expand |
Hi, Maciej Kalandyk <m.kalandyk@outlook.com> skribis: > Change-Id: Iebe76c75d45e70317bd18d2c176dcdeaf9d6964c > Signed-off-by: Maciej Kalandyk <m.kalandyk@outlook.com> I tweaked the exception handler to clarify what’s happening. The end result looks like this: --8<---------------cut here---------------start------------->8--- ;; XXX: missing in guile-sqlite3@0.1.3 (define SQLITE_BUSY 5) (define (call-with-database file proc) (catch 'sqlite-error (lambda () (let ((db (sqlite-open file))) (dynamic-wind (lambda () #t) (lambda () (ensure-latest-database-schema db) (proc db)) (lambda () (sqlite-close db))))) (lambda (key who code errmsg) (if (= code SQLITE_BUSY) (leave (G_ "~a: database is locked by another process~%") file) (throw key who code errmsg))))) --8<---------------cut here---------------end--------------->8--- Applied, thanks! Ludo’.
diff --git a/guix/scripts/locate.scm b/guix/scripts/locate.scm index ae64f46896..c24e969be7 100644 --- a/guix/scripts/locate.scm +++ b/guix/scripts/locate.scm @@ -115,13 +115,21 @@ (define schema-to-migrate '((1 . " "))) (define (call-with-database file proc) - (let ((db (sqlite-open file))) - (dynamic-wind - (lambda () #t) - (lambda () - (ensure-latest-database-schema db) - (proc db)) - (lambda () (sqlite-close db))))) + (catch 'sqlite-error + (lambda () + (let ((db (sqlite-open file))) + (dynamic-wind + (lambda () #t) + (lambda () + (ensure-latest-database-schema db) + (proc db)) + (lambda () (sqlite-close db))))) + (lambda (key . args) + (match args + [(_ 5 _) + (leave (G_ "database ~a is locked by another process~%") + file)] + [_ (apply throw (cons key args))])))) (define (ensure-latest-database-schema db) "Ensure DB follows the latest known version of the schema."
Change-Id: Iebe76c75d45e70317bd18d2c176dcdeaf9d6964c Signed-off-by: Maciej Kalandyk <m.kalandyk@outlook.com> --- guix/scripts/locate.scm | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) base-commit: a0d337e79c87d7c38c79d0291974f490cb137a52