From 6ab7c3dc015374de40416544f8cd9931732f2f1f Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Mon, 7 Aug 2017 11:52:06 -0400 Subject: [PATCH] Adjust the logic of the dispatcher processes a bit: For the incremental process notifications, only include the latest output from the process, not the full thing up to that point. Some processes (life preserver, pc-updatemanager) run for a long time and eventually get massive log files. --- src/server/Dispatcher.cpp | 10 ++++++++-- src/server/Dispatcher.h | 2 +- src/server/library/sysadm-systemmanager.cpp | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/server/Dispatcher.cpp b/src/server/Dispatcher.cpp index 50a4b7d..38c92cd 100644 --- a/src/server/Dispatcher.cpp +++ b/src/server/Dispatcher.cpp @@ -105,12 +105,18 @@ void DProcess::cmdFinished(int ret, QProcess::ExitStatus status){ } void DProcess::updateLog(){ - proclog.insert(cCmd, proclog.value(cCmd).toString().append(this->readAllStandardOutput()) ); + QString tmp = this->readAllStandardOutput(); + lognew.append(tmp); + proclog.insert(cCmd, proclog.value(cCmd).toString().append(tmp) ); if(!uptimer->isActive()){ uptimer->start(); } } void DProcess::emitUpdate(){ - emit ProcUpdate(ID, proclog); + QJsonObject tmp = proclog; + //only emit the latest changes to the log - not the full thing + tmp.insert(cCmd, lognew ); + emit ProcUpdate(ID, tmp); + lognew.clear(); } // ================================ diff --git a/src/server/Dispatcher.h b/src/server/Dispatcher.h index d24b3bc..6f1fe55 100644 --- a/src/server/Dispatcher.h +++ b/src/server/Dispatcher.h @@ -35,7 +35,7 @@ public slots: void startProc(); private: - QString cCmd; + QString cCmd, lognew; QJsonObject proclog; QTimer *uptimer; diff --git a/src/server/library/sysadm-systemmanager.cpp b/src/server/library/sysadm-systemmanager.cpp index 1395797..6d64156 100644 --- a/src/server/library/sysadm-systemmanager.cpp +++ b/src/server/library/sysadm-systemmanager.cpp @@ -423,7 +423,7 @@ void SysMgmt::fetchPortsTree(QStringList &cmds, QStringList &dirs){ cmds.clear(); dirs.clear(); //Does Ports tree exist? If not create it. if(!QFile::exists("/usr/ports")){ - cmds << "mkdir /usr/ports"; dirs << ""; + cmds << "mkdir /usr/ports"; dirs << ""; } //Does a local git repo exist? If not create it. QString URL = "https://www.github.com/trueos/freebsd-ports.git"; @@ -442,7 +442,7 @@ void SysMgmt::fetchPortsTree(QStringList &cmds, QStringList &dirs){ } //Now update the tree with git cmds << "git fetch --depth=1"; dirs << "/usr/ports/.git"; - cmds << "git checkout master"; dirs << "/usr/ports"; + cmds << "git checkout master"; dirs << "/usr/ports"; } void SysMgmt::fetchSourceTree(QString branch, QStringList &cmds, QStringList &dirs, QStringList &info){