434 for thread in self._running_threads: |
434 for thread in self._running_threads: |
435 self.info('waiting thread %s...', thread.getName()) |
435 self.info('waiting thread %s...', thread.getName()) |
436 thread.join() |
436 thread.join() |
437 self.info('thread %s finished', thread.getName()) |
437 self.info('thread %s finished', thread.getName()) |
438 self.cnxsets.close() |
438 self.cnxsets.close() |
439 hits, misses = self.querier.cache_hit, self.querier.cache_miss |
439 hits, misses = self.querier.rql_cache.cache_hit, self.querier.rql_cache.cache_miss |
440 try: |
440 try: |
441 self.info('rql st cache hit/miss: %s/%s (%s%% hits)', hits, misses, |
441 self.info('rql st cache hit/miss: %s/%s (%s%% hits)', hits, misses, |
442 (hits * 100) / (hits + misses)) |
442 (hits * 100) / (hits + misses)) |
443 hits, misses = self.system_source.cache_hit, self.system_source.cache_miss |
443 hits, misses = self.system_source.cache_hit, self.system_source.cache_miss |
444 self.info('sql cache hit/miss: %s/%s (%s%% hits)', hits, misses, |
444 self.info('sql cache hit/miss: %s/%s (%s%% hits)', hits, misses, |
660 # * correspondance between eid and type |
660 # * correspondance between eid and type |
661 # * correspondance between eid and local id (i.e. specific to a given source) |
661 # * correspondance between eid and local id (i.e. specific to a given source) |
662 |
662 |
663 def clear_caches(self, eids): |
663 def clear_caches(self, eids): |
664 etcache = self._type_cache |
664 etcache = self._type_cache |
665 rqlcache = self.querier._rql_cache |
665 rqlcache = self.querier.rql_cache |
666 for eid in eids: |
666 for eid in eids: |
667 try: |
667 try: |
668 etype = etcache.pop(int(eid)) # may be a string in some cases |
668 etype = etcache.pop(int(eid)) # may be a string in some cases |
669 rqlcache.pop(('%s X WHERE X eid %s' % (etype, eid),), None) |
669 rqlcache.pop(('%s X WHERE X eid %s' % (etype, eid),), None) |
670 except KeyError: |
670 except KeyError: |