@@ -, +, @@ access kills the process - run rebuild_zebra.pl in daemon mode : - stop the database - wait a minute - restart the database - test the indexer by creating a new record (wait for a minute) --- misc/migration_tools/rebuild_zebra.pl | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) --- a/misc/migration_tools/rebuild_zebra.pl +++ a/misc/migration_tools/rebuild_zebra.pl @@ -175,7 +175,6 @@ my $kohadir = C4::Context->config('intranetdir'); my $bib_index_mode = C4::Context->config('zebra_bib_index_mode') // 'dom'; my $auth_index_mode = C4::Context->config('zebra_auth_index_mode') // 'dom'; -my $dbh = C4::Context->dbh; my ($biblionumbertagfield,$biblionumbertagsubfield) = &GetMarcFromKohaField("biblio.biblionumber",""); my ($biblioitemnumbertagfield,$biblioitemnumbertagsubfield) = &GetMarcFromKohaField("biblioitems.biblioitemnumber",""); @@ -227,6 +226,7 @@ if ( $verbose_logging ) { } my $tester = XML::LibXML->new(); +my $dbh; # The main work is done here by calling do_one_pass(). We have added locking # avoid race conditions between full rebuilds and incremental updates either from @@ -243,7 +243,13 @@ if ($daemon_mode) { while (1) { # For incremental updates, skip the update if the updates are locked if (_flock($LockFH, LOCK_EX|LOCK_NB)) { - do_one_pass() if ( zebraqueue_not_empty() ); + eval { + $dbh = C4::Context->dbh; + do_one_pass() if ( zebraqueue_not_empty() ); + }; + if ($@ && $verbose_logging) { + warn "Warning : $@\n"; + } _flock($LockFH, LOCK_UN); } sleep $daemon_sleep; @@ -252,6 +258,7 @@ if ($daemon_mode) { # all one-off invocations my $lock_mode = ($wait_for_lock) ? LOCK_EX : LOCK_EX|LOCK_NB; if (_flock($LockFH, $lock_mode)) { + $dbh = C4::Context->dbh; do_one_pass(); _flock($LockFH, LOCK_UN); } else { --