diff --git a/arkindex/process/api.py b/arkindex/process/api.py
index 33c7bfb96df8ac446625e6a5f25616f0ed897b54..fbac429efb80c9c2bd2e2547a838520b864d80cf 100644
--- a/arkindex/process/api.py
+++ b/arkindex/process/api.py
@@ -2167,7 +2167,17 @@ class SelectProcessFailures(ProcessACLMixin, CreateAPIView):
             .annotate(has_non_final_tasks=Exists(
                 Task
                 .objects
-                .filter(process=OuterRef("pk"))
+                .filter(
+                    process=OuterRef("pk"),
+                    # Only look for tasks in the last run of the process
+                    run=(
+                        Task.objects
+                        .filter(process=OuterRef(OuterRef("pk")))
+                        .values("process")
+                        .annotate(last_run=Max("run"))
+                        .values("last_run")[:1]
+                    )
+                )
                 .exclude(state__in=FINAL_STATES)
             ))
         )
diff --git a/arkindex/process/tests/test_processes.py b/arkindex/process/tests/test_processes.py
index fa0537f20cef227c65ea7582355e2901dea96534..45b685cb64ff430dc3eb4b114c2de07ffe9da6e2 100644
--- a/arkindex/process/tests/test_processes.py
+++ b/arkindex/process/tests/test_processes.py
@@ -11,7 +11,7 @@ from rest_framework import status
 from rq.job import Job
 
 from arkindex.documents.models import Corpus, ElementType
-from arkindex.ponos.models import Farm, State
+from arkindex.ponos.models import ACTIVE_STATES, Farm, State
 from arkindex.process.models import (
     ActivityState,
     ArkindexFeature,
@@ -2991,19 +2991,13 @@ class TestProcesses(FixtureAPITestCase):
         )
 
     def test_select_failed_elts_requires_finished_state(self):
-        unfinished_states = {
-            State.Running,
-            State.Stopping,
-            State.Pending,
-            State.Unscheduled,
-        }
         self.elts_process.run()
         self.assertEqual(self.elts_process.tasks.get().run, 0)
         self.elts_process.activity_state = ActivityState.Ready
         self.elts_process.save()
         self.client.force_login(self.user)
 
-        for state in unfinished_states:
+        for state in ACTIVE_STATES:
             with self.subTest(state=state):
                 self.elts_process.tasks.update(state=state)
                 self.assertEqual(self.elts_process.state, state)
@@ -3045,9 +3039,15 @@ class TestProcesses(FixtureAPITestCase):
         )
 
     def test_select_failed_elts(self):
+        # Failures in a previous run should not prevent calling this endpoint
         self.elts_process.run()
-        self.assertEqual(self.elts_process.tasks.get().run, 0)
-        self.elts_process.tasks.update(state=State.Completed)
+        self.elts_process.tasks.update(state=State.Error)
+        # Reload the prefetched worker runs because a new init_elements run was created
+        # and running again would try to recreate it
+        self.elts_process.refresh_from_db()
+        self.elts_process.run()
+        self.elts_process.tasks.filter(run=1).update(state=State.Completed)
+
         self.elts_process.activity_state = ActivityState.Ready
         self.elts_process.save()