добивание живых задач, отключение лишней рассылки админам, настройка удаления или не удаления пакета на машине
This commit is contained in:
2025-03-14 13:48:30 +03:00
parent 9f4eb9d88e
commit a2017f9e01
17 changed files with 95 additions and 32 deletions

View File

@@ -236,7 +236,11 @@ public:
// прошло больше 10 секунд, проверяем нужно ли завершиться
if (Utils::getAbsoluteTime() - timer_killed > 10) {
if (checkKilled()) {
ToLog("killed");
ToLog("killing active tasks...");
ToLog("activeTasks="+ String((int)activeTasks)+";busyKernels="+String((int)busyKernels));
killActiveTasks(activeTaskSet);
ToLog("done");
ToLog("waiting for active tasks...");
while (busyKernels) {
ToLog("activeTasks="+ String((int)activeTasks)+";busyKernels="+String((int)busyKernels));
checkTasksFinish(activeTaskSet, toDel, activeTasks, done, busyKernels, buf);
@@ -246,7 +250,7 @@ public:
toDel.clear();
Utils::Sleep(5);
}
ToLog("exit for main while");
ToLog("exit of main while");
killed = true;
break;
}
@@ -262,7 +266,7 @@ public:
File tmp(outFile, String(buf.c_str()));
}
else {
//всегда финальное состояние.
//всегда финальное состояние. даже если это компиляция.
saveState("RunningEnd");
ToLog("quit application");
std::exit(0);
@@ -289,6 +293,11 @@ public:
bool checkKilled() const {
return Utils::Exists("kill");
}
void killActiveTasks(const set<T*>& activeTaskSet) {
for (auto& task : activeTaskSet){
task->kill();
}
}
void checkTasksFinish(const set<T*>& activeTaskSet, vector<T*>& toDel, size_t& activeTasks,
size_t& done, int& busyKernels, string& buf) {
// проверяем нет ли завершившихся задач
@@ -299,10 +308,7 @@ public:
activeTasks--;
done += task->getKernels();
busyKernels -= task->getKernels();
printf(" done task with %d kernels and id %ld\n", task->getKernels(), task->getId());
buf += to_string(task->getId()) + " " + string(task->printState().getCharArray()) + " " + to_string(task->getTotalTime()) + "\n";
//copy after end of while
//task->copyResults(pathRes);
}
}
}