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

Method new

graphlite/src/cache/cache_manager.rs:122–214  ·  view source on GitHub ↗

Create new cache manager with configuration

(config: CacheConfig)

Source from the content-addressed store, hash-verified

120impl CacheManager {
121 /// Create new cache manager with configuration
122 pub fn new(config: CacheConfig) -> Result<Self, String> {
123 config.validate()?;
124
125 let result_cache = Arc::new(ResultCache::new(
126 config.l1_config.max_entries,
127 config.l1_config.max_memory_bytes,
128 config.l2_config.max_entries,
129 config.l2_config.max_memory_bytes,
130 config.eviction_policy.clone(),
131 ));
132
133 let plan_cache = Arc::new(PlanCache::new(
134 config.l3_config.max_entries,
135 config.l3_config.max_memory_bytes,
136 config
137 .l3_config
138 .default_ttl
139 .unwrap_or(Duration::from_secs(3600)),
140 ));
141
142 let subquery_cache = Arc::new(SubqueryCache::new(
143 config.l1_config.max_entries / 2, // Subqueries are smaller, allow more entries
144 config.l1_config.max_memory_bytes / 4, // But use less memory
145 config
146 .l1_config
147 .default_ttl
148 .unwrap_or(Duration::from_secs(300)),
149 ));
150
151 let invalidation_strategy = match &config.invalidation_strategy {
152 super::cache_config::InvalidationStrategy::Manual => {
153 super::invalidation::InvalidationStrategy::Manual
154 }
155 super::cache_config::InvalidationStrategy::Ttl => {
156 super::invalidation::InvalidationStrategy::Ttl {
157 default_ttl: Duration::from_secs(3600),
158 max_ttl: Duration::from_secs(7200),
159 }
160 }
161 super::cache_config::InvalidationStrategy::TagBased => {
162 super::invalidation::InvalidationStrategy::TagBased {
163 sensitive_tags: [
164 "nodes".to_string(),
165 "edges".to_string(),
166 "schema".to_string(),
167 ]
168 .into_iter()
169 .collect(),
170 propagation_delay: Duration::from_millis(100),
171 }
172 }
173 super::cache_config::InvalidationStrategy::Versioned => {
174 super::invalidation::InvalidationStrategy::Versioned {
175 track_data_version: true,
176 track_schema_version: true,
177 }
178 }
179 super::cache_config::InvalidationStrategy::Hybrid {

Callers

nothing calls this directly

Calls 2

validateMethod · 0.80
cloneMethod · 0.80

Tested by

no test coverage detected