Clean exit when no space left on device (#6339)

Fixes #6305
This commit is contained in:
Cecile Tonglet
2020-07-09 14:58:29 +02:00
committed by GitHub
parent ef8572f10d
commit a4427f3635
16 changed files with 97 additions and 43 deletions
+3 -3
View File
@@ -19,7 +19,7 @@
use ::kvdb::{DBTransaction, KeyValueDB};
use crate::{Database, Change, Transaction, ColumnId};
use crate::{Database, Change, ColumnId, Transaction, error};
struct DbAdapter<D: KeyValueDB + 'static>(D);
@@ -38,7 +38,7 @@ pub fn as_database<D: KeyValueDB + 'static, H: Clone>(db: D) -> std::sync::Arc<d
}
impl<D: KeyValueDB, H: Clone> Database<H> for DbAdapter<D> {
fn commit(&self, transaction: Transaction<H>) {
fn commit(&self, transaction: Transaction<H>) -> error::Result<()> {
let mut tx = DBTransaction::new();
for change in transaction.0.into_iter() {
match change {
@@ -47,7 +47,7 @@ impl<D: KeyValueDB, H: Clone> Database<H> for DbAdapter<D> {
_ => unimplemented!(),
}
}
handle_err(self.0.write(tx));
self.0.write(tx).map_err(|e| error::DatabaseError(Box::new(e)))
}
fn get(&self, col: ColumnId, key: &[u8]) -> Option<Vec<u8>> {