CacheCleaner removed due to random crashes associated with Python threading lock

This commit is contained in:
Vinicius Moreira
2019-10-14 16:51:34 -03:00
parent e4d123b5f4
commit 9aa33d7cbd
3 changed files with 5 additions and 30 deletions

View File

@@ -21,6 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- History panel can now me maximized, minimized and allows to copy column content.
- It is possible to use custom tray icons via the environment variables: **BAUH_TRAY_DEFAULT_ICON_PATH** and ** **BAUH_TRAY_UPDATES_ICON_PATH** ( displayed when there are updates )
- Minor UI improvements
- CacheCleaner removed due to random crashes associated with Python threading lock
### Fixes
- Snap:

View File

@@ -10,10 +10,10 @@ from bauh.api.http import HttpClient
from bauh.view.core import gems, config
from bauh.view.core.controller import GenericSoftwareManager
from bauh.view.core.downloader import AdaptableFileDownloader
from bauh.view.util import util, logs, resource
from bauh.view.qt.systray import TrayIcon
from bauh.view.qt.window import ManageWindow
from bauh.view.util.cache import CacheCleaner, DefaultMemoryCacheFactory
from bauh.view.util import util, logs, resource
from bauh.view.util.cache import DefaultMemoryCacheFactory
from bauh.view.util.disk import DefaultDiskCacheLoaderFactory
@@ -27,8 +27,7 @@ def main():
i18n_key, i18n = util.get_locale_keys(args.locale)
cache_cleaner = CacheCleaner()
cache_factory = DefaultMemoryCacheFactory(expiration_time=args.cache_exp, cleaner=cache_cleaner)
cache_factory = DefaultMemoryCacheFactory(expiration_time=args.cache_exp)
icon_cache = cache_factory.new(args.icon_exp)
http_client = HttpClient(logger)
@@ -90,8 +89,6 @@ def main():
manage_window.refresh_apps()
manage_window.show()
cache_cleaner.start()
sys.exit(app.exec_())

View File

@@ -71,38 +71,15 @@ class DefaultMemoryCache(MemoryCache):
self.get(key)
class CacheCleaner(Thread):
def __init__(self, check_interval: int = 15):
super(CacheCleaner, self).__init__(daemon=True)
self.caches = []
self.check_interval = check_interval
def register(self, cache: MemoryCache):
if cache.is_enabled():
self.caches.append(cache)
def run(self):
if self.caches:
while True:
for cache in self.caches:
cache.clean_expired()
time.sleep(self.check_interval)
class DefaultMemoryCacheFactory(MemoryCacheFactory):
def __init__(self, expiration_time: int, cleaner: CacheCleaner):
def __init__(self, expiration_time: int):
"""
:param expiration_time: default expiration time for all instantiated caches
:param cleaner
"""
super(DefaultMemoryCacheFactory, self).__init__()
self.expiration_time = expiration_time
self.cleaner = cleaner
def new(self, expiration: int = None) -> MemoryCache:
instance = DefaultMemoryCache(expiration if expiration is not None else self.expiration_time)
self.cleaner.register(instance)
return instance