ad timer to update tool 60min max / 30min per Step
This commit is contained in:
@@ -284,7 +284,38 @@ bool Worker::repairCorruptedRepository() {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Worker::updateTimedOut() const
|
||||
{
|
||||
if (!m_updateRuntime.isValid())
|
||||
return false;
|
||||
|
||||
if (m_updateRuntime.elapsed() < UPDATE_MAX_RUNTIME_MS)
|
||||
return false;
|
||||
|
||||
qCritical() << "UPDATE TOOL GLOBAL TIMEOUT:"
|
||||
<< m_updateRuntime.elapsed()
|
||||
<< "ms";
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Worker::privateUpdate() {
|
||||
m_updateRuntime.start();
|
||||
|
||||
auto abortIfTimedOut = [this]() -> bool {
|
||||
if (!updateTimedOut())
|
||||
return false;
|
||||
|
||||
qCritical() << "UPDATE TOOL GLOBAL TIMEOUT - aborting update";
|
||||
|
||||
// Ideally use a dedicated timeout step later.
|
||||
m_lastFailedUpdateStep = UPDATE_STEP::UPDATE_FINALIZE;
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
if (!m_mainWindow) {
|
||||
Utils::printCriticalErrorMsg("m_mainWindow NOT SET");
|
||||
return;
|
||||
@@ -351,6 +382,9 @@ void Worker::privateUpdate() {
|
||||
// update procedure, even if ISMAS-trigger is not correctly set ("WAIT")
|
||||
}
|
||||
|
||||
if (abortIfTimedOut())
|
||||
return;
|
||||
|
||||
emit this->disableExit();
|
||||
|
||||
QDir customerRepository(m_customerRepository);
|
||||
@@ -434,6 +468,9 @@ void Worker::privateUpdate() {
|
||||
CONSOLE() << UPDATE_STEP::CHECK_REPOSITORY_SUCCESS;
|
||||
setProgress(_CHECKOUT_REPOSITORY_SUCCESS);
|
||||
|
||||
if (abortIfTimedOut())
|
||||
return;
|
||||
|
||||
if (m_clone == false) {
|
||||
if (m_ismasTriggerActive == false) {
|
||||
return;
|
||||
@@ -462,6 +499,9 @@ void Worker::privateUpdate() {
|
||||
// CHECK-OUT BRANCH
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
if (abortIfTimedOut())
|
||||
return;
|
||||
|
||||
if ((continueUpdate = customerEnvironment()) == false) {
|
||||
// even if something goes wrong creating the environment, try to execute
|
||||
// opkg_commands
|
||||
@@ -484,6 +524,8 @@ void Worker::privateUpdate() {
|
||||
// COMPUTE CHANGED FILES OF CUSTOMER REPOSITORY
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
if (abortIfTimedOut())
|
||||
return;
|
||||
if ((continueUpdate = filesToUpdate()) == false) {
|
||||
// even if something goes wrong in filesToUpdate, try to execute
|
||||
// opkg_commands
|
||||
@@ -505,6 +547,9 @@ void Worker::privateUpdate() {
|
||||
// (R)SYNC THE REPOSITORY WITH THE LOCAL FILEYSTEM
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
if (abortIfTimedOut())
|
||||
return;
|
||||
|
||||
if ((continueUpdate = syncCustomerRepositoryAndFS()) == false) {
|
||||
// even if something goes wrong with rsync, try to execute
|
||||
// opkg_commands
|
||||
@@ -526,6 +571,9 @@ void Worker::privateUpdate() {
|
||||
// EXECUTE OPKG COMMANDS
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
if (abortIfTimedOut())
|
||||
return;
|
||||
|
||||
if ((continueUpdate = execOpkgCommands()) == false) {
|
||||
return;
|
||||
}
|
||||
@@ -533,6 +581,9 @@ void Worker::privateUpdate() {
|
||||
GUI(lst) << (CONSOLE(lst) << UPDATE_STEP::EXEC_OPKG_COMMANDS);
|
||||
setProgress(_EXEC_OPKG_COMMAND_SUCCESS);
|
||||
|
||||
if (abortIfTimedOut())
|
||||
return;
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -1295,18 +1346,28 @@ qint64 Worker::getFileSize(QString const &fileName) const {
|
||||
return fInfo.exists() ? fInfo.size() : -1;
|
||||
}
|
||||
|
||||
static constexpr int OPKG_START_TIMEOUT_MS = 30 * 1000;
|
||||
static constexpr int OPKG_FINISH_TIMEOUT_MS = 30 * 60 * 1000;
|
||||
|
||||
bool Worker::executeOpkgCommand(QString opkgCommand) {
|
||||
Command c(opkgCommand);
|
||||
Command c(opkgCommand,
|
||||
OPKG_START_TIMEOUT_MS,
|
||||
OPKG_FINISH_TIMEOUT_MS);
|
||||
|
||||
if (c.execute(m_workingDirectory)) {
|
||||
QString const r = c.getCommandResult();
|
||||
Utils::printInfoMsg(QString("EXECUTE OPKG COMMAND %1 OK: %2")
|
||||
.arg(opkgCommand)
|
||||
.arg(c.getCommandResult()));
|
||||
Utils::printInfoMsg(
|
||||
QString("EXECUTE OPKG COMMAND %1 OK: %2")
|
||||
.arg(opkgCommand)
|
||||
.arg(c.getCommandResult()));
|
||||
|
||||
return true;
|
||||
} else {
|
||||
Utils::printCriticalErrorMsg(QString("EXECUTE OPKG COMMAND %1 FAILED")
|
||||
.arg(opkgCommand));
|
||||
}
|
||||
|
||||
Utils::printCriticalErrorMsg(
|
||||
QString("EXECUTE OPKG COMMAND %1 FAILED/TIMED OUT: %2")
|
||||
.arg(opkgCommand)
|
||||
.arg(c.getCommandResult()));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user