[Koha-bugs] [Bug 11096] Koha cannot retreive big records from Zebra

bugzilla-daemon at bugs.koha-community.org bugzilla-daemon at bugs.koha-community.org
Tue Dec 10 01:23:11 CET 2013


http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=11096

Galen Charlton <gmcharlt at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|Passed QA                   |In Discussion

--- Comment #21 from Galen Charlton <gmcharlt at gmail.com> ---
This has run into a snag.  While reviewing this, I decided to write a direct
regression test, which can be found here:

http://git.librarypolice.com/?p=koha-galen.git;a=commit;h=cffafe30284f65ef21fc315117b5d7abb39483dc

This patch applies on both the current master as well as master with the
patches for bug 11096 applied.

On current master, the new tests *work* for MARC21 if the indexing mode is
GRS-1, but, as expected, fail if the indexing mode is DOM.

On top of the patches for this bug, the new tests work if the indexing mode is
DOM.  Yay!

Here's the catch: they fail, and fail with a crash, if the indexing mode is
GRS-1.  This is because Zebra itself returns a Z39.50 error 14 (failure while
presenting record) in line 493 of Search.pm:

  $record = $results[ $i - 1 ]->record($j)->raw();

Because Zebra refuses to render an invalid ISO2709 blob MARC XML, ->record($j)
returns undef, and the crash occurs when it tries to run undef->raw().

Unfortunately, it's not a matter of just wrapping an eval() around it and
carrying on.  Here's the situation today:

Over-large record in Zebra with GRS-1: can retrieve it
... with DOM: can't retrieve it

Note that it works for GRS-1 mostly because (a) Zebra doesn't try to do any
conversions; it think it's storing iso2709, and if you want iso2709 back, it
just sends it and (b) MARC::Record is pretty forgiving.

Here's the situation with the current proposed patches:
... with GRS-1: can't retrieve, and it crashes the search
... with DOM: it works

To sum up: this patch would cause a regression for GRS-1 users that happen to
have over-large records in their database.

I see couple ways to solve this.  One would be to simply immediately desupport
GRS-1 -- but I don't think our UNIAMRC users are quite there yet.

The other way would be to make the code adjust how it retrieves records, and
whether to use the USMARC or the XML decoder, based on the values of the
zebra_bib_index_mode and zebra_auth_index_mode settings.

-- 
You are receiving this mail because:
You are watching all bug changes.


More information about the Koha-bugs mailing list