Skip to content
This repository was archived by the owner on Jun 13, 2025. It is now read-only.

Commit 8efa5ff

Browse files
committed
Avoid N+1 queries fetching Upload.errors
Previously, this was going through an unnecessarily complex Java-esque design pattern, just to execute a query that can be much better served by using a `prefetch_related` Django combinator.
1 parent 8f73894 commit 8efa5ff

File tree

12 files changed

+13
-155
lines changed

12 files changed

+13
-155
lines changed

codecov/commands/executor.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from core.commands.flag import FlagCommands
88
from core.commands.pull import PullCommands
99
from core.commands.repository import RepositoryCommands
10-
from core.commands.upload import UploadCommands
1110
from utils.services import get_long_service_name
1211

1312
mapping = {
@@ -17,7 +16,6 @@
1716
"branch": BranchCommands,
1817
"compare": CompareCommands,
1918
"pull": PullCommands,
20-
"upload": UploadCommands,
2119
"flag": FlagCommands,
2220
"component": ComponentCommands,
2321
}

core/commands/upload/__init__.py

Lines changed: 0 additions & 3 deletions
This file was deleted.

core/commands/upload/interactors/__init__.py

Whitespace-only changes.

core/commands/upload/interactors/get_upload_error.py

Lines changed: 0 additions & 16 deletions
This file was deleted.

core/commands/upload/interactors/tests/__init__.py

Whitespace-only changes.

core/commands/upload/interactors/tests/test_upload_error.py

Lines changed: 0 additions & 74 deletions
This file was deleted.

core/commands/upload/tests/__init__.py

Whitespace-only changes.

core/commands/upload/tests/test_upload.py

Lines changed: 0 additions & 18 deletions
This file was deleted.

core/commands/upload/upload.py

Lines changed: 0 additions & 8 deletions
This file was deleted.

graphql_api/actions/commits.py

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from core.models import Commit, Pull, Repository
77
from graphql_api.types.enums import CommitStatus
8-
from reports.models import CommitReport, ReportSession
8+
from reports.models import CommitReport
99

1010

1111
def pull_commits(pull: Pull) -> QuerySet[Commit]:
@@ -23,29 +23,6 @@ def pull_commits(pull: Pull) -> QuerySet[Commit]:
2323
return Commit.objects.filter(id__in=subquery).defer("_report")
2424

2525

26-
def commit_uploads(commit: Commit) -> QuerySet[ReportSession]:
27-
if not commit.commitreport:
28-
return ReportSession.objects.none()
29-
30-
sessions = commit.commitreport.sessions.prefetch_related("flags")
31-
32-
# # sessions w/ flags and type 'uploaded'
33-
# uploaded = sessions.filter(upload_type="uploaded")
34-
35-
# # carry forward flags that do not have an equivalent uploaded flag
36-
# carried_forward = sessions.filter(upload_type="carriedforward").exclude(
37-
# uploadflagmembership__flag_id__in=uploaded.values_list( <------------ FIXME: looks like `flag_id__in` is causing a seq scan in prod
38-
# "uploadflagmembership__flag_id", flat=True
39-
# )
40-
# )
41-
42-
# return (uploaded.prefetch_related("flags")).union(
43-
# carried_forward.prefetch_related("flags")
44-
# )
45-
46-
return sessions
47-
48-
4926
def commit_status(
5027
commit: Commit, report_type: CommitReport.ReportType
5128
) -> Optional[CommitStatus]:

0 commit comments

Comments
 (0)