[Koha-bugs] [Bug 22417] Add a task queue
bugzilla-daemon at bugs.koha-community.org
bugzilla-daemon at bugs.koha-community.org
Fri Aug 28 15:07:45 CEST 2020
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=22417
--- Comment #158 from Jonathan Druart <jonathan.druart at bugs.koha-community.org> ---
Thanks Marcel and Kyle for having a look at this!
(In reply to Marcel de Rooy from comment #156)
> QA Comment:
> Great to see us moving to a message queue in Koha ! Nice start. And surely
> things to discuss ;)
> The UI changes are not really the most relevant imo. We could start as an
> experimental feature too if needed (in that case we should not touch batch
> mod).
> But we should add imo some configuration options (see below, setting up
> vhost, user, etc.)
> And perhaps even more important and already commented on a bit, we are
> adding a task queue here with a message queue. Obviously, we could send
> other stuff into the MQ; so this might become a problem later on.
> And sounding a bit nasty, but not meant to be: We are saving the data into a
> background job table as well as sending it to MQ. Aren't we being redundant
> here? Actually, it looks like our background job could just hook to the
> background jobs table and process what is left there. So what is the real
> benefit here in this implementation of the MQ exactly?
I am not sure I understand what you are suggesting.
Do you mean misc/background_jobs_worker.pl could watch the DB table and so we
could remove the RabbitMQ dependency?
> Detailed comments:
> my $stomp = Net::Stomp->new( { hostname => 'localhost', port => '61613' } );
> hardcoded port number / we should probably also let rabbitmq run in its own
> container, so replace localhost too: move to koha-conf
> No disconnect ? Memory issues when not doing so?
> $stomp->connect( { login => 'guest', passcode => 'guest' } );
> hmm; isnt this the place for vhosts to come in ? just as vhost, a user
> should have been created? / hardcoded: move to koha-conf or separate conf?
If we need to tweak the configuration it could go into koha-conf. As I said in
a comment (Koha::BackgroundJob->enqueue), specific vhosts need to be defined
server-side.
Here we just want to have it working out of the box. We will have to focus
specifically on that depending on the needs we found once it's pushed.
> # Picking a random id (memcached_namespace) from the config
> my $namespace = C4::Context->config('memcached_namespace');
> Shouldnt we configure a koha vhost during install (koha-create) and indeed
> pick that from koha-conf or so ?
> Why not use config/database instead? Normally it looks like koha_instance
As Kyle said, it does not really matter for now. We just need an ID.
> Not sure btw if using the term namespace is confusing here; or just a queue
> prefix ?
Maybe you are right but it does not matter much :)
> Add Koha::BackgroundJob::BatchUpdateBiblio
> Not sure if we need that.
> The crux is here only four lines:
> my $record = C4::Biblio::GetMarcBiblio({ biblionumber =>
> $biblionumber });
> C4::MarcModificationTemplates::ModifyRecordWithTemplate( $mmtid,
> $record );
> my $frameworkcode = C4::Biblio::GetFrameworkCode( $biblionumber
> );
> C4::Biblio::ModBiblio( $record, $biblionumber, $frameworkcode );
> The rest of the code is more or less overhead which perhaps better could be
> moved to the general module. The module should care for iterating too. So if
> we could pass a sub or method to a general process method along with a
> params hash here including biblionumber and marc_template_id, it might be
> enough? Similar remarks for enqueue. Would reduce a number of submodules.
> So we should enqueue: Koha::Backgroundjob->new({ type => 'batch_record_mod',
> ... })->enqueue({ mmtid => $mmtid, records => $records })
> And process with Koha::Backgroundjobs->process({ type => ... }) where the
> process method iterates over the records and associates type with e.g.
> Koha::Biblios::batch_update [four lines above] etc.
Yes, maybe. The idea was to be flexible in case we need it.
When we will have more job moved to this mechanism we will know what can be
refactored.
Also I think it's good to have more code in the module than in the controller
scripts.
> installer/data/mysql/atomicupdate/bug_15032.perl
> Wrong bug number
Indeed, it's actually from 15032. It has a long history :)
> diff koha_worker.pl misc/background_jobs_worker.pl
> Why did you add koha_worker.pl? We already run the misc script ?
new_koha_job.pl and koha_worker.pl won't be pushed. They are there for testing
purpose only.
> No tests anywhere [yet]? Ok :)
For point.
My (very) bad tentative to justify would be that existing code was not covered
by tests either.
Argument rejected.
I could try to write some tests for the 2 ->process method, but I don't think
->enqueue or ->connect can be tested easily.
--
You are receiving this mail because:
You are watching all bug changes.
More information about the Koha-bugs
mailing list