database: update backends (#119)

* `heed 0.20.0-alpha.9 -> 0.20.0`, `redb 2.0.0 -> 2.1.0`

* heed: fix

* redb: fix
This commit is contained in:
hinto-janai 2024-04-28 20:12:42 -04:00 committed by GitHub
parent 2ac90420c6
commit 3f2cc5144b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 22 additions and 24 deletions

22
Cargo.lock generated
View file

@ -803,9 +803,9 @@ dependencies = [
[[package]] [[package]]
name = "doxygen-rs" name = "doxygen-rs"
version = "0.2.2" version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bff670ea0c9bbb8414e7efa6e23ebde2b8f520a7eef78273a3918cf1903e7505" checksum = "415b6ec780d34dcf624666747194393603d0373b7141eef01d12ee58881507d9"
dependencies = [ dependencies = [
"phf", "phf",
] ]
@ -1151,12 +1151,11 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]] [[package]]
name = "heed" name = "heed"
version = "0.20.0-alpha.9" version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9648a50991c86df7d00c56c268c27754fcf4c80be2ba57fc4a00dc928c6fe934" checksum = "e7a300b0deeb2957162d7752b0f063b3be1c88333af5bb4e7a57d8fb3716f50b"
dependencies = [ dependencies = [
"bitflags 2.5.0", "bitflags 2.5.0",
"bytemuck",
"byteorder", "byteorder",
"heed-traits", "heed-traits",
"heed-types", "heed-types",
@ -1171,15 +1170,15 @@ dependencies = [
[[package]] [[package]]
name = "heed-traits" name = "heed-traits"
version = "0.20.0-alpha.9" version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ab0b7d9cde969ad36dde692e487dc89d97f7168bf6a7bd3b894ad4bf7278298" checksum = "eb3130048d404c57ce5a1ac61a903696e8fcde7e8c2991e9fcfc1f27c3ef74ff"
[[package]] [[package]]
name = "heed-types" name = "heed-types"
version = "0.20.0-alpha.9" version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0cb3567a7363f28b597bf6e9897b9466397951dd0e52df2c8196dd8a71af44a" checksum = "3cb0d6ba3700c9a57e83c013693e3eddb68a6d9b6781cacafc62a0d992e8ddb3"
dependencies = [ dependencies = [
"bincode", "bincode",
"byteorder", "byteorder",
@ -1529,14 +1528,13 @@ checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
[[package]] [[package]]
name = "lmdb-master-sys" name = "lmdb-master-sys"
version = "0.1.0" version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "629c123f5321b48fa4f8f4d3b868165b748d9ba79c7103fb58e3a94f736bcedd" checksum = "dc9048db3a58c0732d7236abc4909058f9d2708cfb6d7d047eb895fddec6419a"
dependencies = [ dependencies = [
"cc", "cc",
"doxygen-rs", "doxygen-rs",
"libc", "libc",
"pkg-config",
] ]
[[package]] [[package]]

View file

@ -43,8 +43,8 @@ tower = { workspace = true, features = ["full"], optional = true }
rayon = { workspace = true, optional = true } rayon = { workspace = true, optional = true }
# Optional features. # Optional features.
heed = { version = "0.20.0-alpha.9", optional = true } heed = { version = "0.20.0", optional = true }
redb = { version = "2.0.0", optional = true } redb = { version = "2.1.0", optional = true }
serde = { workspace = true, optional = true } serde = { workspace = true, optional = true }
[dev-dependencies] [dev-dependencies]

View file

@ -185,7 +185,9 @@ impl Env for ConcreteEnv {
// Create the database directory if it doesn't exist. // Create the database directory if it doesn't exist.
std::fs::create_dir_all(config.db_directory())?; std::fs::create_dir_all(config.db_directory())?;
// Open the environment in the user's PATH. // Open the environment in the user's PATH.
let env = env_open_options.open(config.db_directory())?; // SAFETY: LMDB uses a memory-map backed file.
// <https://docs.rs/heed/0.20.0/heed/struct.EnvOpenOptions.html#method.open>
let env = unsafe { env_open_options.open(config.db_directory())? };
// TODO: Open/create tables with certain flags // TODO: Open/create tables with certain flags
// <https://github.com/monero-project/monero/blob/059028a30a8ae9752338a7897329fe8012a310d5/src/blockchain_db/lmdb/db_lmdb.cpp#L1324> // <https://github.com/monero-project/monero/blob/059028a30a8ae9752338a7897329fe8012a310d5/src/blockchain_db/lmdb/db_lmdb.cpp#L1324>

View file

@ -49,10 +49,9 @@ impl From<heed::Error> for crate::InitError {
| E2::Panic => Self::Unknown(Box::new(mdb_error)), | E2::Panic => Self::Unknown(Box::new(mdb_error)),
}, },
E1::InvalidDatabaseTyping E1::BadOpenOptions { .. } | E1::Encoding(_) | E1::Decoding(_) => {
| E1::BadOpenOptions { .. } Self::Unknown(Box::new(error))
| E1::Encoding(_) }
| E1::Decoding(_) => Self::Unknown(Box::new(error)),
} }
} }
} }
@ -139,11 +138,9 @@ impl From<heed::Error> for crate::RuntimeError {
}, },
// Only if we write incorrect code. // Only if we write incorrect code.
E1::InvalidDatabaseTyping E1::DatabaseClosing | E1::BadOpenOptions { .. } | E1::Encoding(_) | E1::Decoding(_) => {
| E1::DatabaseClosing panic!("fix the database code! {error:#?}")
| E1::BadOpenOptions { .. } }
| E1::Encoding(_)
| E1::Decoding(_) => panic!("fix the database code! {error:#?}"),
} }
} }
} }

View file

@ -84,6 +84,7 @@ impl Env for ConcreteEnv {
.read(true) .read(true)
.write(true) .write(true)
.create(true) .create(true)
.truncate(false)
.open(config.db_file())?; .open(config.db_file())?;
env_builder.create_file(db_file)? env_builder.create_file(db_file)?