remove unnecessary open+read for mtime+size cache
This commit is contained in:
@@ -68,7 +68,20 @@ class CollectionPartGet(CollectionPartCache, CollectionPartLock,
|
|||||||
else:
|
else:
|
||||||
path = os.path.join(self._filesystem_path, href)
|
path = os.path.join(self._filesystem_path, href)
|
||||||
try:
|
try:
|
||||||
|
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:
|
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()
|
raw_text = f.read()
|
||||||
except (FileNotFoundError, IsADirectoryError):
|
except (FileNotFoundError, IsADirectoryError):
|
||||||
return None
|
return None
|
||||||
@@ -100,6 +113,12 @@ class CollectionPartGet(CollectionPartCache, CollectionPartLock,
|
|||||||
# Check if another process created the file in the meantime
|
# Check if another process created the file in the meantime
|
||||||
cache_content = self._load_item_cache(href, cache_hash)
|
cache_content = self._load_item_cache(href, cache_hash)
|
||||||
if cache_content is None:
|
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:
|
try:
|
||||||
vobject_items = radicale_item.read_components(
|
vobject_items = radicale_item.read_components(
|
||||||
raw_text.decode(self._encoding))
|
raw_text.decode(self._encoding))
|
||||||
|
|||||||
Reference in New Issue
Block a user