Bug 31995: build_holds_queue.pl should check to see if the RealTimeHoldsQueue syspref is on [v22.05]

The real time hold queue and the build_holds_queue.pl jobs are not 100% compatible in that we should not be running the cron if the real time queue is enabled, this could lead to double server work. It would be good to have a check in build_holds_queue for the RealTimeHoldsQueue syspref and not run the job if the preference is enabled.

There might be times when we'd want to force a run of this job without changing the syspref. To that end we would also want a flag for this job so that system administrators could force the job from the command line if required, overriding this limitation.

Test Plan:
1) Apply this patch
2) Try run misc/cronjobs/holds/build_holds_queue.pl with the -h/--help and -m/--man options
3) Disable RealTimeHoldsQueue
4) Run with no options, should succeed
5) Enable RealTimeHoldsQueue
6) Run with no options, should display a message and not rebuild the
   holds queue
7) Run again with the -f/--force option, should succeed

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Bug 31995: (QA follow-up) Add 'system preference' to help text

We often get asked where something can be found in setting,
adding the hint that RealTimeHoldsQueue is a system preference
is hopefully helpful here.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Kyle Hall 2022-10-27 13:44:59 -04:00 committed by Lucas Gass
parent 8149c3d8a3
commit cb936bd2e4
1 changed files with 65 additions and 4 deletions

View File

@ -6,14 +6,75 @@
# FIXME: add command-line options for verbosity and summary
# FIXME: expand perldoc, explain intended logic
use strict;
use warnings;
use Modern::Perl;
use Koha::Script -cron;
use Getopt::Long qw( GetOptions );
use Pod::Usage qw( pod2usage );
use C4::Context;
use C4::HoldsQueue qw(CreateQueue);
use C4::Log qw( cronlogaction );
use Koha::Script -cron;
=head1 NAME
build_holds_queue.pl - Rebuild the holds queue
=head1 SYNOPSIS
build_holds_queue.pl [-f]
Options:
-h --help Brief help message
-m --man Full documentation
-f --force Run holds queue builder even if RealTimeHoldsQueue is enabled
=head1 OPTIONS
=over 8
=item B<--help>
Print a brief help message and exits.
=item B<--man>
Prints the manual page and exits.
=item B<--force>
Allows this script to rebuild the entire holds queue even if the RealTimeHoldsQueue system preference is enabled.
=back
=head1 DESCRIPTION
This script builds or rebuilds the entire holds queue.
=cut
my $help = 0;
my $man = 0;
my $force = 0;
my $command_line_options = join( " ", @ARGV );
GetOptions(
'h|help' => \$help,
'm|man' => \$man,
'f|force' => \$force,
);
pod2usage(1) if $help;
pod2usage( -exitval => 0, -verbose => 2 ) if $man;
my $rthq = C4::Context->preference('RealTimeHoldsQueue');
if ( $rthq && !$force ) {
say "RealTimeHoldsQueue system preference is enabled, holds queue not built.";
say "Use --force to force building the holds queue.";
exit(1);
}
cronlogaction();
CreateQueue();