From 32577b5f92167b4cda62686b17dfcd8c43a4e0a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Demians?= Date: Mon, 24 Oct 2022 15:16:23 +0200 Subject: [PATCH] Bug 31629: Add jobsqueue options to cleanup_database This patch adds an jobsqueue option to cleanup_database.pl to allow for purging background jobs queue There is also a fix for --elasticqueue default value To test: 1. On a DB with a populated background_jobs table, identify in this table entries older than X days. 2. perl misc/cronjobs/cleanup_database.pl Note elasticqueue entry shows in help 3. perl misc/cronjobs/cleanup_database.pl --elasticqueue -v Note this message: Elastic queue (background jobs) purge triggered for 30 days 4. perl misc/cronjobs/cleanup_database.pl --jobsqueue -v Note this message: Background jobs queue purge triggered for 30 days. 5. perl misc/cronjobs/cleanup_database.pl --jobsqueue 1 -v Background jobs queue purge triggered for 1 day. 6. perl misc/cronjobs/cleanup_database.pl --jobsqueue 1 -v --confirm Note that number of entries deleted is reporte 7. In Koha > Admin > Background jobs, see the purge queue. --- misc/cronjobs/cleanup_database.pl | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/misc/cronjobs/cleanup_database.pl b/misc/cronjobs/cleanup_database.pl index b0990f156a..8488c6a105 100755 --- a/misc/cronjobs/cleanup_database.pl +++ b/misc/cronjobs/cleanup_database.pl @@ -21,6 +21,7 @@ use Modern::Perl; use constant DEFAULT_ZEBRAQ_PURGEDAYS => 30; use constant DEFAULT_ELASTICQ_PURGEDAYS => 30; +use constant DEFAULT_JOBS_PURGEDAYS => 30; use constant DEFAULT_MAIL_PURGEDAYS => 30; use constant DEFAULT_IMPORT_PURGEDAYS => 60; use constant DEFAULT_LOGS_PURGEDAYS => 180; @@ -121,6 +122,7 @@ my $sess_days; my $verbose; my $zebraqueue_days; my $elasticqueue_days; +my $jobsqueue_days; my $mail; my $purge_merged; my $pImport; @@ -164,6 +166,7 @@ GetOptions( 'm|mail:i' => \$mail, 'zebraqueue:i' => \$zebraqueue_days, 'elasticqueue:i' => \$elasticqueue_days, + 'jobsqueue:i' => \$jobsqueue_days, 'merged' => \$purge_merged, 'import:i' => \$pImport, 'z3950' => \$pZ3950, @@ -202,6 +205,8 @@ $sessions = 1 if $sess_days $pImport = DEFAULT_IMPORT_PURGEDAYS if defined($pImport) && $pImport == 0; $pLogs = DEFAULT_LOGS_PURGEDAYS if defined($pLogs) && $pLogs == 0; $zebraqueue_days = DEFAULT_ZEBRAQ_PURGEDAYS if defined($zebraqueue_days) && $zebraqueue_days == 0; +$elasticqueue_days = DEFAULT_ELASTICQ_PURGEDAYS if defined($elasticqueue_days) && $elasticqueue_days == 0; +$jobsqueue_days = DEFAULT_JOBS_PURGEDAYS if defined($jobsqueue_days) && $jobsqueue_days == 0; $mail = DEFAULT_MAIL_PURGEDAYS if defined($mail) && $mail == 0; $pSearchhistory = DEFAULT_SEARCHHISTORY_PURGEDAYS if defined($pSearchhistory) && $pSearchhistory == 0; $pListShareInvites = DEFAULT_SHARE_INVITATION_EXPIRY_DAYS if defined($pListShareInvites) && $pListShareInvites == 0; @@ -215,6 +220,7 @@ if ($help) { unless ( $sessions || $zebraqueue_days || $elasticqueue_days + || $jobsqueue_days || $mail || $purge_merged || $pImport @@ -329,6 +335,25 @@ if ($elasticqueue_days) { } } +if ($jobsqueue_days) { + my $count = 0; + print "Background jobs queue purge triggered for $jobsqueue_days days.\n" if $verbose; + $sth = $dbh->prepare( + q{ + DELETE FROM background_jobs + WHERE status='finished' AND ended_on < date_sub(curdate(), INTERVAL ? DAY) + } + ); + if ( $confirm ) { + $sth->execute($jobsqueue_days) or die $dbh->errstr; + $count = $sth->rows; + } + if ( $verbose ) { + say $confirm ? "$count jobs were deleted from the background jobs queue." : "All entries from backgorund jobs queue would have been deleted"; + say "Done with background jobs queue purge."; + } +} + if ($mail) { my $count = 0; print "Mail queue purge triggered for $mail days.\n" if $verbose; -- 2.34.1