Skip to content

Commit fa31e81

Browse files
starknet_patricia_storage: dont cache reads in cached storage
1 parent 4a9c8a2 commit fa31e81

File tree

1 file changed

+6
-10
lines changed

1 file changed

+6
-10
lines changed

crates/starknet_patricia_storage/src/map_storage.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ impl Storage for MapStorage {
7272
}
7373

7474
/// A storage wrapper that adds an LRU cache to an underlying storage.
75-
/// Only getter methods are cached.
75+
/// Getter methods are not cached.
7676
pub struct CachedStorage<S: Storage> {
7777
pub storage: S,
7878
pub cache: LruCache<DbKey, Option<DbValue>>,
@@ -228,14 +228,13 @@ impl<S: Storage> Storage for CachedStorage<S> {
228228
type Config = CachedStorageConfig<S::Config>;
229229

230230
async fn get(&mut self, key: &DbKey) -> PatriciaStorageResult<Option<DbValue>> {
231-
if let Some(cached_value) = self.cache.get(key) {
231+
if let Some(cached_value) = self.cache.peek(key) {
232232
self.cached_reads.fetch_add(1, Ordering::Relaxed);
233233
return Ok(cached_value.clone());
234234
}
235235

236236
self.reads.fetch_add(1, Ordering::Relaxed);
237237
let storage_value = self.storage.get(key).await?;
238-
self.cache.put(key.clone(), storage_value.clone());
239238
Ok(storage_value)
240239
}
241240

@@ -253,7 +252,7 @@ impl<S: Storage> Storage for CachedStorage<S> {
253252
let mut cached_reads = 0;
254253

255254
for (index, key) in keys.iter().enumerate() {
256-
if let Some(cached_value) = self.cache.get(key) {
255+
if let Some(cached_value) = self.cache.peek(key) {
257256
values[index] = cached_value.clone();
258257
cached_reads += 1;
259258
} else {
@@ -267,12 +266,9 @@ impl<S: Storage> Storage for CachedStorage<S> {
267266
self.cached_reads.fetch_add(cached_reads, Ordering::Relaxed);
268267

269268
let fetched_values = self.storage.mget(keys_to_fetch.as_slice()).await?;
270-
indices_to_fetch.iter().zip(keys_to_fetch).zip(fetched_values).for_each(
271-
|((index, key), value)| {
272-
self.cache.put((*key).clone(), value.clone());
273-
values[*index] = value;
274-
},
275-
);
269+
indices_to_fetch.iter().zip(fetched_values).for_each(|(index, value)| {
270+
values[*index] = value;
271+
});
276272

277273
Ok(values)
278274
}

0 commit comments

Comments
 (0)