Skip to content

Commit 923feaa

Browse files
authored
Fix datasource/app deletion workflow error (#10)
* Change order of deletions to ensure we don't hit foreign key constraints error on app or datasource deletion * Use queryset delete to delete run_graph_entries
1 parent 67d9f6a commit 923feaa

File tree

3 files changed

+33
-16
lines changed

3 files changed

+33
-16
lines changed

apps/apis.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -301,18 +301,18 @@ def delete(self, request, uid):
301301

302302
# Cleanup app run_graph
303303
run_graph_entries = app.run_graph.all()
304-
endpoint_entries = filter(lambda x: x != None, set(list(map(lambda x: x.entry_endpoint, run_graph_entries)) +
305-
list(map(lambda x: x.exit_endpoint, run_graph_entries))))
304+
endpoint_entries = list(filter(lambda x: x != None, set(list(map(lambda x: x.entry_endpoint, run_graph_entries)) +
305+
list(map(lambda x: x.exit_endpoint, run_graph_entries)))))
306306

307+
# Cleanup rungraph
308+
# Delete all the run_graph entries
309+
run_graph_entries.delete()
310+
307311
# Delete all the endpoint entries
308312
for entry in endpoint_entries:
309313
EndpointViewSet.delete(self, request, id=str(
310314
entry.parent_uuid), force_delete_app=True)
311315

312-
# Delete all the run_graph entries
313-
for entry in run_graph_entries:
314-
entry.delete()
315-
316316
app.delete()
317317

318318
return DRFResponse(status=200)

apps/tasks.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import logging
22
import uuid
3-
from typing import Any
43
from typing import List
54

65
from datasources.handlers.datasource_type_interface import DataSourceEntryItem
@@ -9,6 +8,7 @@
98
from datasources.models import DataSourceEntry
109
from datasources.models import DataSourceEntryStatus
1110
from datasources.types import DataSourceTypeFactory
11+
import weaviate
1212

1313
logger = logging.getLogger(__name__)
1414

@@ -65,11 +65,23 @@ def delete_data_entry_task(datasource: DataSource, entry_data: DataSourceEntry):
6565
datasource.type,
6666
)
6767
datasource_entry_handler = datasource_entry_handler_cls(datasource)
68-
datasource_entry_items = datasource_entry_handler.delete_entry(
69-
entry_data.config,
70-
)
71-
72-
entry_data.delete()
68+
try:
69+
datasource_entry_items = datasource_entry_handler.delete_entry(
70+
entry_data.config,
71+
)
72+
entry_data.delete()
73+
except weaviate.exceptions.UnexpectedStatusCodeException:
74+
logger.exception("Error deleting data source entry from weaviate")
75+
entry_data.delete()
76+
except Exception as e:
77+
logger.exception(
78+
f'Error deleting data_source_entry: %s' %
79+
str(entry_data.name),
80+
)
81+
entry_data.status = DataSourceEntryStatus.FAILED
82+
entry_data.config = {'errors': {'message':"Error in deleting data source entry"}}
83+
entry_data.save()
84+
7385
datasource.save()
7486
return datasource_entry_items
7587

datasources/apis.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
from urllib.parse import urlparse
44

55
from django.shortcuts import get_object_or_404
6-
from django.utils.decorators import method_decorator
7-
from django.views.decorators.cache import cache_page
86
from rest_framework import viewsets
97
from rest_framework.response import Response as DRFResponse
108

@@ -127,9 +125,16 @@ def delete(self, request, uid):
127125
DataSource, uuid=uuid.UUID(uid), owner=request.user,
128126
)
129127

130-
# Delete the data source and cleanup all data source entries associated with it
128+
# Delete all datasource entries associated with the datasource
129+
datasource_entries = DataSourceEntry.objects.filter(
130+
datasource=datasource,
131+
)
132+
for entry in datasource_entries:
133+
DataSourceEntryViewSet().delete(request=request, uid=str(entry.uuid))
134+
135+
# Delete the data from data store
131136
delete_data_source_task(datasource)
132-
137+
133138
datasource.delete()
134139
return DRFResponse(status=204)
135140

0 commit comments

Comments
 (0)