diff --git a/login_server/src/cpp/SingletonManager/PendingTasksManager.cpp b/login_server/src/cpp/SingletonManager/PendingTasksManager.cpp index 619c6382b..c5200b766 100644 --- a/login_server/src/cpp/SingletonManager/PendingTasksManager.cpp +++ b/login_server/src/cpp/SingletonManager/PendingTasksManager.cpp @@ -180,31 +180,43 @@ std::vector> PendingTasksManager::getTran void PendingTasksManager::checkForFinishedTasks(Poco::Timer& timer) { + static const char* function_name = "PendingTasksManager::checkForFinishedTasks"; Poco::ScopedLock _lock(mWorkMutex); + try { - for (auto map_it = mPendingTasks.begin(); map_it != mPendingTasks.end(); map_it++) - { - auto list = map_it->second; - for (auto list_it = list->begin(); list_it != list->end(); list_it++) + for (auto map_it = mPendingTasks.begin(); map_it != mPendingTasks.end(); map_it++) { - if ((*list_it)->getModel()->isGradidoTransaction()) { - auto transaction = dynamic_cast(list_it->get()); - auto json = transaction->getModel()->getResultJson(); - bool removeIt = false; - if (!json.isNull()) { - auto state = json->get("state"); - if (!state.isEmpty() && state.toString() == "success") { - removeIt = true; + auto list = map_it->second; + for (auto list_it = list->begin(); list_it != list->end(); list_it++) + { + if ((*list_it)->getModel()->isGradidoTransaction()) { + auto transaction = dynamic_cast(list_it->get()); + auto json = transaction->getModel()->getResultJson(); + bool removeIt = false; + if (!json.isNull()) { + auto state = json->get("state"); + if (!state.isEmpty() && state.toString() == "success") { + removeIt = true; + } + } + if (removeIt) { + transaction->deleteFromDB(); + list_it = list->erase(list_it); + if (!list->size() || list_it == list->end()) break; } - } - if (removeIt) { - transaction->deleteFromDB(); - list_it = list->erase(list_it); - if (!list->size()) break; } } } } + catch (Poco::Exception& ex) { + NotificationList errors; + errors.addError(new ParamError(function_name, "poco exception", ex.displayText())); + errors.sendErrorsAsEmail(); + } catch(std::exception& ex) { + NotificationList errors; + errors.addError(new ParamError(function_name, "std::exception", ex.what())); + errors.sendErrorsAsEmail(); + } } Poco::AutoPtr PendingTasksManager::getPendingTask(int pendingTaskId)