cancelled job_state + failed file_state multi-source transfers never handled by poller
the issue is, again, in this state transition : 
https://github.com/rucio/rucio/blob/2b23466beec4372ae6ae25b1e3e2a69501788a27/lib/rucio/transfertool/fts3.py#L596

There were so many bugs already with it that I'm afraid to touch anything here :cry: 
diff --git a/lib/rucio/transfertool/fts3.py b/lib/rucio/transfertool/fts3.py
index 4ef6e86bd..7b36c2fd9 100644
--- a/lib/rucio/transfertool/fts3.py
+++ b/lib/rucio/transfertool/fts3.py
@@ -593,7 +593,7 @@ class FTS3ApiTransferStatusReport(Fts3TransferStatusReport):
         if file_state_is_final:
             if file_state == FTS_STATE.FINISHED:
                 new_state = RequestState.DONE
-            elif file_state == FTS_STATE.FAILED and job_state == FTS_STATE.FAILED or \\
+            elif file_state == FTS_STATE.FAILED and job_state_is_final or \\
                     file_state == FTS_STATE.FAILED and not self._multi_sources:  # for multi-source transfers we must wait for the job to be in a final state
                 if self._is_recoverable_fts_overwrite_error(self.request(session), reason, self._file_metadata):
                     new_state = RequestState.DONE
['lib/rucio/transfertool/fts3.py']