From: Bill Erickson Date: Wed, 18 Sep 2019 19:57:13 +0000 (-0400) Subject: inline init() to avoid cstore startup race condition X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=ba315b6c2d42ff4b366e350b2d34af47c9e7e1a0;p=working%2FEvergreen.git inline init() to avoid cstore startup race condition Signed-off-by: Bill Erickson --- 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};