{"record":{"id":"8572bf0ff22cf290","repo":"home-assistant/core","slug":"caldav-delete-error-err","errorCode":null,"errorMessage":"CalDAV delete error: {err}","messagePattern":"CalDAV delete error: (.+?)","errorType":"exception","errorClass":"HomeAssistantError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/caldav/todo.py","lineNumber":203,"sourceCode":"        \"\"\"Delete To-do items.\"\"\"\n        tasks = (\n            self.hass.async_add_executor_job(self._calendar.todo_by_uid, uid)\n            for uid in uids\n        )\n\n        try:\n            items = await asyncio.gather(*tasks)\n        except NotFoundError as err:\n            raise HomeAssistantError(\"Could not find To-do item\") from err\n        except (requests.ConnectionError, requests.Timeout, DAVError) as err:\n            raise HomeAssistantError(f\"CalDAV lookup error: {err}\") from err\n\n        # Run serially as some CalDAV servers do not support concurrent modifications\n        for item in items:\n            try:\n                await self.hass.async_add_executor_job(item.delete)\n            except (requests.ConnectionError, requests.Timeout, DAVError) as err:\n                raise HomeAssistantError(f\"CalDAV delete error: {err}\") from err\n        # refreshing async otherwise it would take too much time\n        self.hass.async_create_task(self.async_update_ha_state(force_refresh=True))\n","sourceCodeStart":185,"sourceCodeEnd":206,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/caldav/todo.py#L185-L206","documentation":"HomeAssistantError raised in async_delete_todo_items when item.delete fails for an individual item with ConnectionError, Timeout, or DAVError. Deletes run serially (some servers do not support concurrent modifications), so earlier items may already be deleted before the failure aborts the loop.","triggerScenarios":"A DELETE request for one VTODO fails mid-batch: server refuses/times out on that item, connection drops, or the server rejects deletion of the resource.","commonSituations":"Partial network failure during a batch delete, server-side locking or permissions preventing deletion of one item, servers that serialize writes slowly.","solutions":["Refresh and re-issue the delete for the remaining items (some may already be gone, yielding the not-found error — delete those individually or refresh first)","Verify the calendar collection allows deletes for the account in use","Check server/proxy logs for why the specific DELETE failed"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"for item in items:  # serial by design: some servers reject concurrent writes\n    try:\n        await self.hass.async_add_executor_job(item.delete)\n    except (requests.ConnectionError, requests.Timeout, DAVError) as err:\n        raise HomeAssistantError(f\"CalDAV delete error: {err}\") from err","preventionTips":["After a failed batch delete, refresh and delete the remaining items individually","Confirm delete permissions on the collection for the account","Expect partial completion: earlier serial deletes may have succeeded"],"tags":["homeassistant","caldav","todo","delete","network"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}