s/rocksdb/rust_rocksdb, fix copy paste errors
Signed-off-by: strawberry <strawberry@puppygock.gay>
This commit is contained in:
parent
d84378db18
commit
fee6cad778
7 changed files with 95 additions and 144 deletions
137
Cargo.lock
generated
137
Cargo.lock
generated
|
@ -437,9 +437,9 @@ dependencies = [
|
||||||
"lru-cache",
|
"lru-cache",
|
||||||
"nix",
|
"nix",
|
||||||
"num_cpus",
|
"num_cpus",
|
||||||
"opentelemetry 0.21.0",
|
"opentelemetry",
|
||||||
"opentelemetry-jaeger",
|
"opentelemetry-jaeger",
|
||||||
"opentelemetry_sdk 0.21.2",
|
"opentelemetry_sdk",
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
"rand",
|
"rand",
|
||||||
"regex",
|
"regex",
|
||||||
|
@ -876,19 +876,13 @@ dependencies = [
|
||||||
"futures-sink",
|
"futures-sink",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"http",
|
"http",
|
||||||
"indexmap 2.2.5",
|
"indexmap",
|
||||||
"slab",
|
"slab",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "hashbrown"
|
|
||||||
version = "0.12.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hashbrown"
|
name = "hashbrown"
|
||||||
version = "0.14.3"
|
version = "0.14.3"
|
||||||
|
@ -905,7 +899,7 @@ version = "0.9.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "692eaaf7f7607518dd3cef090f1474b61edc5301d8012f09579920df68b725ee"
|
checksum = "692eaaf7f7607518dd3cef090f1474b61edc5301d8012f09579920df68b725ee"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"hashbrown 0.14.3",
|
"hashbrown",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1108,16 +1102,6 @@ dependencies = [
|
||||||
"png",
|
"png",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "indexmap"
|
|
||||||
version = "1.9.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
"hashbrown 0.12.3",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "indexmap"
|
name = "indexmap"
|
||||||
version = "2.2.5"
|
version = "2.2.5"
|
||||||
|
@ -1125,7 +1109,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
|
checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"equivalent",
|
"equivalent",
|
||||||
"hashbrown 0.14.3",
|
"hashbrown",
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1612,16 +1596,6 @@ version = "0.1.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
|
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "opentelemetry"
|
|
||||||
version = "0.20.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54"
|
|
||||||
dependencies = [
|
|
||||||
"opentelemetry_api",
|
|
||||||
"opentelemetry_sdk 0.20.0",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "opentelemetry"
|
name = "opentelemetry"
|
||||||
version = "0.21.0"
|
version = "0.21.0"
|
||||||
|
@ -1630,7 +1604,7 @@ checksum = "1e32339a5dc40459130b3bd269e9892439f55b33e772d2a9d402a789baaf4e8a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-sink",
|
"futures-sink",
|
||||||
"indexmap 2.2.5",
|
"indexmap",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
|
@ -1647,9 +1621,9 @@ dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"opentelemetry 0.21.0",
|
"opentelemetry",
|
||||||
"opentelemetry-semantic-conventions",
|
"opentelemetry-semantic-conventions",
|
||||||
"opentelemetry_sdk 0.21.2",
|
"opentelemetry_sdk",
|
||||||
"thrift",
|
"thrift",
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
@ -1660,43 +1634,7 @@ version = "0.13.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f5774f1ef1f982ef2a447f6ee04ec383981a3ab99c8e77a1a7b30182e65bbc84"
|
checksum = "f5774f1ef1f982ef2a447f6ee04ec383981a3ab99c8e77a1a7b30182e65bbc84"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"opentelemetry 0.21.0",
|
"opentelemetry",
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "opentelemetry_api"
|
|
||||||
version = "0.20.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b"
|
|
||||||
dependencies = [
|
|
||||||
"futures-channel",
|
|
||||||
"futures-util",
|
|
||||||
"indexmap 1.9.3",
|
|
||||||
"js-sys",
|
|
||||||
"once_cell",
|
|
||||||
"pin-project-lite",
|
|
||||||
"thiserror",
|
|
||||||
"urlencoding",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "opentelemetry_sdk"
|
|
||||||
version = "0.20.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026"
|
|
||||||
dependencies = [
|
|
||||||
"async-trait",
|
|
||||||
"crossbeam-channel",
|
|
||||||
"futures-channel",
|
|
||||||
"futures-executor",
|
|
||||||
"futures-util",
|
|
||||||
"once_cell",
|
|
||||||
"opentelemetry_api",
|
|
||||||
"ordered-float 3.9.2",
|
|
||||||
"percent-encoding",
|
|
||||||
"rand",
|
|
||||||
"regex",
|
|
||||||
"thiserror",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1710,8 +1648,9 @@ dependencies = [
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
"futures-executor",
|
"futures-executor",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
|
"glob",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"opentelemetry 0.21.0",
|
"opentelemetry",
|
||||||
"ordered-float 4.2.0",
|
"ordered-float 4.2.0",
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
"rand",
|
"rand",
|
||||||
|
@ -1729,15 +1668,6 @@ dependencies = [
|
||||||
"num-traits",
|
"num-traits",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "ordered-float"
|
|
||||||
version = "3.9.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc"
|
|
||||||
dependencies = [
|
|
||||||
"num-traits",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ordered-float"
|
name = "ordered-float"
|
||||||
version = "4.2.0"
|
version = "4.2.0"
|
||||||
|
@ -2212,7 +2142,7 @@ dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"form_urlencoded",
|
"form_urlencoded",
|
||||||
"http",
|
"http",
|
||||||
"indexmap 2.2.5",
|
"indexmap",
|
||||||
"js_int",
|
"js_int",
|
||||||
"konst",
|
"konst",
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
|
@ -2236,7 +2166,7 @@ version = "0.27.11"
|
||||||
source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a"
|
source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"as_variant",
|
"as_variant",
|
||||||
"indexmap 2.2.5",
|
"indexmap",
|
||||||
"js_int",
|
"js_int",
|
||||||
"js_option",
|
"js_option",
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
|
@ -2542,7 +2472,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "20e1066e1cfa6692a722cf40386a2caec36da5ddc4a2c16df592f0f609677e8c"
|
checksum = "20e1066e1cfa6692a722cf40386a2caec36da5ddc4a2c16df592f0f609677e8c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"form_urlencoded",
|
"form_urlencoded",
|
||||||
"indexmap 2.2.5",
|
"indexmap",
|
||||||
"itoa",
|
"itoa",
|
||||||
"ryu",
|
"ryu",
|
||||||
"serde",
|
"serde",
|
||||||
|
@ -2606,7 +2536,7 @@ version = "0.9.32"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8fd075d994154d4a774f95b51fb96bdc2832b0ea48425c92546073816cda1f2f"
|
checksum = "8fd075d994154d4a774f95b51fb96bdc2832b0ea48425c92546073816cda1f2f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indexmap 2.2.5",
|
"indexmap",
|
||||||
"itoa",
|
"itoa",
|
||||||
"ryu",
|
"ryu",
|
||||||
"serde",
|
"serde",
|
||||||
|
@ -3077,7 +3007,7 @@ version = "0.20.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
|
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indexmap 2.2.5",
|
"indexmap",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_spanned",
|
"serde_spanned",
|
||||||
"toml_datetime",
|
"toml_datetime",
|
||||||
|
@ -3178,17 +3108,6 @@ dependencies = [
|
||||||
"tracing-subscriber",
|
"tracing-subscriber",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "tracing-log"
|
|
||||||
version = "0.1.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2"
|
|
||||||
dependencies = [
|
|
||||||
"log",
|
|
||||||
"once_cell",
|
|
||||||
"tracing-core",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tracing-log"
|
name = "tracing-log"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
|
@ -3202,16 +3121,20 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tracing-opentelemetry"
|
name = "tracing-opentelemetry"
|
||||||
version = "0.20.0"
|
version = "0.22.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fc09e402904a5261e42cf27aea09ccb7d5318c6717a9eec3d8e2e65c56b18f19"
|
checksum = "c67ac25c5407e7b961fafc6f7e9aa5958fd297aada2d20fa2ae1737357e55596"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"js-sys",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"opentelemetry 0.20.0",
|
"opentelemetry",
|
||||||
|
"opentelemetry_sdk",
|
||||||
|
"smallvec",
|
||||||
"tracing",
|
"tracing",
|
||||||
"tracing-core",
|
"tracing-core",
|
||||||
"tracing-log 0.1.4",
|
"tracing-log",
|
||||||
"tracing-subscriber",
|
"tracing-subscriber",
|
||||||
|
"web-time",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3229,7 +3152,7 @@ dependencies = [
|
||||||
"thread_local",
|
"thread_local",
|
||||||
"tracing",
|
"tracing",
|
||||||
"tracing-core",
|
"tracing-core",
|
||||||
"tracing-log 0.2.0",
|
"tracing-log",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3488,6 +3411,16 @@ dependencies = [
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "web-time"
|
||||||
|
version = "0.2.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0"
|
||||||
|
dependencies = [
|
||||||
|
"js-sys",
|
||||||
|
"wasm-bindgen",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "webpage"
|
name = "webpage"
|
||||||
version = "2.0.0"
|
version = "2.0.0"
|
||||||
|
|
19
Cargo.toml
19
Cargo.toml
|
@ -163,7 +163,7 @@ optional = true
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
optional = true
|
optional = true
|
||||||
[dependencies.tracing-opentelemetry]
|
[dependencies.tracing-opentelemetry]
|
||||||
version = "0.20.0"
|
version = "0.22.0"
|
||||||
optional = true
|
optional = true
|
||||||
[dependencies.opentelemetry_sdk]
|
[dependencies.opentelemetry_sdk]
|
||||||
version = "0.21.2"
|
version = "0.21.2"
|
||||||
|
@ -178,12 +178,10 @@ features = ["rt-tokio"]
|
||||||
[dependencies.tikv-jemallocator]
|
[dependencies.tikv-jemallocator]
|
||||||
version = "0.5.4"
|
version = "0.5.4"
|
||||||
optional = true
|
optional = true
|
||||||
default-features = false
|
|
||||||
features = ["unprefixed_malloc_on_supported_platforms"]
|
features = ["unprefixed_malloc_on_supported_platforms"]
|
||||||
[dependencies.tikv-jemalloc-ctl]
|
[dependencies.tikv-jemalloc-ctl]
|
||||||
version = "0.5.4"
|
version = "0.5.4"
|
||||||
optional = true
|
optional = true
|
||||||
default-features = false
|
|
||||||
features = ["use_std"]
|
features = ["use_std"]
|
||||||
|
|
||||||
# for URL previews
|
# for URL previews
|
||||||
|
@ -256,6 +254,7 @@ git = "https://github.com/zaidoon1/rust-rocksdb"
|
||||||
#branch = "master"
|
#branch = "master"
|
||||||
rev = "3e4a0f632a8c0c2839c7d183725c53895110d907"
|
rev = "3e4a0f632a8c0c2839c7d183725c53895110d907"
|
||||||
optional = true
|
optional = true
|
||||||
|
default-features = true
|
||||||
features = [
|
features = [
|
||||||
"multi-threaded-cf",
|
"multi-threaded-cf",
|
||||||
"zstd",
|
"zstd",
|
||||||
|
@ -285,7 +284,8 @@ optional = true
|
||||||
|
|
||||||
|
|
||||||
[target.'cfg(not(unix))'.dependencies]
|
[target.'cfg(not(unix))'.dependencies]
|
||||||
tokio = { version = "1.36.0", features = ["fs",
|
tokio = { version = "1.36.0", features = [
|
||||||
|
"fs",
|
||||||
"macros",
|
"macros",
|
||||||
"sync",
|
"sync",
|
||||||
] } # tokio signals are not used on non-*nix platforms
|
] } # tokio signals are not used on non-*nix platforms
|
||||||
|
@ -300,21 +300,18 @@ tokio = { version = "1.36.0", features = [
|
||||||
"sync",
|
"sync",
|
||||||
"signal",
|
"signal",
|
||||||
] }
|
] }
|
||||||
# unix socket support
|
hyperlocal = { git = "https://github.com/softprops/hyperlocal", rev = "2ee4d149644600d326559af0d2b235c945b05c04", features = ["server"] } # unix socket support
|
||||||
[dependencies.hyperlocal]
|
|
||||||
git = "https://github.com/softprops/hyperlocal"
|
|
||||||
rev = "2ee4d149644600d326559af0d2b235c945b05c04"
|
|
||||||
features = ["server"]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["conduit_bin", "backend_rocksdb", "systemd"]
|
default = ["conduit_bin", "backend_rocksdb", "systemd"]
|
||||||
|
conduit_bin = ["axum"]
|
||||||
backend_sqlite = ["sqlite"]
|
backend_sqlite = ["sqlite"]
|
||||||
backend_rocksdb = ["rust-rocksdb", "num_cpus"]
|
backend_rocksdb = ["rocksdb"]
|
||||||
|
rocksdb = ["rust-rocksdb", "num_cpus"]
|
||||||
jemalloc = ["tikv-jemalloc-ctl", "tikv-jemallocator"]
|
jemalloc = ["tikv-jemalloc-ctl", "tikv-jemallocator"]
|
||||||
sqlite = ["rusqlite", "parking_lot", "thread_local", "num_cpus"]
|
sqlite = ["rusqlite", "parking_lot", "thread_local", "num_cpus"]
|
||||||
conduit_bin = ["axum"]
|
|
||||||
systemd = ["sd-notify"]
|
systemd = ["sd-notify"]
|
||||||
|
|
||||||
#gzip_compression = ["tower-http/compression-gzip"]
|
#gzip_compression = ["tower-http/compression-gzip"]
|
||||||
|
|
|
@ -4,7 +4,7 @@ use std::{
|
||||||
sync::{Arc, RwLock},
|
sync::{Arc, RwLock},
|
||||||
};
|
};
|
||||||
|
|
||||||
use rocksdb::{
|
use rust_rocksdb::{
|
||||||
FlushOptions,
|
FlushOptions,
|
||||||
LogLevel::{Debug, Error, Fatal, Info, Warn},
|
LogLevel::{Debug, Error, Fatal, Info, Warn},
|
||||||
};
|
};
|
||||||
|
@ -14,8 +14,8 @@ use super::{super::Config, watchers::Watchers, KeyValueDatabaseEngine, KvTree};
|
||||||
use crate::{utils, Result};
|
use crate::{utils, Result};
|
||||||
|
|
||||||
pub(crate) struct Engine {
|
pub(crate) struct Engine {
|
||||||
rocks: rocksdb::DBWithThreadMode<rocksdb::MultiThreaded>,
|
rocks: rust_rocksdb::DBWithThreadMode<rust_rocksdb::MultiThreaded>,
|
||||||
cache: rocksdb::Cache,
|
cache: rust_rocksdb::Cache,
|
||||||
old_cfs: Vec<String>,
|
old_cfs: Vec<String>,
|
||||||
config: Config,
|
config: Config,
|
||||||
}
|
}
|
||||||
|
@ -27,9 +27,9 @@ struct RocksDbEngineTree<'a> {
|
||||||
write_lock: RwLock<()>,
|
write_lock: RwLock<()>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn db_options(rocksdb_cache: &rocksdb::Cache, config: &Config) -> rocksdb::Options {
|
fn db_options(rocksdb_cache: &rust_rocksdb::Cache, config: &Config) -> rust_rocksdb::Options {
|
||||||
// block-based options: https://docs.rs/rocksdb/latest/rocksdb/struct.BlockBasedOptions.html#
|
// block-based options: https://docs.rs/rocksdb/latest/rocksdb/struct.BlockBasedOptions.html#
|
||||||
let mut block_based_options = rocksdb::BlockBasedOptions::default();
|
let mut block_based_options = rust_rocksdb::BlockBasedOptions::default();
|
||||||
|
|
||||||
block_based_options.set_block_cache(rocksdb_cache);
|
block_based_options.set_block_cache(rocksdb_cache);
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ fn db_options(rocksdb_cache: &rocksdb::Cache, config: &Config) -> rocksdb::Optio
|
||||||
block_based_options.set_cache_index_and_filter_blocks(true);
|
block_based_options.set_cache_index_and_filter_blocks(true);
|
||||||
|
|
||||||
// database options: https://docs.rs/rocksdb/latest/rocksdb/struct.Options.html#
|
// database options: https://docs.rs/rocksdb/latest/rocksdb/struct.Options.html#
|
||||||
let mut db_opts = rocksdb::Options::default();
|
let mut db_opts = rust_rocksdb::Options::default();
|
||||||
|
|
||||||
let rocksdb_log_level = match config.rocksdb_log_level.as_ref() {
|
let rocksdb_log_level = match config.rocksdb_log_level.as_ref() {
|
||||||
"debug" => Debug,
|
"debug" => Debug,
|
||||||
|
@ -80,8 +80,8 @@ fn db_options(rocksdb_cache: &rocksdb::Cache, config: &Config) -> rocksdb::Optio
|
||||||
threads.try_into().expect("Failed to convert \"rocksdb_parallelism_threads\" usize into i32"),
|
threads.try_into().expect("Failed to convert \"rocksdb_parallelism_threads\" usize into i32"),
|
||||||
);
|
);
|
||||||
//db_opts.set_max_open_files(config.rocksdb_max_open_files);
|
//db_opts.set_max_open_files(config.rocksdb_max_open_files);
|
||||||
db_opts.set_compression_type(rocksdb::DBCompressionType::Zstd);
|
db_opts.set_compression_type(rust_rocksdb::DBCompressionType::Zstd);
|
||||||
db_opts.set_compaction_style(rocksdb::DBCompactionStyle::Level);
|
db_opts.set_compaction_style(rust_rocksdb::DBCompactionStyle::Level);
|
||||||
db_opts.optimize_level_style_compaction(10 * 1024 * 1024);
|
db_opts.optimize_level_style_compaction(10 * 1024 * 1024);
|
||||||
|
|
||||||
// https://github.com/facebook/rocksdb/wiki/Setup-Options-and-Basic-Tuning
|
// https://github.com/facebook/rocksdb/wiki/Setup-Options-and-Basic-Tuning
|
||||||
|
@ -93,9 +93,9 @@ fn db_options(rocksdb_cache: &rocksdb::Cache, config: &Config) -> rocksdb::Optio
|
||||||
// Unclean shutdowns of a Matrix homeserver are likely to be fine when
|
// Unclean shutdowns of a Matrix homeserver are likely to be fine when
|
||||||
// recovered in this manner as it's likely any lost information will be
|
// recovered in this manner as it's likely any lost information will be
|
||||||
// restored via federation.
|
// restored via federation.
|
||||||
db_opts.set_wal_recovery_mode(rocksdb::DBRecoveryMode::TolerateCorruptedTailRecords);
|
db_opts.set_wal_recovery_mode(rust_rocksdb::DBRecoveryMode::TolerateCorruptedTailRecords);
|
||||||
|
|
||||||
let prefix_extractor = rocksdb::SliceTransform::create_fixed_prefix(1);
|
let prefix_extractor = rust_rocksdb::SliceTransform::create_fixed_prefix(1);
|
||||||
db_opts.set_prefix_extractor(prefix_extractor);
|
db_opts.set_prefix_extractor(prefix_extractor);
|
||||||
|
|
||||||
db_opts
|
db_opts
|
||||||
|
@ -104,20 +104,21 @@ fn db_options(rocksdb_cache: &rocksdb::Cache, config: &Config) -> rocksdb::Optio
|
||||||
impl KeyValueDatabaseEngine for Arc<Engine> {
|
impl KeyValueDatabaseEngine for Arc<Engine> {
|
||||||
fn open(config: &Config) -> Result<Self> {
|
fn open(config: &Config) -> Result<Self> {
|
||||||
let cache_capacity_bytes = (config.db_cache_capacity_mb * 1024.0 * 1024.0) as usize;
|
let cache_capacity_bytes = (config.db_cache_capacity_mb * 1024.0 * 1024.0) as usize;
|
||||||
let rocksdb_cache = rocksdb::Cache::new_lru_cache(cache_capacity_bytes);
|
let rocksdb_cache = rust_rocksdb::Cache::new_lru_cache(cache_capacity_bytes);
|
||||||
|
|
||||||
let db_opts = db_options(&rocksdb_cache, config);
|
let db_opts = db_options(&rocksdb_cache, config);
|
||||||
|
|
||||||
debug!("Listing column families in database");
|
debug!("Listing column families in database");
|
||||||
let cfs = rocksdb::DBWithThreadMode::<rocksdb::MultiThreaded>::list_cf(&db_opts, &config.database_path)
|
let cfs =
|
||||||
.unwrap_or_default();
|
rust_rocksdb::DBWithThreadMode::<rust_rocksdb::MultiThreaded>::list_cf(&db_opts, &config.database_path)
|
||||||
|
.unwrap_or_default();
|
||||||
|
|
||||||
debug!("Opening column family descriptors in database");
|
debug!("Opening column family descriptors in database");
|
||||||
info!("RocksDB database compaction will take place now, a delay in startup is expected");
|
info!("RocksDB database compaction will take place now, a delay in startup is expected");
|
||||||
let db = rocksdb::DBWithThreadMode::<rocksdb::MultiThreaded>::open_cf_descriptors(
|
let db = rust_rocksdb::DBWithThreadMode::<rust_rocksdb::MultiThreaded>::open_cf_descriptors(
|
||||||
&db_opts,
|
&db_opts,
|
||||||
&config.database_path,
|
&config.database_path,
|
||||||
cfs.iter().map(|name| rocksdb::ColumnFamilyDescriptor::new(name, db_options(&rocksdb_cache, config))),
|
cfs.iter().map(|name| rust_rocksdb::ColumnFamilyDescriptor::new(name, db_options(&rocksdb_cache, config))),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
Ok(Arc::new(Engine {
|
Ok(Arc::new(Engine {
|
||||||
|
@ -145,13 +146,13 @@ impl KeyValueDatabaseEngine for Arc<Engine> {
|
||||||
|
|
||||||
fn flush(&self) -> Result<()> {
|
fn flush(&self) -> Result<()> {
|
||||||
debug!("Running flush_wal (no sync)");
|
debug!("Running flush_wal (no sync)");
|
||||||
rocksdb::DBCommon::flush_wal(&self.rocks, false)?;
|
rust_rocksdb::DBCommon::flush_wal(&self.rocks, false)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn memory_usage(&self) -> Result<String> {
|
fn memory_usage(&self) -> Result<String> {
|
||||||
let stats = rocksdb::perf::get_memory_usage_stats(Some(&[&self.rocks]), Some(&[&self.cache]))?;
|
let stats = rust_rocksdb::perf::get_memory_usage_stats(Some(&[&self.rocks]), Some(&[&self.cache]))?;
|
||||||
Ok(format!(
|
Ok(format!(
|
||||||
"Approximate memory usage of all the mem-tables: {:.3} MB\nApproximate memory usage of un-flushed \
|
"Approximate memory usage of all the mem-tables: {:.3} MB\nApproximate memory usage of un-flushed \
|
||||||
mem-tables: {:.3} MB\nApproximate memory usage of all the table readers: {:.3} MB\nApproximate memory \
|
mem-tables: {:.3} MB\nApproximate memory usage of all the table readers: {:.3} MB\nApproximate memory \
|
||||||
|
@ -166,7 +167,7 @@ impl KeyValueDatabaseEngine for Arc<Engine> {
|
||||||
|
|
||||||
fn cleanup(&self) -> Result<()> {
|
fn cleanup(&self) -> Result<()> {
|
||||||
debug!("Running flush_opt");
|
debug!("Running flush_opt");
|
||||||
rocksdb::DBCommon::flush_opt(&self.rocks, &FlushOptions::default())?;
|
rust_rocksdb::DBCommon::flush_opt(&self.rocks, &FlushOptions::default())?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -177,7 +178,7 @@ impl KeyValueDatabaseEngine for Arc<Engine> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RocksDbEngineTree<'_> {
|
impl RocksDbEngineTree<'_> {
|
||||||
fn cf(&self) -> Arc<rocksdb::BoundColumnFamily<'_>> { self.db.rocks.cf_handle(self.name).unwrap() }
|
fn cf(&self) -> Arc<rust_rocksdb::BoundColumnFamily<'_>> { self.db.rocks.cf_handle(self.name).unwrap() }
|
||||||
}
|
}
|
||||||
|
|
||||||
impl KvTree for RocksDbEngineTree<'_> {
|
impl KvTree for RocksDbEngineTree<'_> {
|
||||||
|
@ -207,7 +208,7 @@ impl KvTree for RocksDbEngineTree<'_> {
|
||||||
Box::new(
|
Box::new(
|
||||||
self.db
|
self.db
|
||||||
.rocks
|
.rocks
|
||||||
.iterator_cf(&self.cf(), rocksdb::IteratorMode::Start)
|
.iterator_cf(&self.cf(), rust_rocksdb::IteratorMode::Start)
|
||||||
.map(std::result::Result::unwrap)
|
.map(std::result::Result::unwrap)
|
||||||
.map(|(k, v)| (Vec::from(k), Vec::from(v))),
|
.map(|(k, v)| (Vec::from(k), Vec::from(v))),
|
||||||
)
|
)
|
||||||
|
@ -219,12 +220,12 @@ impl KvTree for RocksDbEngineTree<'_> {
|
||||||
.rocks
|
.rocks
|
||||||
.iterator_cf(
|
.iterator_cf(
|
||||||
&self.cf(),
|
&self.cf(),
|
||||||
rocksdb::IteratorMode::From(
|
rust_rocksdb::IteratorMode::From(
|
||||||
from,
|
from,
|
||||||
if backwards {
|
if backwards {
|
||||||
rocksdb::Direction::Reverse
|
rust_rocksdb::Direction::Reverse
|
||||||
} else {
|
} else {
|
||||||
rocksdb::Direction::Forward
|
rust_rocksdb::Direction::Forward
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@ -262,7 +263,10 @@ impl KvTree for RocksDbEngineTree<'_> {
|
||||||
Box::new(
|
Box::new(
|
||||||
self.db
|
self.db
|
||||||
.rocks
|
.rocks
|
||||||
.iterator_cf(&self.cf(), rocksdb::IteratorMode::From(&prefix, rocksdb::Direction::Forward))
|
.iterator_cf(
|
||||||
|
&self.cf(),
|
||||||
|
rust_rocksdb::IteratorMode::From(&prefix, rust_rocksdb::Direction::Forward),
|
||||||
|
)
|
||||||
.map(std::result::Result::unwrap)
|
.map(std::result::Result::unwrap)
|
||||||
.map(|(k, v)| (Vec::from(k), Vec::from(v)))
|
.map(|(k, v)| (Vec::from(k), Vec::from(v)))
|
||||||
.take_while(move |(k, _)| k.starts_with(&prefix)),
|
.take_while(move |(k, _)| k.starts_with(&prefix)),
|
||||||
|
|
|
@ -15,8 +15,8 @@ use super::{watchers::Watchers, KeyValueDatabaseEngine, KvTree};
|
||||||
use crate::{database::Config, Result};
|
use crate::{database::Config, Result};
|
||||||
|
|
||||||
thread_local! {
|
thread_local! {
|
||||||
static READ_CONNECTION: RefCell<Option<&'static Connection>> = RefCell::new(None);
|
static READ_CONNECTION: RefCell<Option<&'static Connection>> = const { RefCell::new(None) };
|
||||||
static READ_CONNECTION_ITERATOR: RefCell<Option<&'static Connection>> = RefCell::new(None);
|
static READ_CONNECTION_ITERATOR: RefCell<Option<&'static Connection>> = const { RefCell::new(None) };
|
||||||
}
|
}
|
||||||
|
|
||||||
struct PreparedStatementIterator<'a> {
|
struct PreparedStatementIterator<'a> {
|
||||||
|
|
|
@ -386,6 +386,7 @@ async fn run_server() -> io::Result<()> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(not(feature = "zstd_compression"))]
|
#[cfg(not(feature = "zstd_compression"))]
|
||||||
{
|
{
|
||||||
app = routes().layer(middlewares).into_make_service()
|
app = routes().layer(middlewares).into_make_service()
|
||||||
|
|
|
@ -52,11 +52,13 @@ impl Service {
|
||||||
|
|
||||||
let path;
|
let path;
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(feature = "sha256_media")]
|
#[cfg(feature = "sha256_media")]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file_new(&key)
|
path = services().globals.get_media_file_new(&key)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(not(feature = "sha256_media"))]
|
#[cfg(not(feature = "sha256_media"))]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file(&key)
|
path = services().globals.get_media_file(&key)
|
||||||
|
@ -73,11 +75,13 @@ impl Service {
|
||||||
for key in keys {
|
for key in keys {
|
||||||
let file_path;
|
let file_path;
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(feature = "sha256_media")]
|
#[cfg(feature = "sha256_media")]
|
||||||
{
|
{
|
||||||
file_path = services().globals.get_media_file_new(&key)
|
file_path = services().globals.get_media_file_new(&key)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(not(feature = "sha256_media"))]
|
#[cfg(not(feature = "sha256_media"))]
|
||||||
{
|
{
|
||||||
file_path = services().globals.get_media_file(&key)
|
file_path = services().globals.get_media_file(&key)
|
||||||
|
@ -109,15 +113,17 @@ impl Service {
|
||||||
let key = self.db.create_file_metadata(mxc, width, height, content_disposition, content_type)?;
|
let key = self.db.create_file_metadata(mxc, width, height, content_disposition, content_type)?;
|
||||||
let path;
|
let path;
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(feature = "sha256_media")]
|
#[cfg(feature = "sha256_media")]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file_new(&key);
|
path = services().globals.get_media_file_new(&key)
|
||||||
}
|
};
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(not(feature = "sha256_media"))]
|
#[cfg(not(feature = "sha256_media"))]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file(&key);
|
path = services().globals.get_media_file(&key)
|
||||||
}
|
};
|
||||||
|
|
||||||
let mut f = File::create(path).await?;
|
let mut f = File::create(path).await?;
|
||||||
f.write_all(file).await?;
|
f.write_all(file).await?;
|
||||||
|
@ -130,11 +136,13 @@ impl Service {
|
||||||
if let Ok((content_disposition, content_type, key)) = self.db.search_file_metadata(mxc, 0, 0) {
|
if let Ok((content_disposition, content_type, key)) = self.db.search_file_metadata(mxc, 0, 0) {
|
||||||
let path;
|
let path;
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(feature = "sha256_media")]
|
#[cfg(feature = "sha256_media")]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file_new(&key)
|
path = services().globals.get_media_file_new(&key)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(not(feature = "sha256_media"))]
|
#[cfg(not(feature = "sha256_media"))]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file(&key)
|
path = services().globals.get_media_file(&key)
|
||||||
|
@ -208,11 +216,13 @@ impl Service {
|
||||||
|
|
||||||
let path;
|
let path;
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(feature = "sha256_media")]
|
#[cfg(feature = "sha256_media")]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file_new(&key)
|
path = services().globals.get_media_file_new(&key)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(not(feature = "sha256_media"))]
|
#[cfg(not(feature = "sha256_media"))]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file(&key)
|
path = services().globals.get_media_file(&key)
|
||||||
|
@ -292,11 +302,13 @@ impl Service {
|
||||||
// Using saved thumbnail
|
// Using saved thumbnail
|
||||||
let path;
|
let path;
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(feature = "sha256_media")]
|
#[cfg(feature = "sha256_media")]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file_new(&key)
|
path = services().globals.get_media_file_new(&key)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(not(feature = "sha256_media"))]
|
#[cfg(not(feature = "sha256_media"))]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file(&key)
|
path = services().globals.get_media_file(&key)
|
||||||
|
@ -314,11 +326,13 @@ impl Service {
|
||||||
// Generate a thumbnail
|
// Generate a thumbnail
|
||||||
let path;
|
let path;
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(feature = "sha256_media")]
|
#[cfg(feature = "sha256_media")]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file_new(&key)
|
path = services().globals.get_media_file_new(&key)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(not(feature = "sha256_media"))]
|
#[cfg(not(feature = "sha256_media"))]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file(&key)
|
path = services().globals.get_media_file(&key)
|
||||||
|
@ -388,11 +402,13 @@ impl Service {
|
||||||
|
|
||||||
let path;
|
let path;
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(feature = "sha256_media")]
|
#[cfg(feature = "sha256_media")]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file_new(&thumbnail_key)
|
path = services().globals.get_media_file_new(&thumbnail_key)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[allow(clippy::unnecessary_operation)] // error[E0658]: attributes on expressions are experimental
|
||||||
#[cfg(not(feature = "sha256_media"))]
|
#[cfg(not(feature = "sha256_media"))]
|
||||||
{
|
{
|
||||||
path = services().globals.get_media_file(&thumbnail_key)
|
path = services().globals.get_media_file(&thumbnail_key)
|
||||||
|
|
|
@ -31,7 +31,7 @@ pub enum Error {
|
||||||
#[error("There was a problem with the connection to the rocksdb database: {source}")]
|
#[error("There was a problem with the connection to the rocksdb database: {source}")]
|
||||||
RocksDbError {
|
RocksDbError {
|
||||||
#[from]
|
#[from]
|
||||||
source: rocksdb::Error,
|
source: rust_rocksdb::Error,
|
||||||
},
|
},
|
||||||
#[error("Could not generate an image.")]
|
#[error("Could not generate an image.")]
|
||||||
ImageError {
|
ImageError {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue