(&self, key: QueryCacheKey, mut entry: QueryResultEntry)
| 364 | } |
| 365 | |
| 366 | fn insert_l2(&self, key: QueryCacheKey, mut entry: QueryResultEntry) { |
| 367 | entry.metadata.level = CacheLevel::L2; |
| 368 | let size = entry.size_bytes(); |
| 369 | |
| 370 | // Evict if necessary |
| 371 | self.evict_l2_if_needed(size); |
| 372 | |
| 373 | { |
| 374 | let mut l2_cache = self.l2_cache.write().unwrap(); |
| 375 | l2_cache.insert(key.clone(), entry); |
| 376 | } |
| 377 | |
| 378 | { |
| 379 | let mut l2_lru = self.l2_lru.write().unwrap(); |
| 380 | l2_lru.access(&key); |
| 381 | } |
| 382 | |
| 383 | { |
| 384 | let mut current_memory = self.l2_current_memory.write().unwrap(); |
| 385 | *current_memory += size; |
| 386 | } |
| 387 | } |
| 388 | |
| 389 | fn evict_l1_if_needed(&self, incoming_size: usize) { |
| 390 | let current_memory = *self.l1_current_memory.read().unwrap(); |
no test coverage detected