def fast_match(self, cluster_ids: list, tokens): match_cluster = None max_sim = -1 max_param_count = -1 max_cluster = None for cluster_id in cluster_ids: # Try to retrieve cluster from cache with bypassing eviction # algorithm as we are only testing candidates for a match. cluster = Cache.get(self.id_to_cluster, cluster_id) if cluster is None: continue cur_sim, param_count = self.get_seq_distance( cluster.log_template_tokens, tokens) if cur_sim > max_sim or (cur_sim == max_sim and param_count > max_param_count): max_sim = cur_sim max_param_count = param_count max_cluster = cluster if max_sim >= self.sim_th: match_cluster = max_cluster return match_cluster
async def exists_cached( self, cache: Cache, memory: bool = True, **filters: Any, ) -> bool: id = filters.pop(self.repository.id_name, None) if id is None: raise RequiredKeyAttributeError( type(self.repository).__name__, self.repository.id_name, self.repository.key_attrs, ) cache_key = self.cache_key(id, self.cache_key_suffix(**filters)) entity_exists = cache.get(cache_key) if entity_exists is None: filters[self.repository.id_name] = id if memory: entity_exists = await self.exists_circuit( self.repository.query(**filters) ) else: entity_exists = await self.exists_fallback_circuit( self.repository.query(memory=False, **filters) ) if not entity_exists: cache[cache_key] = CACHE_ALREADY_NOT_FOUND return False else: cache[cache_key] = True elif entity_exists is CACHE_ALREADY_NOT_FOUND: return False return True
def get(self, *args, **kwargs): with self.__timer: return Cache.get(self, *args, **kwargs)