(
&mut self,
current_ids: &BTreeSet<GlobalId>,
remove_prior_versions: bool,
compact_shard: bool,
dyncfgs: &ConfigSet,
)
| 191 | } |
| 192 | |
| 193 | async fn try_open( |
| 194 | &mut self, |
| 195 | current_ids: &BTreeSet<GlobalId>, |
| 196 | remove_prior_versions: bool, |
| 197 | compact_shard: bool, |
| 198 | dyncfgs: &ConfigSet, |
| 199 | ) -> Result< |
| 200 | ( |
| 201 | BTreeMap<GlobalId, LocalExpressions>, |
| 202 | BTreeMap<GlobalId, GlobalExpressions>, |
| 203 | ), |
| 204 | mz_durable_cache::Error, |
| 205 | > { |
| 206 | let mut keys_to_remove = Vec::new(); |
| 207 | let mut local_expressions = BTreeMap::new(); |
| 208 | let mut global_expressions = BTreeMap::new(); |
| 209 | |
| 210 | for (key, expressions) in self.durable_cache.entries_local() { |
| 211 | let build_version = match key.build_version.parse::<Version>() { |
| 212 | Ok(build_version) => build_version, |
| 213 | Err(err) => { |
| 214 | warn!("unable to parse build version: {key:?}: {err:?}"); |
| 215 | keys_to_remove.push((key.clone(), None)); |
| 216 | continue; |
| 217 | } |
| 218 | }; |
| 219 | if build_version == self.build_version { |
| 220 | // Only deserialize the current version. |
| 221 | match key.expr_type { |
| 222 | ExpressionType::Local => { |
| 223 | let expressions: LocalExpressions = match bincode::deserialize(expressions) |
| 224 | { |
| 225 | Ok(expressions) => expressions, |
| 226 | Err(err) => { |
| 227 | soft_panic_or_log!( |
| 228 | "unable to deserialize local expressions: ({key:?}, {expressions:?}): {err:?}" |
| 229 | ); |
| 230 | continue; |
| 231 | } |
| 232 | }; |
| 233 | // Remove dropped IDs. |
| 234 | if !current_ids.contains(&key.id) { |
| 235 | keys_to_remove.push((key.clone(), None)); |
| 236 | } else { |
| 237 | local_expressions.insert(key.id, expressions); |
| 238 | } |
| 239 | } |
| 240 | ExpressionType::Global => { |
| 241 | let expressions: GlobalExpressions = match bincode::deserialize(expressions) |
| 242 | { |
| 243 | Ok(expressions) => expressions, |
| 244 | Err(err) => { |
| 245 | soft_panic_or_log!( |
| 246 | "unable to deserialize global expressions: ({key:?}, {expressions:?}): {err:?}" |
| 247 | ); |
| 248 | continue; |
| 249 | } |
| 250 | }; |
no test coverage detected