Bugzilla – Attachment 29575 Details for
Bug 8773
Add per-instance koha-index-daemon in .deb setup
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
[SIGNED OFF] Bug 8773 - Start per-instance koha-index-daemon in .deb setup
SIGNED-OFF-Bug-8773---Start-per-instance-koha-inde.patch (text/plain), 16.47 KB, created by
Martin Renvoize (ashimema)
on 2014-07-08 14:45:53 UTC
(
hide
)
Description:
[SIGNED OFF] Bug 8773 - Start per-instance koha-index-daemon in .deb setup
Filename:
MIME Type:
Creator:
Martin Renvoize (ashimema)
Created:
2014-07-08 14:45:53 UTC
Size:
16.47 KB
patch
obsolete
>From 9e355ae444f1f51eda9f71ea8e205c0343e11323 Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@gmail.com> >Date: Fri, 14 Sep 2012 15:26:12 -0300 >Subject: [PATCH] [SIGNED OFF] Bug 8773 - Start per-instance koha-index-daemon > in .deb setup > >Short: > >Launch an indexing daemon (rebuild_zebra.pl -daemon) process for each >enabled instance. Enabling/disabling the use of the indexer is handled >by global configuration variables in /etc/default/koha-common. > >Also provides command line tools to manage the running indexer daemons >for your instances. > >Long: > >Using an indexing daemon avoids launching a new interpreter each time >the cron triggers the indexing, and also allows sub-minute incremental >reindexing, a requirement from our librarians.[1] > >Using the indexer daemon could remain "experimental" until it gets more >testing; so is disabled by default initially. To enable the use of the >indexer the user has to tweak the /etc/default/koha-common config file. >Specifically the USE_INDEXER_DAEMON variable, which is clearly explained >in the file. > >Frecquency defaults to 5 sec, and can be changed by tweaking the >/etc/default/koha-common config file too. > >This patch uses rebuild_zebra.pl in daemon mode, but it is crafted to >allow changing the indexing daemon and passing specific option switches >it might need. > >Regards >To+ > >[1] This is the .deb version of http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=8519 > >Sponsored-by: Universidad Nacional de Cordoba >Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> >--- > debian/docs/koha-common.xml | 7 ++ > debian/docs/koha-indexer.xml | 86 ++++++++++++++ > debian/koha-common.cron.d | 1 + > debian/koha-common.default | 37 +++++- > debian/koha-common.init | 12 ++ > debian/koha-common.install | 1 + > debian/scripts/koha-create | 7 ++ > debian/scripts/koha-functions.sh | 13 +++ > debian/scripts/koha-indexer | 233 ++++++++++++++++++++++++++++++++++++++ > 9 files changed, 396 insertions(+), 1 deletion(-) > create mode 100644 debian/docs/koha-indexer.xml > create mode 100755 debian/scripts/koha-indexer > >diff --git a/debian/docs/koha-common.xml b/debian/docs/koha-common.xml >index d602aa9..2790341 100644 >--- a/debian/docs/koha-common.xml >+++ b/debian/docs/koha-common.xml >@@ -145,6 +145,13 @@ > <para>Stop Zebra for named Koha instances.</para> > </listitem> > </varlistentry> >+ >+ <varlistentry> >+ <term><option>koha-indexer</option></term> >+ <listitem> >+ <para>Manage the indexer daemon for named Koha instances.</para> >+ </listitem> >+ </varlistentry> > </variablelist> > </refsect2> > >diff --git a/debian/docs/koha-indexer.xml b/debian/docs/koha-indexer.xml >new file mode 100644 >index 0000000..66e177c >--- /dev/null >+++ b/debian/docs/koha-indexer.xml >@@ -0,0 +1,86 @@ >+<article xmlns='http://docbook.org/ns/docbook'> >+<title>koha-indexer</title> >+<info> >+<productname>Koha</productname> is the first free software library automation package. >+<author> >+ <orgname>The Koha Community</orgname> >+ <uri>http://koha-community.org/</uri> >+</author> >+</info> >+ >+<refentry xml:id="koha-indexer"> >+ >+ <refmeta> >+ <refentrytitle>koha-indexer</refentrytitle> >+ <manvolnum>8</manvolnum> >+ </refmeta> >+ >+ <refnamediv> >+ <refname>koha-indexer</refname> >+ <refpurpose>Manage the indexer daemon for Koha instances.</refpurpose> >+ <refclass>UNIX/Linux</refclass> >+ </refnamediv> >+ >+ <refsynopsisdiv> >+ <cmdsynopsis> >+ <command>koha-indexer</command> >+ <arg choice="req"><option>--start</option>|<option>--stop</option>|<option>--restart</option>|<option>--help</option>|<option>-h</option>|<option>--quiet</option>|<option>-q</option></arg> >+ <arg choice="req" rep="repeat"><replaceable>instancename</replaceable></arg> >+ </cmdsynopsis> >+ </refsynopsisdiv> >+ >+ <refsect1><title>Options</title> >+ >+ <variablelist> >+ >+ <varlistentry> >+ <term><option>--start</option></term> >+ <listitem> >+ <para>Start the indexer daemon for the desired Koha instances.</para> >+ </listitem> >+ </varlistentry> >+ >+ <varlistentry> >+ <term><option>--stop</option></term> >+ <listitem> >+ <para>Stop the indexer daemon for the desired Koha instances.</para> >+ </listitem> >+ </varlistentry> >+ >+ <varlistentry> >+ <term><option>--restart</option></term> >+ <listitem> >+ <para>Restart the indexer daemon for the desired Koha instances.</para> >+ </listitem> >+ </varlistentry> >+ >+ <varlistentry> >+ <term><option>--quiet|-q</option></term> >+ <listitem> >+ <para>Make the script quiet about non existent instance names. Useful when calling <command>koha-indexer</command> from another scripts.</para> >+ </listitem> >+ </varlistentry> >+ >+ <varlistentry> >+ <term><option>--help|-h</option></term> >+ <listitem> >+ <para>Show usage information.</para> >+ </listitem> >+ </varlistentry> >+ >+ </variablelist> >+ </refsect1> >+ >+ <refsect1><title>Description</title> >+ <para>The <command>koha-indexer</command> script lets you manage your Koha instances indexer daemon.</para> >+ </refsect1> >+ >+ <refsect1><title>See also</title> >+ <simplelist type="inline"> >+ <member><command>/etc/default/koha-common</command></member> >+ </simplelist> >+ </refsect1> >+ >+</refentry> >+ >+</article> >diff --git a/debian/koha-common.cron.d b/debian/koha-common.cron.d >index f763f30..96ff1b2 100644 >--- a/debian/koha-common.cron.d >+++ b/debian/koha-common.cron.d >@@ -6,5 +6,6 @@ > SHELL=/bin/sh > PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin > >+# Comment the following line if you want to use the experimental koha-index-daemon integration > */5 * * * * root test -x /usr/sbin/koha-rebuild-zebra && koha-rebuild-zebra -q $(koha-list --enabled) > */15 * * * * root koha-foreach --enabled --email /usr/share/koha/bin/cronjobs/process_message_queue.pl >diff --git a/debian/koha-common.default b/debian/koha-common.default >index 2f4dc40..66bc611 100644 >--- a/debian/koha-common.default >+++ b/debian/koha-common.default >@@ -1,5 +1,40 @@ >-## General koha-common default options >+## General koha-common default options file > > PERL5LIB="/usr/share/koha/lib" >+KOHA_HOME="/usr/share/koha" >+ >+## Background record indexing >+# >+# The following options control the use of an indexing daemon for >+# Koha instances. >+# >+# More information can be found here: >+# >+# http://wiki.koha-community.org/wiki/PackagesIndexDaemon >+# >+# IMPORTANT: You should comment the relevant line in /etc/cron.d/koha-common >+# (the one that calls koha-rebuild-zebra) >+# >+# USE_INDEXER_DAEMON: "no" | "yes" >+# >+USE_INDEXER_DAEMON="no" >+ >+# Set an alternate indexer daemon. The default is to use the rebuild_zebra.pl >+# in daemon mode. >+# >+# Example: ALTERNATE_INDEXER_DAEMON="koha-index-daemon" >+# >+# ALTERNATE_INDEXER_DAEMON="" >+ >+# Lookup/indexing frecquency (in seconds) for the indexing daemon. >+# >+# The default value is 5 >+# >+INDEXER_TIMEOUT=5 >+ >+# Parameters to be passed to the indexer daemon. Useful for alternate indexers. >+# Defaults to INDEXER_PARAMS="-daemon -x -sleep $INDEXER_TIMEOUT" >+# >+# INDEXER_PARAMS="" > > ## End of general koha-common default options >diff --git a/debian/koha-common.init b/debian/koha-common.init >index 1ba591d..241aaa6 100755 >--- a/debian/koha-common.init >+++ b/debian/koha-common.init >@@ -49,6 +49,10 @@ do_start() > koha-create-dirs $(koha-list) > koha-start-zebra $(koha-list --enabled) > koha-start-sip $(koha-list --enabled) >+ >+ if [ "$USE_INDEXER_DAEMON" = "yes" ]; then >+ koha-indexer --start --quiet $(koha-list --enabled) >+ fi > } > > # >@@ -59,6 +63,10 @@ do_stop() > # We stop everything, including disabled ones. > koha-stop-zebra $(koha-list) || true > koha-stop-sip $(koha-list) || true >+ >+ if [ "$USE_INDEXER_DAEMON" = "yes" ]; then >+ koha-indexer --stop --quiet $(koha-list --enabled) >+ fi > } > > # >@@ -68,6 +76,10 @@ do_reload() { > koha-restart-zebra $(koha-list --enabled) > koha-stop-sip $(koha-list) || true > koha-start-sip $(koha-list --enabled) >+ >+ if [ "$USE_INDEXER_DAEMON" = "yes" ]; then >+ koha-indexer --restart --quiet $(koha-list --enabled) >+ fi > } > > # >diff --git a/debian/koha-common.install b/debian/koha-common.install >index 90a06d9..bdd5eca 100644 >--- a/debian/koha-common.install >+++ b/debian/koha-common.install >@@ -17,6 +17,7 @@ debian/scripts/koha-email-disable usr/sbin > debian/scripts/koha-email-enable usr/sbin > debian/scripts/koha-enable usr/sbin > debian/scripts/koha-foreach usr/sbin >+debian/scripts/koha-indexer usr/sbin > debian/scripts/koha-list usr/sbin > debian/scripts/koha-mysql usr/sbin > debian/scripts/koha-rebuild-zebra usr/sbin >diff --git a/debian/scripts/koha-create b/debian/scripts/koha-create >index 841ef86..6891ac1 100755 >--- a/debian/scripts/koha-create >+++ b/debian/scripts/koha-create >@@ -16,6 +16,8 @@ > # You should have received a copy of the GNU General Public License > # along with this program. If not, see <http://www.gnu.org/licenses/>. > >+# Read configuration variable file if it is present >+[ -r /etc/default/koha-common ] && . /etc/default/koha-common > > set -e > >@@ -642,6 +644,11 @@ then > > # Start Zebra. > koha-start-zebra "$name" >+ >+ if [ "$USE_INDEXER_DAEMON" = "yes" ]; then >+ # Start Indexer daemon >+ koha-indexer --start "$name" >+ fi > fi > > >diff --git a/debian/scripts/koha-functions.sh b/debian/scripts/koha-functions.sh >index d1a3c04..8090fc5 100755 >--- a/debian/scripts/koha-functions.sh >+++ b/debian/scripts/koha-functions.sh >@@ -108,6 +108,19 @@ is_zebra_running() > fi > } > >+is_indexer_running() >+{ >+ local instancename=$1 >+ >+ if daemon --name="$instancename-koha-indexer" \ >+ --user="$instancename-koha.$instancename-koha" \ >+ --running ; then >+ return 0 >+ else >+ return 1 >+ fi >+} >+ > get_instances() > { > find /etc/koha/sites -mindepth 1 -maxdepth 1\ >diff --git a/debian/scripts/koha-indexer b/debian/scripts/koha-indexer >new file mode 100755 >index 0000000..c7c2858 >--- /dev/null >+++ b/debian/scripts/koha-indexer >@@ -0,0 +1,233 @@ >+#!/bin/bash >+# >+# koha-indexer - Manage Indexer Daemons for Koha instances >+# Copyright 2014 Tomás Cohen Arazi @ Universidad Nacional de Córdoba >+# >+# 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 >+ >+. /lib/lsb/init-functions >+ >+# 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 >+ >+usage() >+{ >+ local scriptname=$(basename $0) >+ >+ cat <<EOF >+$scriptname >+ >+This script lets you manage the indexer daemon for your Koha instances. >+ >+Usage: >+$scriptname [--start|--stop|--restart] [--quiet|-q] instancename1 [instancename2...] >+$scriptname -h|--help >+ >+ --start Start the indexer daemon for the specified instances >+ --stop Stop the indexer daemon for the specified instances >+ --restart Restart the indexer daemon for the specified instances >+ --quiet|-q Make the script quiet about non existent instance names >+ (useful for calling from another scripts). >+ --help|-h Display this help message >+ >+EOF >+} >+ >+start_indexer() >+{ >+ local name=$1 >+ >+ if ! is_indexer_running $name; then >+ export KOHA_CONF="/etc/koha/sites/$name/koha-conf.xml" >+ >+ DAEMONOPTS="--name=$name-koha-indexer \ >+ --errlog=/var/log/koha/$name/indexer-error.log \ >+ --stdout=/var/log/koha/$name/indexer.log \ >+ --output=/var/log/koha/$name/indexer-output.log \ >+ --verbose=1 --respawn --delay=30 \ >+ --user=$name-koha.$name-koha" >+ >+ log_daemon_msg "Starting Koha indexing daemon for $name" >+ >+ if daemon $DAEMONOPTS -- $INDEXER_DAEMON $INDEXER_PARAMS; then >+ log_end_msg 0 >+ else >+ log_end_msg 1 >+ fi >+ else >+ log_daemon_msg "Error: Indexer already running for $name" >+ log_end_msg 1 >+ fi >+} >+ >+stop_indexer() >+{ >+ local name=$1 >+ >+ if is_indexer_running $name; then >+ export KOHA_CONF="/etc/koha/sites/$name/koha-conf.xml" >+ >+ DAEMONOPTS="--name=$name-koha-indexer \ >+ --errlog=/var/log/koha/$name/indexer-error.log \ >+ --stdout=/var/log/koha/$name/indexer.log \ >+ --output=/var/log/koha/$name/indexer-output.log \ >+ --verbose=1 --respawn --delay=30 \ >+ --user=$name-koha.$name-koha" >+ >+ log_daemon_msg "Stopping Koha indexing daemon for $name" >+ >+ if daemon $DAEMONOPTS --stop -- $INDEXER_DAEMON $INDEXER_PARAMS; then >+ log_end_msg 0 >+ else >+ log_end_msg 1 >+ fi >+ else >+ log_daemon_msg "Error: Indexer not running for $name" >+ log_end_msg 1 >+ fi >+} >+ >+restart_indexer() >+{ >+ local name=$1 >+ >+ if is_indexer_running $name; then >+ export KOHA_CONF="/etc/koha/sites/$name/koha-conf.xml" >+ >+ DAEMONOPTS="--name=$name-koha-indexer \ >+ --errlog=/var/log/koha/$name/indexer-error.log \ >+ --stdout=/var/log/koha/$name/indexer.log \ >+ --output=/var/log/koha/$name/indexer-output.log \ >+ --verbose=1 --respawn --delay=30 \ >+ --user=$name-koha.$name-koha" >+ >+ log_daemon_msg "Stopping Koha indexing daemon for $name" >+ >+ if daemon $DAEMONOPTS --restart -- $INDEXER_DAEMON $INDEXER_PARAMS; then >+ log_end_msg 0 >+ else >+ log_end_msg 1 >+ fi >+ else >+ log_daemon_msg "Error: Indexer not running for $name" >+ log_end_msg 1 >+ fi >+} >+ >+set_action() >+{ >+ if [ "$op" = "" ]; then >+ op=$1 >+ else >+ die "Error: only one action can be specified." >+ fi >+} >+ >+op="" >+quiet="no" >+ >+# Read command line parameters >+while [ $# -gt 0 ]; do >+ >+ case "$1" in >+ -h|--help) >+ usage ; exit 0 ;; >+ -q|--quiet) >+ quiet="yes" >+ shift ;; >+ --start) >+ set_action "start" >+ shift ;; >+ --stop) >+ set_action "stop" >+ shift ;; >+ --restart) >+ set_action "restart" >+ shift ;; >+ -*) >+ die "Error: invalid option switch ($1)" ;; >+ *) >+ # We expect the remaining stuff are the instance names >+ break ;; >+ esac >+ >+done >+ >+# Check if an alternate indexer has been set >+if [ -z $ALTERNATE_INDEXER_DAEMON ]; then >+ INDEXER_DAEMON="$ALTERNATE_INDEXER_DAEMON" >+else >+ # We default to rebuild_zebra.pl if no alternate indexer set >+ INDEXER_DAEMON="${KOHA_HOME}/bin/migration_tools/rebuild_zebra.pl" >+fi >+ >+if [ $INDEXER_TIMEOUT -lt 1 ]; then >+ # Something's wrong, default to 5 seconds >+ INDEXER_TIMEOUT=5 >+fi >+ >+if [ -z $INDEXER_PARAMS ]; then >+ # Default to the parameters required by rebuild_zebra.pl >+ INDEXER_PARAMS="-daemon -x -sleep $INDEXER_TIMEOUT" >+fi >+ >+if [ -z $PERL5LIB ]; then >+ PERL5LIB="/usr/share/koha/lib" >+fi >+ >+export PERL5LIB >+ >+if [ $# -gt 0 ]; then >+ # We have at least one instance name >+ for name in "$@"; do >+ >+ if is_instance $name; then >+ >+ case $op in >+ "start") >+ start_indexer $name >+ ;; >+ "stop") >+ stop_indexer $name >+ ;; >+ "restart") >+ restart_indexer $name >+ ;; >+ esac >+ >+ else >+ if [ "$quiet" = "no" ]; then >+ log_daemon_msg "Error: Invalid instance name $name" >+ log_end_msg 1 >+ fi >+ fi >+ >+ done >+else >+ if [ "$quiet" = "no" ]; then >+ warn "Error: you must provide at least one instance name" >+ fi >+fi >+ >+exit 0 >-- >1.7.10.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 8773
:
12248
|
12285
|
12292
|
12293
|
12294
|
12654
|
13009
|
13031
|
13050
|
13089
|
18258
|
19794
|
19798
|
19800
|
19805
|
21704
|
22135
|
23928
|
29194
|
29575
|
29669