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.
Created attachment 55930 [details] [review] 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)
Created attachment 55938 [details] [review] 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) Signed-off-by: Jacek Ablewicz <abl@biblos.pk.edu.pl>
The error "Can't connect to local MySQL server through socket" will be output to stderr anyway (regardless $verbose). Is it expected?
(In reply to Jonathan Druart from comment #3) > The error "Can't connect to local MySQL server through socket" will be > output to stderr anyway (regardless $verbose). Is it expected? Yes I think this is better to know it does not work. This log will end in daemon.log or journalctl
Created attachment 56774 [details] [review] 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) Signed-off-by: Jacek Ablewicz <abl@biblos.pk.edu.pl> Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Pushed to master for 16.11, thanks Frido!
Pushed in 16.05. Will be in 16.05.06.
Pushed to 3.22.x, will be in 3.22.13