Merge jobs skipping ALL input files - exit code 60450
As reported by @prozober in this Jira: https://its.cern.ch/jira/browse/CMSCOMPPR-328

merge jobs are failing quite often in T2_AT_Vienna with exit code 60450, which basically means there was no output files in the report file (besides logArch). Taking a look at the condor logs, not all of them have errors, so these jobs should succeed. However, you can see there were no files merged and no merged file stage out (only the logArch).

I managed to find the following log in vocms0130
install/wmagent/JobArchiver/logDir/p/pdmvserv_EXO-RunIISummer15wmLHEGS-01970_00249_v0__161123_003233_2902/JobCluster_4127/Job_4127624.tar.bz2

which was not copied over here:
http://amaltaro.web.cern.ch/amaltaro/forWMCore/Issue_7467/

I also unpickled the job config (job.pkl) and one of the reports (Report.3.pkl).

Looking at the job configuration, we can see the list of `input_files`, though I don't know if the structure/values are correct (especially the `'merged': True,`).

Then looking at the report file, we can see that all the unmerged files were skipped ?!?
diff --git a/src/python/WMCore/FwkJobReport/Report.py b/src/python/WMCore/FwkJobReport/Report.py
index d37e9ff43..72a0986e3 100644
--- a/src/python/WMCore/FwkJobReport/Report.py
+++ b/src/python/WMCore/FwkJobReport/Report.py
@@ -98,12 +98,12 @@ def addAttributesToFile(fileSection, **attributes):
 
     Add attributes to a file in the FWJR.
     """
-    for attName in attributes.keys():
-        setattr(fileSection, attName, attributes[attName])
+    for attName, attValue in attributes.items():
+        setattr(fileSection, attName, attValue)
     return
 
 
-class Report:
+class Report(object):
     """
     The base class for the new jobReport
 
@@ -531,7 +531,8 @@ class Report:
         newFile = getattr(analysisFiles, label)
         newFile.fileName = filename
 
-        [setattr(newFile, x, y) for x, y in attrs.items()]
+        for x, y in attrs.items():
+            setattr(newFile, x, y)
 
         analysisFiles.fileCount += 1
         return
@@ -549,7 +550,8 @@ class Report:
         removedFiles.section_(label)
         newFile = getattr(removedFiles, label)
 
-        [setattr(newFile, x, y) for x, y in attrs.items()]
+        for x, y in attrs.items():
+            setattr(newFile, x, y)
 
         self.report.cleanup.removed.fileCount += 1
         return
@@ -1503,6 +1505,9 @@ class Report:
         analysisFiles = self.getAnalysisFilesFromStep(step=stepName)
         if len(files) == 0 and len(analysisFiles) == 0:
             msg = WM_JOB_ERROR_CODES[60450]
+            msg += "\\nList of skipped files is:\\n"
+            for skipF in self.getSkippedFilesFromStep(stepName=stepName):
+                msg += "  %s\\n" % skipF
             self.addError(stepName, 60450, "NoOutput", msg)
             self.setStepStatus(stepName=stepName, status=60450)
         return
['src/python/WMCore/FwkJobReport/Report.py']