From d67ce0e340e1931f1546761d364be4753bcc406d Mon Sep 17 00:00:00 2001
From: Sinisa Veseli <sveseli@aps.anl.gov>
Date: Mon, 17 Oct 2016 16:05:02 +0000
Subject: [PATCH] fix upload status issue

---
 src/python/dm/common/constants/dmProcessingStatus.py          | 1 +
 src/python/dm/common/objects/daqInfo.py                       | 2 +-
 src/python/dm/common/objects/uploadInfo.py                    | 4 ++--
 .../dm/common/processing/plugins/mongoDbFileCatalogPlugin.py  | 3 ++-
 src/python/dm/daq_web_service/service/impl/uploadTracker.py   | 2 +-
 5 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/python/dm/common/constants/dmProcessingStatus.py b/src/python/dm/common/constants/dmProcessingStatus.py
index 3cc28257..e84703ef 100755
--- a/src/python/dm/common/constants/dmProcessingStatus.py
+++ b/src/python/dm/common/constants/dmProcessingStatus.py
@@ -34,5 +34,6 @@ DM_INACTIVE_PROCESSING_STATUS_LIST = [
 DM_ACTIVE_PROCESSING_STATUS_LIST = [
     DM_PROCESSING_STATUS_PENDING,
     DM_PROCESSING_STATUS_RUNNING,
+    DM_PROCESSING_STATUS_FINALIZING,
     DM_PROCESSING_STATUS_ABORTING
 ]
diff --git a/src/python/dm/common/objects/daqInfo.py b/src/python/dm/common/objects/daqInfo.py
index 468f4ea7..b45d6cc5 100755
--- a/src/python/dm/common/objects/daqInfo.py
+++ b/src/python/dm/common/objects/daqInfo.py
@@ -78,7 +78,7 @@ class DaqInfo(DmObject):
 
         if self.get('endTime'):
             daqStatus = dmProcessingStatus.DM_PROCESSING_STATUS_FINALIZING
-            if nCompletedFiles == nFiles:
+            if nCompletedFiles >= nFiles:
                 daqStatus = dmProcessingStatus.DM_PROCESSING_STATUS_DONE
                 if nProcessingErrors:
                     daqStatus = dmProcessingStatus.DM_PROCESSING_STATUS_FAILED
diff --git a/src/python/dm/common/objects/uploadInfo.py b/src/python/dm/common/objects/uploadInfo.py
index a119b0ae..5fd41280 100755
--- a/src/python/dm/common/objects/uploadInfo.py
+++ b/src/python/dm/common/objects/uploadInfo.py
@@ -73,7 +73,7 @@ class UploadInfo(DmObject):
         startTime = self.get('startTime', now)
         runTime = now - startTime
         endTime = None
-        if nCompletedFiles == nFiles:
+        if nCompletedFiles == nFiles and uploadStatus != dmProcessingStatus.DM_PROCESSING_STATUS_PENDING:
             uploadStatus = 'done'
             if nProcessingErrors:
                 uploadStatus = 'failed'
@@ -84,7 +84,7 @@ class UploadInfo(DmObject):
                 endTime = lastFileProcessingErrorTime
 
         if nCancelledFiles > 0 and nCancelledFiles+nCompletedFiles == nFiles:
-            uploadStatus = 'aborted'
+            uploadStatus = dmProcessingStatus.DM_PROCESSING_STATUS_ABORTED
             endTime = self.get('lastFileProcessingCancelledTime', now)
 
         if endTime:
diff --git a/src/python/dm/common/processing/plugins/mongoDbFileCatalogPlugin.py b/src/python/dm/common/processing/plugins/mongoDbFileCatalogPlugin.py
index f6b61069..4c79ea8c 100755
--- a/src/python/dm/common/processing/plugins/mongoDbFileCatalogPlugin.py
+++ b/src/python/dm/common/processing/plugins/mongoDbFileCatalogPlugin.py
@@ -2,6 +2,7 @@
 
 import os
 import time
+from dm.common.constants import dmProcessingStatus
 from dm.common.utility.loggingManager import LoggingManager
 from dm.common.objects.observedFile import ObservedFile
 from dm.common.utility.timeUtility import TimeUtility
@@ -123,7 +124,7 @@ class MongoDbFileCatalogPlugin(FileProcessor):
             fileInfo['daqInfo'] = daqInfo
             fileInfo['uploadId'] = uploadId
 
-            if uploadInfo.get('status') != 'aborting':
+            if uploadInfo.get('status') != dmProcessingStatus.DM_PROCESSING_STATUS_ABORTING:
                 self.processFile(fileInfo)
                 nProcessedFiles += 1
             else:
diff --git a/src/python/dm/daq_web_service/service/impl/uploadTracker.py b/src/python/dm/daq_web_service/service/impl/uploadTracker.py
index 89e57447..7634ed34 100755
--- a/src/python/dm/daq_web_service/service/impl/uploadTracker.py
+++ b/src/python/dm/daq_web_service/service/impl/uploadTracker.py
@@ -25,7 +25,7 @@ class UploadTracker(ObjectTracker):
             uploadInfo = self.get(uploadId)
             if uploadInfo is not None:
                 uploadInfo.updateStatus()
-                if uploadInfo.get('status') == dmProcessingStatus.DM_PROCESSING_STATUS_RUNNING:
+                if uploadInfo.get('status') in dmProcessingStatus.DM_ACTIVE_PROCESSING_STATUS_LIST:
                     raise ObjectAlreadyExists('Upload id %s is already active for experiment %s in data directory %s.' % (uploadId, experimentName, dataDir))
                 del self.activeUploadDict[activeUploadKey]
 
-- 
GitLab