MCPcopy Create free account
hub / github.com/GraphLite-AI/GraphLite / invalidate_by_graph_version

Method invalidate_by_graph_version

graphlite/src/cache/result_cache.rs:467–516  ·  view source on GitHub ↗

Invalidate entries by graph version

(&self, version: u64)

Source from the content-addressed store, hash-verified

465
466 /// Invalidate entries by graph version
467 pub fn invalidate_by_graph_version(&self, version: u64) {
468 let mut removed_keys = Vec::new();
469
470 // Remove from L1
471 {
472 let mut l1_cache = self.l1_cache.write().unwrap();
473 l1_cache.retain(|key, entry| {
474 if key.graph_version < version {
475 removed_keys.push(key.clone());
476 let size = entry.size_bytes();
477 *self.l1_current_memory.write().unwrap() =
478 self.l1_current_memory.read().unwrap().saturating_sub(size);
479 false
480 } else {
481 true
482 }
483 });
484 }
485
486 // Remove from L2
487 {
488 let mut l2_cache = self.l2_cache.write().unwrap();
489 l2_cache.retain(|key, entry| {
490 if key.graph_version < version {
491 if !removed_keys.contains(key) {
492 removed_keys.push(key.clone());
493 }
494 let size = entry.size_bytes();
495 *self.l2_current_memory.write().unwrap() =
496 self.l2_current_memory.read().unwrap().saturating_sub(size);
497 false
498 } else {
499 true
500 }
501 });
502 }
503
504 // Update LRU trackers
505 {
506 let mut l1_lru = self.l1_lru.write().unwrap();
507 let mut l2_lru = self.l2_lru.write().unwrap();
508
509 for key in removed_keys {
510 // Note: In a real implementation, we'd need to properly update LRU positions
511 // This is a simplified version
512 l1_lru.positions.remove(&key);
513 l2_lru.positions.remove(&key);
514 }
515 }
516 }
517
518 /// Get cache statistics
519 pub fn stats(&self) -> CacheStats {

Callers 2

Calls 5

unwrapMethod · 0.80
cloneMethod · 0.80
containsMethod · 0.80
size_bytesMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected