diff --git a/api/funkwhale_api/federation/serializers.py b/api/funkwhale_api/federation/serializers.py index fc694c598d49668799a2af4fd81588f216195898..304253aa0716e1d14669a3829395f986ad8f93da 100644 --- a/api/funkwhale_api/federation/serializers.py +++ b/api/funkwhale_api/federation/serializers.py @@ -796,6 +796,8 @@ class LibraryTrackActionSerializer(common_serializers.ActionSerializer): jobs.append(job) music_models.ImportJob.objects.bulk_create(jobs) - music_tasks.import_batch_run.delay(import_batch_id=batch.pk) + funkwhale_utils.on_commit( + music_tasks.import_batch_run.delay, import_batch_id=batch.pk + ) return {"batch": {"id": batch.pk}} diff --git a/api/tests/federation/test_views.py b/api/tests/federation/test_views.py index 3a67a9f2a5e781ffe38805ccb1475d4e8d52236b..4f1f471d85174a7f5fad7224c5471de6603b44e2 100644 --- a/api/tests/federation/test_views.py +++ b/api/tests/federation/test_views.py @@ -12,6 +12,7 @@ from funkwhale_api.federation import ( views, webfinger, ) +from funkwhale_api.music import tasks as music_tasks @pytest.mark.parametrize( @@ -398,7 +399,7 @@ def test_library_track_action_import(factories, superuser_api_client, mocker): lt2 = factories["federation.LibraryTrack"](library=lt1.library) lt3 = factories["federation.LibraryTrack"]() factories["federation.LibraryTrack"](library=lt3.library) - mocked_run = mocker.patch("funkwhale_api.music.tasks.import_batch_run.delay") + mocked_run = mocker.patch("funkwhale_api.common.utils.on_commit") payload = { "objects": "all", @@ -416,7 +417,9 @@ def test_library_track_action_import(factories, superuser_api_client, mocker): assert batch.jobs.count() == 2 for i, job in enumerate(batch.jobs.all()): assert job.library_track == imported_lts[i] - mocked_run.assert_called_once_with(import_batch_id=batch.pk) + mocked_run.assert_called_once_with( + music_tasks.import_batch_run.delay, import_batch_id=batch.pk + ) def test_local_actor_detail(factories, api_client): diff --git a/changes/changelog.d/397.bugfix b/changes/changelog.d/397.bugfix new file mode 100644 index 0000000000000000000000000000000000000000..6eca3267427f6e8061872a449278525b0b2ec4c1 --- /dev/null +++ b/changes/changelog.d/397.bugfix @@ -0,0 +1 @@ +Fixed broken federation import on big imports due to missing transaction logic (#397)