From a2e7693ea5079ebabcd06d528dcae12fc27fd527 Mon Sep 17 00:00:00 2001 From: Olli-Antti Kivilahti Date: Thu, 17 Sep 2015 13:23:49 +0300 Subject: [PATCH] Bug 14844 - Corrupted storable string. When adding/editing an Item, cookie LastCreatedItem might be corrupted. No idea how to replicate this issue but we have been getting several reports about the following error: Software error: Corrupted storable string (binary v2.9) at /usr/lib/perl/5.18/Storable.pm line 417, at /home/koha/kohaclone/cataloguing/additem.pl line 375. TEST PLAN: 1. Add or modify an Item. 2. No observed changes. ?. We don't know what causes this but we know that add/modify Item occasionally crashes due to failure of a cookie thawing. This patch prevents the whole program from dying, because this error is not critical enough to warrant dying. Also there is no centralized mechanism in Koha for showing messages to the user, so there is no easy and convenient way to warn the user that the: 'LastCreatedItem'-cookie or the systempreference 'PrefillItem' is malfunctioning. So we instead just warn to the server logs with the malfunctioning cookie in hopes of nailing down what causes the issues. --- cataloguing/additem.pl | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index 38f5d92..cc3aba5 100755 --- a/cataloguing/additem.pl +++ b/cataloguing/additem.pl @@ -418,9 +418,15 @@ if ($prefillitem) { my $lastitemcookie = $input->cookie('LastCreatedItem'); if ($lastitemcookie) { $lastitemcookie = uri_unescape($lastitemcookie); - if ( thaw($lastitemcookie) ) { - $cookieitemrecord = thaw($lastitemcookie) ; - $cookieitemrecord = removeFieldsForPrefill($cookieitemrecord); + eval { + if ( thaw($lastitemcookie) ) { + $cookieitemrecord = thaw($lastitemcookie); + $cookieitemrecord = removeFieldsForPrefill($cookieitemrecord); + } + }; + if ($@) { + $lastitemcookie = 'undef' unless $lastitemcookie; + warn "Storable::thaw failed to thaw LastCreatedItem-cookie. Cookie value '$lastitemcookie'. Caught error follows: '$@'"; } } } -- 1.9.1