From 83f9535fabc37be46ab8154d940a7ff614617eb2 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Thu, 11 Aug 2022 15:43:15 -0400 Subject: [PATCH] Bug 31345: Add ability to exit process_message_queue.pl early if any plugin before_send_messages hook fails Sometimes it would be better for process_message_queue.pl to stop if a plugin hook fails rather than continue processing. It would be nice if that was a command line option. Test Plan: 1) Install any plugin with a before_send_messages hook 2) Modify the plugin, add a 'die;' statement at the start of the before_send_messages method of the plugin. 3) Run process_message_queue.pl as usual 4) Note the exit code is 0 5) Run it again with the new -e setting 6) Note the exit code is 1 Signed-off-by: Brendan Lawlor Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Katrin Fischer --- misc/cronjobs/process_message_queue.pl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/misc/cronjobs/process_message_queue.pl b/misc/cronjobs/process_message_queue.pl index 316e5bae1a..0662b4f636 100755 --- a/misc/cronjobs/process_message_queue.pl +++ b/misc/cronjobs/process_message_queue.pl @@ -35,6 +35,7 @@ my $verbose = 0; my $where; my @type; my @letter_code; +my $exit_on_plugin_failure = 0; my $command_line_options = join(" ",@ARGV); @@ -48,6 +49,7 @@ GetOptions( 't|type:s' => \@type, 'c|code:s' => \@letter_code, 'w|where:s' => \$where, + 'e|exit-on-plugin-failure' => \$exit_on_plugin_failure, ); my $usage = << 'ENDUSAGE'; @@ -67,6 +69,7 @@ This script has the following parameters : -h --help: this message -v --verbose: provides verbose output to STDOUT -w --where: filter messages to send with additional conditions in the where clause + -e --exit-on-plugin-failure: if enabled, script will exit prematurely if any plugin before_send_messages hook fails ENDUSAGE die $usage if $help; @@ -106,6 +109,7 @@ if ( C4::Context->config("enable_plugins") ) { } catch { warn "$_"; + exit 1 if $exit_on_plugin_failure; }; } } -- 2.20.1