remove unnecessary open+read for mtime+size cache
This commit is contained in:
@@ -68,8 +68,21 @@ class CollectionPartGet(CollectionPartCache, CollectionPartLock,
|
||||
else:
|
||||
path = os.path.join(self._filesystem_path, href)
|
||||
try:
|
||||
with open(path, "rb") as f:
|
||||
raw_text = f.read()
|
||||
if self._storage._use_mtime_and_size_for_item_cache is True:
|
||||
# try to avoid "open"
|
||||
if not os.path.isfile(path):
|
||||
if not os.path.exists(path):
|
||||
raise FileNotFoundError(path)
|
||||
if os.path.isdir(path):
|
||||
raise IsADirectoryError(path)
|
||||
if not os.access(path, os.R_OK):
|
||||
raise PermissionError(path)
|
||||
else:
|
||||
with open(path, "rb") as f:
|
||||
# early read of the content
|
||||
if self._storage._debug_cache_actions is True:
|
||||
logger.debug("Item cache early read: %r", path)
|
||||
raw_text = f.read()
|
||||
except (FileNotFoundError, IsADirectoryError):
|
||||
return None
|
||||
except PermissionError:
|
||||
@@ -100,6 +113,12 @@ class CollectionPartGet(CollectionPartCache, CollectionPartLock,
|
||||
# Check if another process created the file in the meantime
|
||||
cache_content = self._load_item_cache(href, cache_hash)
|
||||
if cache_content is None:
|
||||
if self._storage._use_mtime_and_size_for_item_cache is True:
|
||||
# delayed read of the content
|
||||
if self._storage._debug_cache_actions is True:
|
||||
logger.debug("Item cache late read : %r", path)
|
||||
with open(path, "rb") as f:
|
||||
raw_text = f.read()
|
||||
try:
|
||||
vobject_items = radicale_item.read_components(
|
||||
raw_text.decode(self._encoding))
|
||||
|
||||
Reference in New Issue
Block a user