summaryrefslogtreecommitdiffstats
path: root/crate_db/src/lib_crate_db.rs
diff options
context:
space:
mode:
authorKornel <kornel@geekhood.net>2019-08-05 02:41:39 +0100
committerKornel <kornel@geekhood.net>2019-08-05 02:41:39 +0100
commit53e49237d4a8f0be10abf110c26bcc1e7f91216e (patch)
treec7eabefb6e444bafc7a608ea15e45671274983c5 /crate_db/src/lib_crate_db.rs
parent50ad7d3f7dd16412a242221b237242a0143b08d3 (diff)
Workaround for sqlite lockups
Diffstat (limited to 'crate_db/src/lib_crate_db.rs')
-rw-r--r--crate_db/src/lib_crate_db.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/crate_db/src/lib_crate_db.rs b/crate_db/src/lib_crate_db.rs
index 4df9b6c..bbc6c93 100644
--- a/crate_db/src/lib_crate_db.rs
+++ b/crate_db/src/lib_crate_db.rs
@@ -87,7 +87,10 @@ impl CrateDb {
#[inline]
fn with_connection<F, T>(&self, context: &'static str, cb: F) -> FResult<T> where F: FnOnce(&mut Connection) -> FResult<T> {
- let conn = self.conn.get_or(|| Box::new(self.connect().map(RefCell::new)));
+ let conn = self.conn.get_or(|| Box::new(self.connect().map(|conn| {
+ let _ = conn.busy_timeout(std::time::Duration::from_secs(3));
+ RefCell::new(conn)
+ })));
match conn {
Ok(conn) => Ok(cb(&mut *conn.borrow_mut()).context(context)?),
Err(err) => bail!("{} (in {})", err, context),