hce-node application  1.4.3
HCE Hierarchical Cluster Engine node application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
DRCETaskRequestDeleteDataExecutor.cpp
Go to the documentation of this file.
1 #include <Poco/Logger.h>
2 #include <Poco/File.h>
3 
4 #include "DRCEFileExtractor.hpp"
5 #include "DRCEFileStream.hpp"
8 
11 
12 namespace HCE
13 {
14 namespace drce
15 {
16 //-----------------------------------------------------------------------------
18  DRCENodeOptions& nodeOptions_, CustomMessage& message_, DRCEResourceMonitor& resourceMonitor_)
19 : inherited(asyncTaskQueue_, nodeOptions_, message_, resourceMonitor_)
20 {
21 }
22 //-----------------------------------------------------------------------------
24 {
25  DRCEResultDataItem resultDataItem = getResultDataItem(*pTaskRequest, DRCETaskRequest::TaskState::UNDEFINED);
26 
27  try
28  {
29  DRCETaskRequestDeleteData* pTaskRequestDeleteData = dynamic_cast<DRCETaskRequestDeleteData*>(pTaskRequest);
30  if (!pTaskRequestDeleteData)
32 
33  const std::string fileName = FileStream::getStatusFileName(nodeOptions.getTasksStatusDir(), pTaskRequestDeleteData->getTaskId());
34  try
35  {
36  if (asyncTaskQueue.isExistAsyncTask(pTaskRequestDeleteData->getTaskId()))
38 
39  Poco::File file(fileName);
40  if (file.exists())
41  {
42  DataFileExtractor dataFileExtractor(message);
43  DRCEResultDataItem resultItem = dataFileExtractor.extract(fileName);
44  resultDataItem.setState(static_cast<unsigned int>(resultItem.getState()));
45  }
46 
47  if (resultDataItem.getState() == DRCETaskRequest::TaskState::SET_AS_NEW ||
48  resultDataItem.getState() == DRCETaskRequest::TaskState::IN_PROGRESS||
49  resultDataItem.getState() == DRCETaskRequest::TaskState::QUEUED_TO_RUN)
51  }
52  catch(Poco::Exception& e)
53  {
54  Poco::Logger::root().log(Poco::Message(drce_const::moduleName,
55  "DRCETaskRequestDeleteData extract '"+fileName+"' return "+e.message(),
56  Poco::Message::Priority::PRIO_DEBUG));
57  if (e.code() != ERROR_UNSERIALIZE)
58  throw;
59  }
60 
62  DRCEInputJsonMessage inputMessage = DRCECommonTask::getRequestData(pTaskRequestDeleteData->getTaskId(), nodeOptions, message);
63  resultDataItem = DRCECommonTask::makeResultDataItem(inputMessage, nodeOptions, message, DRCETaskRequest::RequestType::rtDeleteTaskData, DRCETaskRequest::TaskState::DELETED);
64 
66  DRCECommonTask::getSubtasksList(inputMessage, subtasks);
67  for (DRCECommonTask::SubtasksList::reverse_iterator iter=subtasks.rbegin();iter!=subtasks.rend();++iter)
68  {
69  DRCECommonTask::cleanup((*iter).first, nodeOptions, message, true);
70  }
71 
72  }
73  catch(Poco::Exception& e)
74  {
75  resultDataItem.setErrorCode(e.code());
76  resultDataItem.setErrorMessage(e.message());
77  resultDataItem.setState(static_cast<unsigned int>(DRCETaskRequest::TaskState::CRASHED));
78  }
79  catch(std::exception& e)
80  {
81  resultDataItem.setErrorCode(ERROR_EXECUTE_TASK);
82  resultDataItem.setErrorMessage(e.what());
83  resultDataItem.setState(static_cast<unsigned int>(DRCETaskRequest::TaskState::CRASHED));
84  }
85  return resultDataItem;
86 }
87 //-----------------------------------------------------------------------------
88 //-----------------------------------------------------------------------------
89 } // end namespace drce
90 } // end namespace HCE