diff --git a/src/python/dm/common/objects/directoryUploadInfo.py b/src/python/dm/common/objects/directoryUploadInfo.py index d256a1366a8a2af5fb9f617aee6a4a5282eb7f02..c45145bc2b3a92fa246c4724bb28ea511893e269 100755 --- a/src/python/dm/common/objects/directoryUploadInfo.py +++ b/src/python/dm/common/objects/directoryUploadInfo.py @@ -10,7 +10,7 @@ from dm.common.utility.timeUtility import TimeUtility class DirectoryUploadInfo(DmObject): - DEFAULT_KEY_LIST = [ 'id', 'experimentName', 'dataDirectory', 'status', 'nFiles', 'startTime', 'endTime', 'runTime', 'startTimestamp', 'endTimestamp' ] + DEFAULT_KEY_LIST = [ 'id', 'experimentName', 'dataDirectory', 'status', 'nFiles', 'startTime', 'endTime', 'runTime', 'startTimestamp', 'endTimestamp', 'errorMessage' ] def __init__(self, dict={}): DmObject.__init__(self, dict) @@ -27,7 +27,7 @@ class DirectoryUploadInfo(DmObject): processingInfo = self.get('processingInfo') endTime = 0 - uploadStatus = 'done' + uploadStatus = dmProcessingStatus.DM_PROCESSING_STATUS_DONE for processorName in processingInfo.keys(): processingEndTime = processingInfo[processorName].get('processingEndTime') status = processingInfo[processorName].get('status') diff --git a/src/python/dm/daq_web_service/service/impl/experimentSessionControllerImpl.py b/src/python/dm/daq_web_service/service/impl/experimentSessionControllerImpl.py index 4c9d1db6432892a9e560e46ce84602e6b0ccbc68..9d32435f91b3dc88a69f7feabd1bbae9563caeaa 100755 --- a/src/python/dm/daq_web_service/service/impl/experimentSessionControllerImpl.py +++ b/src/python/dm/daq_web_service/service/impl/experimentSessionControllerImpl.py @@ -290,6 +290,19 @@ class ExperimentSessionControllerImpl(DmObjectManager): UploadTracker.getInstance().startUpload(uploadId, uploadInfo) uploadInfo['nFiles'] = 0 uploadInfo['status'] = dmProcessingStatus.DM_PROCESSING_STATUS_PENDING + + fileProcessingManager = FileProcessingManager.getInstance() + processingInfo = {} + uploadInfo['processingInfo'] = processingInfo + for processorKey in fileProcessingManager.fileProcessorKeyList: + processor = fileProcessingManager.fileProcessorDict.get(processorKey) + processorName = processor.name + if processorName in skipPlugins: + processingInfo[processorName] = {'status' : dmProcessingStatus.DM_PROCESSING_STATUS_SKIPPED} + else: + processingInfo[processorName] = {'status' : dmProcessingStatus.DM_PROCESSING_STATUS_PENDING} + + self.logger.debug('Starting upload directory %s timer for experiment %s' % (dataDirectory, experimentName)) timer = threading.Timer(self.UPLOAD_DELAY_IN_SECONDS, self.prepareUploadDirectory, args=[uploadInfo, daqInfo, experiment]) timer.start() @@ -314,18 +327,13 @@ class ExperimentSessionControllerImpl(DmObjectManager): return fileProcessingManager = FileProcessingManager.getInstance() - processingInfo = {} - uploadInfo['processingInfo'] = processingInfo self.logger.debug('Preparing plugin timers for directory %s upload (experiment %s)' % (dataDirectory, experimentName)) for processorKey in fileProcessingManager.fileProcessorKeyList: processor = fileProcessingManager.fileProcessorDict.get(processorKey) processorName = processor.name - if processorName in skipPlugins: - processingInfo[processorName] = {'status' : dmProcessingStatus.DM_PROCESSING_STATUS_SKIPPED} - else: + if not processorName in skipPlugins: self.logger.debug('Starting %s processing timer for directory %s upload' % (processorName, dataDirectory)) timer = threading.Timer(self.UPLOAD_DELAY_IN_SECONDS, self.processUploadDirectory, args=[processor, uploadInfo, daqInfo, experiment, filePathsDict]) - processingInfo[processorName] = {'status' : dmProcessingStatus.DM_PROCESSING_STATUS_PENDING} timer.start() uploadInfo['nFiles'] = len(filePathsDict) @@ -351,7 +359,10 @@ class ExperimentSessionControllerImpl(DmObjectManager): canProcess = True for depProcessorName in dependsOn: depProcessorStatus = processingInfo.get(depProcessorName).get('status') - if depProcessorStatus in ['skipped', 'aborted', 'failed']: + if depProcessorStatus in [ + dmProcessingStatus.DM_PROCESSING_STATUS_SKIPPED, + dmProcessingStatus.DM_PROCESSING_STATUS_ABORTED, + dmProcessingStatus.DM_PROCESSING_STATUS_FAILED]: # We must skip processing self.logger.debug('Skipping %s processing for upload %s due to %s status of %s' % (processorName, uploadId, depProcessorName, depProcessorStatus)) processingInfo[processorName]['status'] = dmProcessingStatus.DM_PROCESSING_STATUS_SKIPPED @@ -359,7 +370,7 @@ class ExperimentSessionControllerImpl(DmObjectManager): elif depProcessorStatus in [dmProcessingStatus.DM_PROCESSING_STATUS_PENDING, dmProcessingStatus.DM_PROCESSING_STATUS_RUNNING]: # Do nothing pass - elif depProcessorStatus == 'done': + elif depProcessorStatus == dmProcessingStatus.DM_PROCESSING_STATUS_DONE: # We can proceed canProcess = True else: