Koha/debian/scripts/koha-rebuild-zebra
Tomas Cohen Arazi 997ad166c6 [SIGNED-OFF] Bug 15113: koha-rebuild-zebra should check USE_INDEXER_DAEMON and skip if enabled
This patch changes the behaviour of the koha-rebuild-zebra script in the following way:

USE_INDEXER_DAEMON=no
- Keeps the current behaviour

USE_INDEXER_DAEMON=yes
- It skips incremental indexing to avoid races.

Caveats:
- A --force option is introduced for useing in a specific situtation that might need it
 (i.e. the administrator knows what he's doing).
- If --full is passed, the reindexing is not skipped.

The documentation files and messages are adjusted accordingly.

This patch should help users that want to use the indexing daemon, in which case they wouldn't need
to change their default 5 min cronjob (it will be just skipped). Ultimately, koha-common could have
USE_INDEXER_DAEMON = yes by default, but that's subject for another bug report.

To test:
- Play with the different option switches and USE_INDEXER_DAEMON
- Things work as expected
- Sign off

Regards

Signed-off-by: Hector Castro <hector.hecaxmmx@gmail.com>
Works as expected

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Your Full Name <your_email>
2016-04-19 17:47:42 +00:00

182 lines
4.6 KiB
Bash
Executable file

#!/bin/sh
#
# koha-rebuild-zebra - Rebuild the Zebra database for Koha instances.
# Copyright 2010 Catalyst IT, Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
set -e
# Read configuration variable file if it is present
[ -r /etc/default/koha-common ] && . /etc/default/koha-common
# include helper functions
if [ -f "/usr/share/koha/bin/koha-functions.sh" ]; then
. "/usr/share/koha/bin/koha-functions.sh"
else
echo "Error: /usr/share/koha/bin/koha-functions.sh not present." 1>&2
exit 1
fi
toggle_biblios_only()
{
biblios_only="yes"
biblios="yes"
if [ "$authorities_only" != "yes" ]; then
authorities="no"
fi
}
toggle_authorities_only()
{
authorities_only="yes"
authorities="yes"
if [ "$biblios_only" != "yes" ]; then
biblios="no"
fi
}
run_rebuild_zebra()
{
local instancename=$1; shift
if [ "$USE_INDEXER_DAEMON" = "no" ] ||
[ "${full_reindex}" = "yes" ] ||
[ "${force}" = "yes" ] ; then
# TODO: This comment is here to remind us that we should make
# rebuild_zebra.pl return error codes on failure
if sudo -u "$instancename-koha" -H \
env PERL5LIB=/usr/share/koha/lib \
KOHA_CONF="/etc/koha/sites/$instancename/koha-conf.xml" \
/usr/share/koha/bin/migration_tools/rebuild_zebra.pl $@ ; then
return 0
else
return 1
fi
fi
}
usage()
{
local scriptname=$0
cat <<EOF
Rebuild the Zebra indexes for Koha instances. The default behaviour
is to do an incremental rebuild.
Usage: $scriptname [options] instancename1 instancename2...
Options:
--usmarc|-u Runs the process as USMARC rather than
the default of MARCXML.
--authorities|-a Only run process for authorities.
--biblios|-b Only run process for biblios.
--full|-f Does a reindex of the whole collection.
--force Run incremental indexing even if USE_INDEXER_DAEMON="yes"
--quiet|-q Sometimes be a bit quieter for scripts/cronjobs.
--verbose|-v Be verbose.
--help|-h Print this help.
Note: Any other options are passed directly to rebuild_zebra.pl.
EOF
}
# Default parameters
opt_idx="-z"
opt_xml="-x"
opt_verbose=""
opts_other=""
biblios_only="no"
authorities_only="no"
biblios="yes"
authorities="yes"
force="no"
full_reindex="no"
# The '-q' option is intended to prevent the cronjob causing this to output
# help information if there are no instances defined.
quiet="no"
# Read parameters
while [ -n "$*" ]; do
case "$1" in
-h|--help)
usage ; exit 0
;;
-b|--biblios)
toggle_biblios_only
;;
-a|--authorities)
toggle_authorities_only
;;
-u|--usmarc)
opt_xml=""
;;
-f|--full)
full_reindex="yes"
opt_idx="-r"
;;
--force)
force="yes"
;;
-v|--verbose)
opt_verbose="-v"
;;
-q|--quiet)
quiet="yes"
;;
-*)
opts_other="$opts_other $1";
;;
*)
break
;;
esac
shift
done
# Parse command line.
if [ $# -lt 1 ]; then
if [ "$quiet" = "no" ]; then
usage
die "Missing instance name."
else
exit
fi
fi
# Loop over instance names
for name in "$@"
do
if is_instance $name; then
if [ "$biblios" = "yes" ]; then
if ! run_rebuild_zebra $name \
-b $opt_verbose $opt_idx $opt_xml $opts_other; then
warn "Something went wrong rebuilding biblio indexes for $name"
fi
fi
if [ "$authorities" = "yes" ]; then
if ! run_rebuild_zebra $name \
-a $opt_verbose $opt_idx $opts_other ; then
warn "Something went wrong rebuilding authority indexes for $name"
fi
fi
else
warn "Unknown instance $name."
fi
done
exit 0