Browse Source
Merge pull request #1 from mprasil/concurrency_fix
WAL journal mode and delete retry added
pull/107/head
Shane A. Faulkner
7 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
30 additions and
6 deletions
-
src/db/models/attachment.rs
-
src/main.rs
|
|
@ -64,14 +64,33 @@ impl Attachment { |
|
|
|
|
|
|
|
pub fn delete(self, conn: &DbConn) -> QueryResult<()> { |
|
|
|
use util; |
|
|
|
use std::{thread, time}; |
|
|
|
|
|
|
|
util::delete_file(&self.get_file_path()); |
|
|
|
let mut retries = 10; |
|
|
|
|
|
|
|
loop { |
|
|
|
match diesel::delete( |
|
|
|
attachments::table.filter( |
|
|
|
attachments::id.eq(&self.id) |
|
|
|
) |
|
|
|
).execute(&**conn) { |
|
|
|
Ok(_) => break, |
|
|
|
Err(err) => { |
|
|
|
if retries < 1 { |
|
|
|
println!("ERROR: Failed with 10 retries"); |
|
|
|
return Err(err) |
|
|
|
} else { |
|
|
|
retries = retries - 1; |
|
|
|
println!("Had to retry! Retries left: {}", retries); |
|
|
|
thread::sleep(time::Duration::from_millis(500)); |
|
|
|
continue
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
diesel::delete( |
|
|
|
attachments::table.filter( |
|
|
|
attachments::id.eq(self.id) |
|
|
|
) |
|
|
|
).execute(&**conn).and(Ok(())) |
|
|
|
util::delete_file(&self.get_file_path()); |
|
|
|
Ok(()) |
|
|
|
} |
|
|
|
|
|
|
|
pub fn delete_all_by_cipher(cipher_uuid: &str, conn: &DbConn) -> QueryResult<()> { |
|
|
|
|
|
@ -83,6 +83,11 @@ fn check_db() { |
|
|
|
exit(1); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Turn on WAL in SQLite
|
|
|
|
use diesel::RunQueryDsl; |
|
|
|
let connection = db::get_connection().expect("Can't conect to DB"); |
|
|
|
diesel::sql_query("PRAGMA journal_mode=wal").execute(&connection).expect("Failed to turn on WAL"); |
|
|
|
} |
|
|
|
|
|
|
|
fn check_rsa_keys() { |
|
|
|