aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2023-03-06 11:38:49 +0100
committerAlex Auvolat <alex@adnab.me>2023-03-06 11:38:49 +0100
commitb8123fb6cdf15ad21e5d254368c96f6f32ba8c3c (patch)
tree4c6cf14c2ad55fcaae97bf35a2023737634c5941
parenta5f7a7925088c1169f2d88ca4dd1ed83fce37e35 (diff)
downloadgarage-b8123fb6cdf15ad21e5d254368c96f6f32ba8c3c.tar.gz
garage-b8123fb6cdf15ad21e5d254368c96f6f32ba8c3c.zip
Clearer error message when LMDB has oom error (fix #517)
-rw-r--r--src/model/garage.rs13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/model/garage.rs b/src/model/garage.rs
index 0a9ec608..3daa1b33 100644
--- a/src/model/garage.rs
+++ b/src/model/garage.rs
@@ -136,9 +136,16 @@ impl Garage {
env_builder.flag(heed::flags::Flags::MdbNoSync);
env_builder.flag(heed::flags::Flags::MdbNoMetaSync);
}
- let db = env_builder
- .open(&db_path)
- .ok_or_message("Unable to open LMDB DB")?;
+ let db = match env_builder.open(&db_path) {
+ Err(heed::Error::Io(e)) if e.kind() == std::io::ErrorKind::OutOfMemory => {
+ return Err(Error::Message(
+ "OutOfMemory error while trying to open LMDB database. This can happen \
+ if your operating system is not allowing you to use sufficient virtual \
+ memory address space. Please check that no limit is set (ulimit -v). \
+ On 32-bit machines, you should probably switch to another database engine.".into()))
+ }
+ x => x.ok_or_message("Unable to open LMDB DB")?,
+ };
db::lmdb_adapter::LmdbDb::init(db)
}
#[cfg(not(feature = "lmdb"))]