1
0
Fork 0
mirror of https://github.com/Kozea/Radicale.git synced 2025-07-29 18:08:31 +00:00

add option to skip broken item instead of triggering exception

This commit is contained in:
Peter Bieringer 2024-06-09 13:57:32 +02:00
parent 518de6b360
commit fc7b50d69f
5 changed files with 19 additions and 1 deletions

View file

@ -211,6 +211,10 @@ DEFAULT_CONFIG_SCHEMA: types.CONFIG_SCHEMA = OrderedDict([
"value": "2592000", # 30 days
"help": "delete sync token that are older",
"type": positive_int}),
("skip_broken_item", {
"value": False,
"help": "skip broken item instead of triggering exception",
"type": bool}),
("hook", {
"value": "",
"help": "command that is run after changes to storage",

View file

@ -40,6 +40,7 @@ class CollectionBase(storage.BaseCollection):
# Path should already be sanitized
self._path = pathutils.strip_path(path)
self._encoding = storage_.configuration.get("encoding", "stock")
self._skip_broken_item = storage_.configuration.get("storage", "skip_broken_item")
if filesystem_path is None:
filesystem_path = pathutils.path_to_filesystem(folder, self.path)
self._filesystem_path = filesystem_path

View file

@ -101,7 +101,11 @@ class CollectionPartGet(CollectionPartCache, CollectionPartLock,
cache_content = self._store_item_cache(
href, temp_item, cache_hash)
except Exception as e:
raise RuntimeError("Failed to load item %r in %r: %s" %
if self._skip_broken_item:
logger.warning("Skip broken item %r in %r: %s", href, self.path, e)
return
else:
raise RuntimeError("Failed to load item %r in %r: %s" %
(href, self.path, e)) from e
# Clean cache entries once after the data in the file
# system was edited externally.