From 1fd9b4637b04823035b375530aff1453fe68cb5e Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Fri, 28 May 2021 16:13:44 -0400 Subject: [PATCH] 2021-05-28 Fred Gleason * Added an '--force-system-maintenance' switch to rdservice(8). Signed-off-by: Fred Gleason --- ChangeLog | 2 ++ rdservice/maint_routines.cpp | 3 ++- rdservice/rdservice.cpp | 14 ++++++++------ rdservice/rdservice.h | 3 ++- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 82ab5da2..e0bd056d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21730,3 +21730,5 @@ * Added an '--initial-maintenance' switch to rdservice(8). 2021-05-28 Fred Gleason * Added an 'RDProcess::prettyCommandString()' method. +2021-05-28 Fred Gleason + * Added an '--force-system-maintenance' switch to rdservice(8). diff --git a/rdservice/maint_routines.cpp b/rdservice/maint_routines.cpp index fa4cbc74..7bc4e019 100644 --- a/rdservice/maint_routines.cpp +++ b/rdservice/maint_routines.cpp @@ -77,8 +77,9 @@ void MainObject::checkMaintData() // // Run the routines // - if(run) { + if(run||svc_force_system_maintenance) { RunSystemMaintRoutine(); + svc_force_system_maintenance=false; } } diff --git a/rdservice/rdservice.cpp b/rdservice/rdservice.cpp index 9365cbd6..eca82b71 100644 --- a/rdservice/rdservice.cpp +++ b/rdservice/rdservice.cpp @@ -61,6 +61,7 @@ MainObject::MainObject(QObject *parent) bool ok=false; svc_startup_target=MainObject::TargetAll; + svc_force_system_maintenance=false; // // Check for prior instance @@ -91,6 +92,10 @@ MainObject::MainObject(QObject *parent) svc_startup_target=target; rda->cmdSwitch()->setProcessed(i,true); } + if(rda->cmdSwitch()->key(i)=="--force-system-maintenance") { + svc_force_system_maintenance=true; + rda->cmdSwitch()->setProcessed(i,true); + } if(rda->cmdSwitch()->key(i)=="--initial-maintenance-interval") { initial_maintenance_interval=rda->cmdSwitch()->value(i).toInt(&ok); if(!ok) { @@ -158,20 +163,17 @@ void MainObject::processFinishedData(int id) RDProcess *proc=svc_processes.value(id); if(proc->process()->exitStatus()!=QProcess::NormalExit) { rda->syslog(LOG_WARNING,"process \"%s\" crashed!", - (proc->program()+" "+proc->arguments().join(" ").trimmed()). - toUtf8().constData()); + proc->prettyCommandString().toUtf8().constData()); } else { if(proc->process()->exitCode()!=0) { rda->syslog(LOG_WARNING,"process \"%s\" exited with exit code %d", - (proc->program()+" "+proc->arguments().join(" ").trimmed()). - toUtf8().constData(), + proc->prettyCommandString().toUtf8().constData(), proc->process()->exitCode()); } else { rda->syslog(LOG_DEBUG,"process \"%s\" exited normally", - (proc->program()+" "+proc->arguments().join(" ").trimmed()). - toUtf8().constData()); + proc->prettyCommandString().toUtf8().constData()); } } svc_processes.remove(id); diff --git a/rdservice/rdservice.h b/rdservice/rdservice.h index 03ffbf95..9aa2a018 100644 --- a/rdservice/rdservice.h +++ b/rdservice/rdservice.h @@ -2,7 +2,7 @@ // // Rivendell Services Manager // -// (C) Copyright 2018-2020 Fred Gleason +// (C) Copyright 2018-2021 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -71,6 +71,7 @@ class MainObject : public QObject QTimer *svc_maint_timer; QTimer *svc_exit_timer; StartupTarget svc_startup_target; + bool svc_force_system_maintenance; };