summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMichiel van Baak <[email protected]>2021-03-13 15:18:16 +0100
committerGitHub <[email protected]>2021-03-13 09:18:16 -0500
commit7789f8c1a03f15bdc23d74c511000832f52091ed (patch)
tree003bb86e4188398a8d7526a8696276862e419a19
parentcdaa38f6f1279b2660df993953a351b35f0bf7d1 (diff)
downloadbazarr-7789f8c1a03f15bdc23d74c511000832f52091ed.tar.gz
bazarr-7789f8c1a03f15bdc23d74c511000832f52091ed.zip
Use dogpile.cache sha1_mangle_key to mangle cache keys
When using the subtitle hashes as cache keys, sometimes they come out as filenames of 270 characters. Not a lot of filesystems out there support filenames with over 250 characters. This behaviour was reported with ext4 and zfs on both linux and FreeBSD. The dogpile.cache utils come with a function that returns a hex digest of the key, limiting the filename to a fixed length of 40 characters.
-rw-r--r--bazarr/init.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/bazarr/init.py b/bazarr/init.py
index 4ef90ffdb..bfe2d07f9 100644
--- a/bazarr/init.py
+++ b/bazarr/init.py
@@ -11,7 +11,9 @@ from get_args import args
from logger import configure_logging
from helper import path_mappings
+from dogpile.cache import make_region
from dogpile.cache.region import register_backend as register_cache_backend
+from dogpile.cache.util import sha1_mangle_key
import subliminal
import datetime
@@ -109,12 +111,19 @@ if not os.path.exists(os.path.join(args.config_dir, 'db', 'bazarr.db')):
# upgrade database schema
from database import db_upgrade
+
db_upgrade()
# Configure dogpile file caching for Subliminal request
register_cache_backend("subzero.cache.file", "subzero.cache_backends.file", "SZFileBackend")
-subliminal.region.configure('subzero.cache.file', expiration_time=datetime.timedelta(days=30),
- arguments={'appname': "sz_cache", 'app_cache_dir': args.config_dir})
+
+subliminal.region = make_region(
+ key_mangler=sha1_mangle_key
+).configure(
+ 'subzero.cache.file',
+ expiration_time=datetime.timedelta(days=30),
+ arguments={'appname': "sz_cache", 'app_cache_dir': args.config_dir}
+)
subliminal.region.backend.sync()
if not os.path.exists(os.path.join(args.config_dir, 'config', 'releases.txt')):
@@ -177,20 +186,20 @@ with open(os.path.normpath(os.path.join(args.config_dir, 'config', 'config.ini')
def init_binaries():
from utils import get_binary
exe = get_binary("unrar")
-
+
rarfile.UNRAR_TOOL = exe
rarfile.ORIG_UNRAR_TOOL = exe
try:
rarfile.custom_check([rarfile.UNRAR_TOOL], True)
except:
logging.debug("custom check failed for: %s", exe)
-
+
rarfile.OPEN_ARGS = rarfile.ORIG_OPEN_ARGS
rarfile.EXTRACT_ARGS = rarfile.ORIG_EXTRACT_ARGS
rarfile.TEST_ARGS = rarfile.ORIG_TEST_ARGS
logging.debug("Using UnRAR from: %s", exe)
unrar = exe
-
+
return unrar