From f76155250df91f084ece815294765977698e205f Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Thu, 5 Oct 2023 09:56:30 +0000 Subject: [PATCH] Bug 34990: Add persistent header when sending msg to RabbitMQ Test plan: NOTE: It is very hard to add a Koha unit test for adding this single header when communicating to RabbitMQ via Stomp plugin. When we would mock the send, we are only testing if perl can pass a hashref to a subroutine ;) Do NOT yet apply this patch. Make sure that RabbitMQ runs. Stop the koha-worker for long_tasks: koha-worker --stop --queue long_tasks myclone Stage a MARC file. Check queues with rabbitmqctl list_queues. Look for: koha_myclone-long_tasks 1 (at least 1) Stop rabbitmq (something like /etc/init.d/rabbitmq-server stop) Start rabbitmq (/etc/init.d/rabbitmq-server start) Check queue again with with rabbitmqctl list_queues. Look for: koha_myclone-long_tasks 0 Your messages have been gone. Now apply this patch. Reiterate the former steps. But note that you will still see a non-empty queue in the last step: koha_myclone-long_tasks 1 (at least 1) Signed-off-by: Marcel de Rooy Signed-off-by: David Nind Signed-off-by: Nick Clemens Signed-off-by: Tomas Cohen Arazi (cherry picked from commit 5797f5095ecb9fc1eab3fe129eab83c048cc422b) Signed-off-by: Fridolin Somers (cherry picked from commit 8c0ee5ce0dbeb5427b214060483e5235d8a6fa73) Signed-off-by: Matt Blenkinsop --- Koha/BackgroundJob.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Koha/BackgroundJob.pm b/Koha/BackgroundJob.pm index f803c36b05..ca3f471be8 100644 --- a/Koha/BackgroundJob.pm +++ b/Koha/BackgroundJob.pm @@ -138,7 +138,8 @@ sub enqueue { # Picking a random id (memcached_namespace) from the config my $namespace = C4::Context->config('memcached_namespace'); my $encoded_args = Encode::encode_utf8( $json_args ); # FIXME We should better leave this to Net::Stomp? - $conn->send_with_receipt( { destination => sprintf("/queue/%s-%s", $namespace, $job_queue), body => $encoded_args } ) + my $destination = sprintf( "/queue/%s-%s", $namespace, $job_queue ); + $conn->send_with_receipt( { destination => $destination, body => $encoded_args, persistent => 'true' } ) or Koha::Exceptions::Exception->throw('Job has not been enqueued'); } catch { $self->status('failed')->store; -- 2.39.5