Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog/265.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Allow SDK tracking feature to continue after encountering delete errors due to impacted nodes having already been deleted by cascade delete.
10 changes: 8 additions & 2 deletions infrahub_sdk/query_groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from typing import TYPE_CHECKING, Any

from .constants import InfrahubClientMode
from .exceptions import NodeNotFoundError
from .exceptions import GraphQLError, NodeNotFoundError
from .utils import dict_hash

if TYPE_CHECKING:
Expand Down Expand Up @@ -109,7 +109,13 @@ async def delete_unused(self) -> None:
if self.previous_members and self.unused_member_ids:
for member in self.previous_members:
if member.id in self.unused_member_ids and member.typename:
await self.client.delete(kind=member.typename, id=member.id)
try:
await self.client.delete(kind=member.typename, id=member.id)
except GraphQLError as exc:
if not exc.message or "Unable to find the node" not in exc.message:
# If the node already has been deleted, skip the error as it would have been deleted
# by the cascade delete of another node
raise

async def add_related_nodes(self, ids: list[str], update_group_context: bool | None = None) -> None:
"""
Expand Down