diff --git a/radicale/storage.py b/radicale/storage.py index a67fbf9..2d60c58 100644 --- a/radicale/storage.py +++ b/radicale/storage.py @@ -34,6 +34,7 @@ import stat import subprocess import threading import time +import datetime from contextlib import contextmanager from hashlib import md5 from importlib import import_module @@ -699,6 +700,7 @@ class Collection(BaseCollection): if not os.path.exists(self._filesystem_path): return None items = [] + time_begin = datetime.datetime.now() for href in os.listdir(self._filesystem_path): if not is_safe_filesystem_path_component(href): self.logger.debug("Skipping component: %s", href) @@ -707,7 +709,12 @@ class Collection(BaseCollection): if os.path.isfile(path): self.logger.debug("Read object: %s", path) with open(path, encoding=self.encoding, newline="") as fd: - items.append(vobject.readOne(fd.read())) + try: + items.append(vobject.readOne(fd.read())) + except: + self.logger.error("Object broken (skip): %s", path) + time_end = datetime.datetime.now() + self.logger.info("Collection read %d items in %s sec from %s", len(items),(time_end - time_begin).total_seconds(), self._filesystem_path) if self.get_meta("tag") == "VCALENDAR": collection = vobject.iCalendar() for item in items: