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

Commit 1b37195

Browse files
fix: only call commit_update task when commit is newly created (#804)
1 parent 36f9fea commit 1b37195

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

upload/serializers.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from core.models import Commit, Repository
66
from reports.models import CommitReport, ReportResults, ReportSession, RepositoryFlag
77
from services.archive import ArchiveService
8+
from services.task import TaskService
89

910

1011
class FlagListField(serializers.ListField):
@@ -136,9 +137,15 @@ class Meta:
136137
def create(self, validated_data):
137138
repo = validated_data.pop("repository", None)
138139
commitid = validated_data.pop("commitid", None)
139-
commit, _ = Commit.objects.get_or_create(
140+
commit, created = Commit.objects.get_or_create(
140141
repository=repo, commitid=commitid, defaults=validated_data
141142
)
143+
144+
if created:
145+
TaskService().update_commit(
146+
commitid=commit.commitid, repoid=commit.repository.repoid
147+
)
148+
142149
return commit
143150

144151

upload/tests/views/test_commits.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ def test_create_commit_already_exists(db, client, mocker):
197197
}
198198
assert response.status_code == 201
199199
assert expected_response == response_json
200-
mocked_call.assert_called_with(commitid=commit.commitid, repoid=repository.repoid)
200+
mocked_call.assert_not_called()
201201

202202

203203
@pytest.mark.parametrize("branch", ["main", "someone:main", "someone/fork:main"])

upload/views/commits.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
repo_auth_custom_exception_handler,
1414
)
1515
from core.models import Commit
16-
from services.task import TaskService
1716
from upload.helpers import generate_upload_sentry_metrics_tags
1817
from upload.serializers import CommitSerializer
1918
from upload.views.base import GetterMixin
@@ -63,14 +62,14 @@ def perform_create(self, serializer):
6362
),
6463
)
6564
repository = self.get_repo()
65+
6666
commit = serializer.save(repository=repository)
67+
6768
log.info(
6869
"Request to create new commit",
6970
extra=dict(repo=repository.name, commit=commit.commitid),
7071
)
71-
TaskService().update_commit(
72-
commitid=commit.commitid, repoid=commit.repository.repoid
73-
)
72+
7473
sentry_metrics.incr(
7574
"upload",
7675
tags=generate_upload_sentry_metrics_tags(
@@ -82,4 +81,5 @@ def perform_create(self, serializer):
8281
position="end",
8382
),
8483
)
84+
8585
return commit

0 commit comments

Comments
 (0)