{"record":{"id":"432790de447a5c0c","repo":"microsoft/semantic-kernel","slug":"container-could-not-be-deleted","errorCode":null,"errorMessage":"Container could not be deleted.","messagePattern":"Container could not be deleted\\.","errorType":"exception","errorClass":"VectorStoreOperationException","httpStatus":null,"severity":"error","filePath":"python/semantic_kernel/connectors/azure_cosmos_db.py","lineNumber":1048,"sourceCode":"        except CosmosHttpResponseError as e:\n            raise VectorStoreOperationException(\"Failed to create container.\") from e\n\n    @override\n    async def collection_exists(self, **kwargs) -> bool:\n        container_proxy = await self._get_container_proxy(self.collection_name, **kwargs)\n        try:\n            await container_proxy.read(**kwargs)\n            return True\n        except CosmosHttpResponseError:\n            return False\n\n    @override\n    async def ensure_collection_deleted(self, **kwargs) -> None:\n        database_proxy = await self._get_database_proxy(**kwargs)\n        try:\n            await database_proxy.delete_container(self.collection_name)\n        except Exception as e:\n            raise VectorStoreOperationException(\"Container could not be deleted.\") from e\n\n    @override\n    async def __aexit__(self, exc_type, exc_value, traceback) -> None:\n        \"\"\"Exit the context manager.\"\"\"\n        if self.managed_client:\n            await self.cosmos_client.close()\n\n\n# region: NoSQL Store\n\n\n@release_candidate\nclass CosmosNoSqlStore(CosmosNoSqlBase, VectorStore):\n    \"\"\"A VectorStore implementation that uses Azure CosmosDB NoSQL as the backend storage.\"\"\"\n\n    def __init__(\n        self,\n        url: str | None = None,","sourceCodeStart":1030,"sourceCodeEnd":1066,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/connectors/azure_cosmos_db.py#L1030-L1066","documentation":"Raised when database_proxy.delete_container raises any exception during ensure_collection_deleted. Unlike creation (which only catches CosmosHttpResponseError), deletion catches all Exception, so any failure — HTTP error, network drop, client not connected — is wrapped as a VectorStoreOperationException with the original chained.","triggerScenarios":"Calling ensure_collection_deleted (or delete_collection) when the container does not exist (depending on SDK behavior), when the client is not authenticated/connected, during a transient network failure, or when the principal lacks delete permission.","commonSituations":"Deleting a non-existent or already-deleted collection; network interruption mid-call; permission/RBAC mismatch; the underlying cosmos_client was never connected (managed_client path).","solutions":["Check exc.__cause__ for the real status code (404 means already gone — often safe to treat as success).","Verify the database/container name and that the client is connected before deleting.","Wrap deletion so a 404/not-found is treated as idempotent success rather than an error."],"exampleFix":"// before\nawait store.ensure_collection_deleted()\n// after\ntry:\n    await store.ensure_collection_deleted()\nexcept VectorStoreOperationException as e:\n    if getattr(e.__cause__, \"status_code\", None) == 404:\n        pass  # already deleted, idempotent\n    else:\n        raise\n","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"from semantic_kernel.exceptions import VectorStoreOperationException\n\ntry:\n    await store.ensure_collection_deleted()\nexcept VectorStoreOperationException as e:\n    status = getattr(getattr(e.__cause__, \"status_code\", None), \"__int__\", lambda: None)()\n    if getattr(e.__cause__, \"status_code\", None) == 404:\n        pass  # idempotent: already gone\n    else:\n        raise","preventionTips":["Treat 404 on delete as success (idempotent).","Verify client connection and container name before deleting.","Wrap deletion logic to tolerate already-deleted containers."],"tags":["azure-cosmos-db","collection-management","runtime"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}