Bugzilla – Attachment 55930 Details for
Bug 17376
rebuild_zebra.pl in daemon mode no database access kills the process
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 17376 - rebuild_zebra.pl in daemon mode no database access kills the process
Bug-17376---rebuildzebrapl-in-daemon-mode-no-datab.patch (text/plain), 2.96 KB, created by
Fridolin Somers
on 2016-09-29 15:09:13 UTC
(
hide
)
Description:
Bug 17376 - rebuild_zebra.pl in daemon mode no database access kills the process
Filename:
MIME Type:
Creator:
Fridolin Somers
Created:
2016-09-29 15:09:13 UTC
Size:
2.96 KB
patch
obsolete
>From 827112362f5ec8172a43ef057db8c503add4a5b4 Mon Sep 17 00:00:00 2001 >From: Fridolin Somers <fridolin.somers@biblibre.com> >Date: Thu, 29 Sep 2016 16:19:48 +0200 >Subject: [PATCH] Bug 17376 - rebuild_zebra.pl in daemon mode no database > access kills the process > >When running rebuild_zebra.pl in daemon mode, a while loop runs the script for ever. >But if something crashes inside the rebuild process, the all daemon crashes. >For example when it can not access database. >This problem may be temporary so daemon should keep running. > >This patch add eval around the rebuild process to allow a run to fail without killing the daemon. >Also moves the DB handler get inside daemon loop because it is broken is DB stoppes. > >This is a big issue for indexer running in a systemd service. > >Test plan : >- run rebuild_zebra.pl in daemon mode : >/home/koha/src/misc/migration_tools/rebuild_zebra.pl -daemon -z -a -b -x --sleep 30 >- stop the database >- wait a minute >=> you see an error on database connexion >=> the daemon is still running >- 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(-) > >diff --git a/misc/migration_tools/rebuild_zebra.pl b/misc/migration_tools/rebuild_zebra.pl >index ea813d8..b32f8ba 100755 >--- a/misc/migration_tools/rebuild_zebra.pl >+++ b/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 { >-- >2.7.4
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 17376
:
55930
|
55938
|
56774