From 35fc9c10032a4b130d9861efb36f112112294e57 Mon Sep 17 00:00:00 2001 From: Kyle M Hall <kyle@bywatetsolutions.com> Date: Tue, 6 Mar 2018 13:29:22 -0500 Subject: [PATCH] Bug 18909: Enable the maximum zebra records size to be specified per instance The default for Zebra is to not return results where the record size is greater than 1045 KB ( 1 MB ). Some libraries need to increase this ceiling, but it may come at a cost with z39.50 compatibility with other services. For that reason, we should make this setting configurable on a per-instance basis. Test plan for kohadevbox: 1) Apply this patch 2) Run: $ reset_all 3) Restart Zebra: $ sudo koha-zebra --restart kohadev 4) Check how zebrasrv was called: $ ps waux | grep zebrasrv => SUCCESS: Looks like ... /usr/bin/zebrasrv -v none,fatal,warn -k 1024 5) Edit /etc/koha/sites/kohadev/koha-conf.xml, add: <zebra_max_record_size>2048</zebra_max_record_size> 6) Repeat (3) and (4) => SUCCESS: Looks like ... /usr/bin/zebrasrv -v none,fatal,warn -k 2048 7) Sign off :-D General test plan: 1) Apply this patch 2) Build a Debian package 3) Specify a zebra_max_record_size of 2048 in your koha_conf.xml 4) Restart zebra 5) Index a record greater than 1 MB but smaller than 2 MB 6) Note that it is searchable! Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Hugo Agud <hagud@orex.es> Signed-off-by: Nick Clemens <nick@bywatersolutions.com> (cherry picked from commit 8c0c6be7488e0543662e47006ded12e74ae4eb8d) Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> --- debian/scripts/koha-functions.sh | 11 +++++++++++ debian/scripts/koha-zebra | 2 ++ debian/templates/koha-conf-site.xml.in | 1 + 3 files changed, 14 insertions(+) diff --git a/debian/scripts/koha-functions.sh b/debian/scripts/koha-functions.sh index 6e189b6c94..c6f79b4933 100755 --- a/debian/scripts/koha-functions.sh +++ b/debian/scripts/koha-functions.sh @@ -254,6 +254,17 @@ get_loglevels() fi } +get_max_record_size() +{ + local instancename=$1 + local retval=$(xmlstarlet sel -t -v 'yazgfs/config/zebra_max_record_size' /etc/koha/sites/$instancename/koha-conf.xml) + if [ "$retval" != "" ]; then + echo "$retval" + else + echo "1024" + fi +} + get_tmpdir() { if [ "$TMPDIR" != "" ]; then diff --git a/debian/scripts/koha-zebra b/debian/scripts/koha-zebra index f6d2268c7e..0bd11aa7bc 100755 --- a/debian/scripts/koha-zebra +++ b/debian/scripts/koha-zebra @@ -61,6 +61,7 @@ start_zebra() # get zebra log levels from koha-conf.xml local loglevels=$(get_loglevels ${name}) + local max_record_size=$(get_max_record_size ${name}) if ! is_zebra_running $name; then @@ -76,6 +77,7 @@ start_zebra() --user=${name}-koha.${name}-koha" ZEBRA_PARAMS="-v $loglevels \ + -k $max_record_size \ -f /etc/koha/sites/${name}/koha-conf.xml" [ "$verbose" != "no" ] && \ diff --git a/debian/templates/koha-conf-site.xml.in b/debian/templates/koha-conf-site.xml.in index d2e38151fa..2cd9688727 100644 --- a/debian/templates/koha-conf-site.xml.in +++ b/debian/templates/koha-conf-site.xml.in @@ -296,6 +296,7 @@ __END_SRU_PUBLICSERVER__ <useshibboleth>0</useshibboleth><!-- see C4::Auth_with_shibboleth for extra configs you must do to turn this on --> <zebra_lockdir>/var/lock/koha/__KOHASITE__</zebra_lockdir> <use_zebra_facets>1</use_zebra_facets> + <zebra_max_record_size>1024</zebra_max_record_size> <queryparser_config>/etc/koha/searchengine/queryparser.yaml</queryparser_config> <log4perl_conf>__KOHA_CONF_DIR__/log4perl.conf</log4perl_conf> <!-- Uncomment/edit next setting if you want to adjust zebra log levels. -- 2.39.5