MCPcopy Create free account
hub / github.com/apache/datafusion / put

Method put

datafusion/execution/src/cache/file_statistics_cache.rs:97–124  ·  view source on GitHub ↗
(
        &mut self,
        key: &TableScopedPath,
        value: CachedFileMetadata,
    )

Source from the content-addressed store, hash-verified

95 }
96
97 fn put(
98 &mut self,
99 key: &TableScopedPath,
100 value: CachedFileMetadata,
101 ) -> Option<CachedFileMetadata> {
102 let mut ctx = DFHeapSizeCtx::default();
103 let key_size = key.heap_size(&mut ctx);
104 let entry_size = value.heap_size(&mut ctx);
105
106 if entry_size + key_size > self.memory_limit {
107 // Remove potential stale entry
108 return self.remove(key);
109 }
110
111 self.memory_used += entry_size;
112 self.memory_used += key_size;
113
114 let old_value = self.lru_queue.put(key.clone(), value);
115 if let Some(old_entry) = &old_value {
116 let mut ctx = DFHeapSizeCtx::default();
117 self.memory_used -= old_entry.heap_size(&mut ctx);
118 self.memory_used -= key_size;
119 }
120
121 self.evict_entries();
122
123 old_value
124 }
125
126 fn remove(&mut self, k: &TableScopedPath) -> Option<CachedFileMetadata> {
127 if let Some(old_entry) = self.lru_queue.remove(k) {

Calls 4

heap_sizeMethod · 0.45
removeMethod · 0.45
cloneMethod · 0.45
evict_entriesMethod · 0.45