From d1c5d1810e5de91801b677a50a1bf9ade0d066fd Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Wed, 18 Sep 2019 15:57:13 -0400 Subject: [PATCH] inline init() to avoid cstore startup race condition Signed-off-by: Bill Erickson --- Open-ILS/src/perlmods/lib/OpenILS/Application/Search.pm | 1 - .../src/perlmods/lib/OpenILS/Application/Search/Elastic.pm | 11 +++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Search.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Search.pm index f025bb7216..b1d34d90f1 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Search.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Search.pm @@ -37,7 +37,6 @@ sub initialize { sub child_init { OpenILS::Application::Search::Z3950->child_init; OpenILS::Application::Search::Browse->child_init; - OpenILS::Application::Search::Elastic->child_init; } diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Elastic.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Elastic.pm index 178b3d884d..0a16511212 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Elastic.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Elastic.pm @@ -36,11 +36,16 @@ my $bib_fields; my $hidden_copy_statuses; my $hidden_copy_locations; my $avail_copy_statuses; -our $enabled = {}; -sub child_init { +# NOTE calling cstore functions in child_init is dicey because child_init +# may be run before cstore is ready for requests. Use a local init() instead. +my $init_done = 0; +sub init { my $class = shift; + return if $init_done; + $init_done = 1; + my $e = new_editor(); $bib_fields = $e->retrieve_all_elastic_bib_field; @@ -158,6 +163,8 @@ sub bib_search { my ($self, $client, $query, $options) = @_; $options ||= {}; + init(); + my $staff = ($self->api_name =~ /staff/); return {count => 0, ids => []} unless $query && $query->{query}; -- 2.11.0