Browse Source

remote: Replace wtinylfu with quick_cache

wtinylfu's author recommends to use another crate because of its low
maintenance. Also quick_cache is more popular so problems are more
likely to be found.
merge-requests/2136/head
Kévin Commaille 2 months ago
parent
commit
f95180acb1
No known key found for this signature in database
GPG Key ID: F26F4BE20A08255B
  1. 65
      Cargo.lock
  2. 2
      Cargo.toml
  3. 14
      src/session/remote/cache.rs

65
Cargo.lock generated

@ -41,6 +41,19 @@ dependencies = [
"cpufeatures",
]
[[package]]
name = "ahash"
version = "0.8.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
dependencies = [
"cfg-if",
"getrandom 0.3.4",
"once_cell",
"version_check",
"zerocopy",
]
[[package]]
name = "aho-corasick"
version = "1.1.4"
@ -363,12 +376,6 @@ version = "1.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d809780667f4410e7c41b07f52439b94d2bdf8528eeedc287fa38d3b7f95d82"
[[package]]
name = "bit-vec"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2c54ff287cfc0a34f38a6b832ea1bd8e448a330b3e40a50859e6488bee07f22"
[[package]]
name = "bitflags"
version = "2.10.0"
@ -421,17 +428,6 @@ dependencies = [
"generic-array",
]
[[package]]
name = "bloomfilter"
version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c541c70a910b485670304fd420f0eab8f7bde68439db6a8d98819c3d2774d7e2"
dependencies = [
"bit-vec",
"getrandom 0.2.16",
"siphasher",
]
[[package]]
name = "blurhash"
version = "0.2.3"
@ -649,16 +645,6 @@ version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
[[package]]
name = "count-min-sketch"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fef0a447ef2e9e6bd57e379f88702c58c4a4253ba82fb175bd7db012192311a"
dependencies = [
"rand 0.8.5",
"siphasher",
]
[[package]]
name = "cpufeatures"
version = "0.2.17"
@ -1176,6 +1162,7 @@ dependencies = [
"oo7",
"pulldown-cmark",
"qrcode",
"quick_cache",
"rand 0.9.2",
"regex",
"rmp-serde",
@ -1195,7 +1182,6 @@ dependencies = [
"tracing-subscriber",
"url",
"webp",
"wtinylfu",
"zeroize",
]
@ -3808,6 +3794,18 @@ version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d68782463e408eb1e668cf6152704bd856c78c5b6417adaee3203d8f4c1fc9ec"
[[package]]
name = "quick_cache"
version = "0.6.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ada44a88ef953a3294f6eb55d2007ba44646015e18613d2f213016379203ef3"
dependencies = [
"ahash",
"equivalent",
"hashbrown 0.16.1",
"parking_lot",
]
[[package]]
name = "quote"
version = "1.0.43"
@ -5747,17 +5745,6 @@ version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
[[package]]
name = "wtinylfu"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60467db864b7ccbac14ff59595c4e24945243508683f49a4e21eaf747399544f"
dependencies = [
"bloomfilter",
"count-min-sketch",
"lru",
]
[[package]]
name = "x25519-dalek"
version = "2.0.1"

2
Cargo.toml

@ -40,6 +40,7 @@ mime_guess = "2"
numeric-sort = "0.1"
pulldown-cmark = "0.13"
qrcode = { version = "0.14", default-features = false }
quick_cache = "0.6"
rand = "0.9"
regex = "1"
rmp-serde = "1"
@ -57,7 +58,6 @@ tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
url = "2"
webp = { version = "0.3", default-features = false }
wtinylfu = "0.2"
zeroize = "1"
# gtk-rs project and dependents. These usually need to be updated together.

14
src/session/remote/cache.rs

@ -1,7 +1,7 @@
use std::{cell::RefCell, fmt, rc::Rc};
use quick_cache::unsync::Cache;
use ruma::{OwnedRoomOrAliasId, OwnedUserId, RoomId};
use wtinylfu::WTinyLfuCache;
use super::{RemoteRoom, RemoteUser};
use crate::{session::Session, utils::matrix::MatrixRoomIdUri};
@ -9,9 +9,9 @@ use crate::{session::Session, utils::matrix::MatrixRoomIdUri};
/// The data of the [`RemoteCache`].
struct RemoteCacheData {
/// Remote rooms.
rooms: RefCell<WTinyLfuCache<OwnedRoomOrAliasId, RemoteRoom>>,
rooms: RefCell<Cache<OwnedRoomOrAliasId, RemoteRoom>>,
/// Remote users.
users: RefCell<WTinyLfuCache<OwnedUserId, RemoteUser>>,
users: RefCell<Cache<OwnedUserId, RemoteUser>>,
}
/// An API to query remote data and cache it.
@ -27,8 +27,8 @@ impl RemoteCache {
Self {
session,
data: RemoteCacheData {
rooms: WTinyLfuCache::new(30, 10).into(),
users: WTinyLfuCache::new(30, 10).into(),
rooms: Cache::new(30).into(),
users: Cache::new(30).into(),
}
.into(),
}
@ -78,7 +78,7 @@ impl RemoteCache {
// We did not find it, create the room.
let id = uri.id.clone();
let room = RemoteRoom::new(&self.session, uri);
rooms.push(id, room.clone());
rooms.insert(id, room.clone());
room
}
@ -95,7 +95,7 @@ impl RemoteCache {
// We did not find it, create the user.
let user = RemoteUser::new(&self.session, user_id.clone());
users.push(user_id, user.clone());
users.insert(user_id, user.clone());
user
}

Loading…
Cancel
Save