diff --git a/src/python/dm/common/objects/uploadInfo.py b/src/python/dm/common/objects/uploadInfo.py
index 236d1a15079ff28ac16ac411c969ccca616ffeac..c05337f6c833273bb03b4e22608d006941793514 100755
--- a/src/python/dm/common/objects/uploadInfo.py
+++ b/src/python/dm/common/objects/uploadInfo.py
@@ -9,7 +9,7 @@ from dm.common.utility.timeUtility import TimeUtility
 
 class UploadInfo(DmObject):
 
-    DEFAULT_KEY_LIST = [ 'id', 'experimentName', 'dataDirectory', 'status', 'nProcessedFiles', 'nProcessingErrors', 'nFiles', 'percentageComplete', 'startTime', 'endTime', 'runTime', 'startTimestamp', 'endTimestamp' ]
+    DEFAULT_KEY_LIST = [ 'id', 'experimentName', 'dataDirectory', 'status', 'nProcessedFiles', 'nProcessingErrors', 'nCancelledFiles', 'nFiles', 'percentageComplete', 'percentageProcessed', 'percentageProcessingErrors', 'percentageCancelled', 'startTime', 'endTime', 'runTime', 'startTimestamp', 'endTimestamp' ]
 
     def __init__(self, dict={}):
         DmObject.__init__(self, dict)
diff --git a/src/python/dm/common/processing/fileProcessingThread.py b/src/python/dm/common/processing/fileProcessingThread.py
index bc2e485f5e54cab256481ef245d4a252214f7431..25d227ea6c8261ee870c28f82971e8be55454fc7 100755
--- a/src/python/dm/common/processing/fileProcessingThread.py
+++ b/src/python/dm/common/processing/fileProcessingThread.py
@@ -25,13 +25,16 @@ class FileProcessingThread(threading.Thread):
             return 
 
         filePath = fileInfo.get('filePath')
+        if not filePath:
+            self.logger.warn('Refusing to process empty file path')
+            return
+
         try:
             statusMonitor = fileInfo.get('statusMonitor')
             if statusMonitor and statusMonitor.get('status') == 'aborting':
                 self.logger.debug('File %s processing is cancelled' % (filePath))
                 endProcessingTime = time.time() 
                 statusMonitor.fileProcessingCancelled(filePath, endProcessingTime) 
-                fileInfo.clear()
                 return 
             self.logger.debug('Starting processing file %s' % filePath)
             fileInfo['startProcessingTime'] = time.time() 
@@ -58,7 +61,6 @@ class FileProcessingThread(threading.Thread):
                         endProcessingTime = time.time() 
                         if statusMonitor:
                             statusMonitor.fileProcessed(filePath, endProcessingTime) 
-                        fileInfo.clear()
                 except Exception, ex:
                     self.logger.exception(ex)
                     processingError = '%s processing error: %s' % (processorName, str(ex))
@@ -76,7 +78,6 @@ class FileProcessingThread(threading.Thread):
                         endProcessingTime = time.time() 
                         if statusMonitor:
                             statusMonitor.fileProcessingError(filePath, processingError, endProcessingTime) 
-                        fileInfo.clear()
                         self.logger.debug('No more %s retries left for file %s' % (processorName, filePath))
                     else:
                         retryWaitPeriod = processor.getRetryWaitPeriodInSeconds()