Skip to content

Commit

Permalink
Merge pull request #1518 from pbiering/improve-verify-storage
Browse files Browse the repository at this point in the history
Improve verify storage
  • Loading branch information
pbiering authored Jun 9, 2024
2 parents e8c092b + a07b39e commit ac14b01
Showing 1 changed file with 15 additions and 5 deletions.
20 changes: 15 additions & 5 deletions radicale/storage/multifilesystem/verify.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# This file is part of Radicale - CalDAV and CardDAV server
# Copyright © 2014 Jean-Marc Martins
# Copyright © 2012-2017 Guillaume Ayoub
# Copyright © 2017-2018 Unrud <[email protected]>
# Copyright © 2017-2021 Unrud <[email protected]>
# Copyright © 2024-2024 Peter Bieringer <[email protected]>
#
# This library is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -48,7 +49,9 @@ def exception_cm(sane_path: str, href: Optional[str]
while remaining_sane_paths:
sane_path = remaining_sane_paths.pop(0)
path = pathutils.unstrip_path(sane_path, True)
logger.debug("Verifying collection %r", sane_path)
logger.info("Verifying path %r", sane_path)
count = 0
is_collection = True
with exception_cm(sane_path, None):
saved_item_errors = item_errors
collection: Optional[storage.BaseCollection] = None
Expand All @@ -59,6 +62,9 @@ def exception_cm(sane_path: str, href: Optional[str]
assert isinstance(item, storage.BaseCollection)
collection = item
collection.get_meta()
if not collection.tag:
is_collection = False
logger.info("Skip !collection %r", sane_path)
continue
if isinstance(item, storage.BaseCollection):
has_child_collections = True
Expand All @@ -68,13 +74,17 @@ def exception_cm(sane_path: str, href: Optional[str]
item.href, sane_path, item.uid)
else:
uids.add(item.uid)
logger.debug("Verified item %r in %r",
item.href, sane_path)
count += 1
logger.debug("Verified in %r item %r",
sane_path, item.href)
assert collection
if item_errors == saved_item_errors:
collection.sync()
if is_collection:
collection.sync()
if has_child_collections and collection.tag:
logger.error("Invalid collection %r: %r must not have "
"child collections", sane_path,
collection.tag)
if is_collection:
logger.info("Verified collect %r (items: %d)", sane_path, count)
return item_errors == 0 and collection_errors == 0

0 comments on commit ac14b01

Please sign in to comment.