diff options
author | Alex Auvolat <alex@adnab.me> | 2023-03-06 11:38:49 +0100 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2023-03-06 11:38:49 +0100 |
commit | b8123fb6cdf15ad21e5d254368c96f6f32ba8c3c (patch) | |
tree | 4c6cf14c2ad55fcaae97bf35a2023737634c5941 | |
parent | a5f7a7925088c1169f2d88ca4dd1ed83fce37e35 (diff) | |
download | garage-b8123fb6cdf15ad21e5d254368c96f6f32ba8c3c.tar.gz garage-b8123fb6cdf15ad21e5d254368c96f6f32ba8c3c.zip |
Clearer error message when LMDB has oom error (fix #517)
-rw-r--r-- | src/model/garage.rs | 13 |
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"))] |