mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Ignore failures to expire old trash during startup
These are not critical and can prevent calibre from starting with a bad database error which is pretty confusing. See #2025814 (Apparently missing library)
This commit is contained in:
parent
306d4f4c37
commit
99ef684419
@ -506,7 +506,7 @@ class DB:
|
|||||||
self.set_user_template_functions(compile_user_template_functions(
|
self.set_user_template_functions(compile_user_template_functions(
|
||||||
self.prefs.get('user_template_functions', [])))
|
self.prefs.get('user_template_functions', [])))
|
||||||
if self.prefs['last_expired_trash_at'] > 0:
|
if self.prefs['last_expired_trash_at'] > 0:
|
||||||
self.ensure_trash_dir()
|
self.ensure_trash_dir(during_init=True)
|
||||||
if load_user_formatter_functions:
|
if load_user_formatter_functions:
|
||||||
set_global_state(self)
|
set_global_state(self)
|
||||||
|
|
||||||
@ -1994,7 +1994,7 @@ class DB:
|
|||||||
self.rmtree(tdir)
|
self.rmtree(tdir)
|
||||||
self.ensure_trash_dir()
|
self.ensure_trash_dir()
|
||||||
|
|
||||||
def ensure_trash_dir(self):
|
def ensure_trash_dir(self, during_init=False):
|
||||||
tdir = self.trash_dir
|
tdir = self.trash_dir
|
||||||
os.makedirs(os.path.join(tdir, 'b'), exist_ok=True)
|
os.makedirs(os.path.join(tdir, 'b'), exist_ok=True)
|
||||||
os.makedirs(os.path.join(tdir, 'f'), exist_ok=True)
|
os.makedirs(os.path.join(tdir, 'f'), exist_ok=True)
|
||||||
@ -2002,7 +2002,7 @@ class DB:
|
|||||||
import calibre_extensions.winutil as winutil
|
import calibre_extensions.winutil as winutil
|
||||||
winutil.set_file_attributes(tdir, getattr(winutil, 'FILE_ATTRIBUTE_HIDDEN', 2) | getattr(winutil, 'FILE_ATTRIBUTE_NOT_CONTENT_INDEXED', 8192))
|
winutil.set_file_attributes(tdir, getattr(winutil, 'FILE_ATTRIBUTE_HIDDEN', 2) | getattr(winutil, 'FILE_ATTRIBUTE_NOT_CONTENT_INDEXED', 8192))
|
||||||
if time.time() - self.last_expired_trash_at >= 3600:
|
if time.time() - self.last_expired_trash_at >= 3600:
|
||||||
self.expire_old_trash()
|
self.expire_old_trash(during_init=during_init)
|
||||||
|
|
||||||
def delete_trash_entry(self, book_id, category):
|
def delete_trash_entry(self, book_id, category):
|
||||||
self.ensure_trash_dir()
|
self.ensure_trash_dir()
|
||||||
@ -2010,7 +2010,7 @@ class DB:
|
|||||||
if os.path.exists(path):
|
if os.path.exists(path):
|
||||||
self.rmtree(path)
|
self.rmtree(path)
|
||||||
|
|
||||||
def expire_old_trash(self, expire_age_in_seconds=-1):
|
def expire_old_trash(self, expire_age_in_seconds=-1, during_init=False):
|
||||||
if expire_age_in_seconds < 0:
|
if expire_age_in_seconds < 0:
|
||||||
expire_age_in_seconds = max(1 * 24 * 3600, float(self.prefs['expire_old_trash_after']))
|
expire_age_in_seconds = max(1 * 24 * 3600, float(self.prefs['expire_old_trash_after']))
|
||||||
self.last_expired_trash_at = now = time.time()
|
self.last_expired_trash_at = now = time.time()
|
||||||
@ -2026,7 +2026,13 @@ class DB:
|
|||||||
if mtime + expire_age_in_seconds <= now or expire_age_in_seconds <= 0:
|
if mtime + expire_age_in_seconds <= now or expire_age_in_seconds <= 0:
|
||||||
removals.append(x.path)
|
removals.append(x.path)
|
||||||
for x in removals:
|
for x in removals:
|
||||||
rmtree_with_retry(x)
|
try:
|
||||||
|
rmtree_with_retry(x)
|
||||||
|
except OSError:
|
||||||
|
if not during_init:
|
||||||
|
raise
|
||||||
|
import traceback
|
||||||
|
traceback.print_exc()
|
||||||
|
|
||||||
def move_book_to_trash(self, book_id, book_dir_abspath):
|
def move_book_to_trash(self, book_id, book_dir_abspath):
|
||||||
dest = os.path.join(self.trash_dir, 'b', str(book_id))
|
dest = os.path.join(self.trash_dir, 'b', str(book_id))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user