Bugzilla – Attachment 170491 Details for
Bug 37682
Improve speed of koha-preferences CLI tool (by lazy-loading modules)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 37682: Lazy-load modules for setters in koha-preferences tool
Bug-37682-Lazy-load-modules-for-setters-in-koha-pr.patch (text/plain), 3.15 KB, created by
David Cook
on 2024-08-20 04:39:33 UTC
(
hide
)
Description:
Bug 37682: Lazy-load modules for setters in koha-preferences tool
Filename:
MIME Type:
Creator:
David Cook
Created:
2024-08-20 04:39:33 UTC
Size:
3.15 KB
patch
obsolete
>From 6ee7d181e6e871b6703955a8deb56f2751e0876c Mon Sep 17 00:00:00 2001 >From: David Cook <dcook@prosentient.com.au> >Date: Tue, 20 Aug 2024 04:31:31 +0000 >Subject: [PATCH] Bug 37682: Lazy-load modules for setters in koha-preferences > tool > >This change lazy-loads modules for setters in the >koha-preferences tool, so that getters are free to run super fast. > >Between BZ 37657 and BZ 37682 we effectively eliminate the >overhead of running "get" or "dump" commands via the koha-preferences >tool. > >Test plan: > >1. time misc/admin/koha-preferences get SearchEngine >2. Note time is about .35 seconds >3. time misc/admin/koha-preferences dump >4. Note time is about .35 seconds >5. Create sysprefs.yml >--- >marcflavour: MARC21 >viewMARC: 1 >6. time misc/admin/koha-preferences load -i sysprefs.yml >7. Note time is about .35 seconds >8. time misc/admin/koha-preferences set SearchEngine Elasticsearch >9. Note time is about 1 seconds > >10. Apply patch >11. Repeat the koha-preferences commands above >12. Note that the "dump" and "get" commands run in about .09-.1 >seconds. The "load" and "set" commands still take the same amount >of time as their behaviours haven't changed > >13. misc/admin/koha-preferences set SearchEngine Elasticsearch1 >14. koha-mysql kohadev >15. select * from action_logs where module = 'SYSTEMPREFERENCE' > order by action_id desc limit 5; >16. Note that the action log showing Elasticsearch1 update says "interface" > of "commandline" and "script" of "koha-preferences" >--- > misc/admin/koha-preferences | 25 ++++++++++++++++++++----- > 1 file changed, 20 insertions(+), 5 deletions(-) > >diff --git a/misc/admin/koha-preferences b/misc/admin/koha-preferences >index 11cbc42dc7..1cb866f5ba 100755 >--- a/misc/admin/koha-preferences >+++ b/misc/admin/koha-preferences >@@ -19,19 +19,16 @@ > # > > use Modern::Perl; >-use Koha::Script; >-use C4::Context; >-use C4::Log; > use Getopt::Long; > use Pod::Usage; > use YAML::XS; > >-use Koha::Logger; >- > use Koha::Database; > > our %NOT_SET_PREFS = map { $_, 1 } qw( Version ); > >+my $lazy_loaded; >+ > =head1 NAME > > koha-preferences - Get, set, dump and load Koha system preferences >@@ -42,6 +39,21 @@ misc/admin/koha-preferences COMMAND ... > > =cut > >+sub _lazy_load_modules { >+ if (!$lazy_loaded){ >+ #NOTE: "use" runs at compile time, so require/import() must be used instead >+ require Koha::Script; >+ Koha::Script->import(); >+ require C4::Context; >+ C4::Context->import(); >+ require C4::Log; >+ C4::Log->import; >+ require Koha::Logger; >+ Koha::Logger->import; >+ $lazy_loaded = 1; >+ } >+} >+ > sub print_usage { > my ( $annoyed ) = @_; > >@@ -215,6 +227,7 @@ my %commands = ( > }, > load => sub { > my ( $infile, $force_version ); >+ _lazy_load_modules(); > > GetOptions( > 'i:s' => \$infile, >@@ -246,6 +259,7 @@ my %commands = ( > }, > set => sub { > my ( $preference, $value ) = @_; >+ _lazy_load_modules(); > > print_usage() unless ( $preference && defined($value) ); > >@@ -253,6 +267,7 @@ my %commands = ( > }, > clear => sub { > my ( $preference ) = @_; >+ _lazy_load_modules(); > > print_usage() unless ( $preference ); > >-- >2.39.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 37682
:
170491
|
170521
|
170522