Handle search timeouts more gracefully
authorJason Etheridge <jason@esilibrary.com>
Thu, 19 Jan 2012 22:01:22 +0000 (17:01 -0500)
committerLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Tue, 31 Jan 2012 19:44:19 +0000 (14:44 -0500)
Another tweak courtesy of berick

Returns 0 results if open-ils.storage timeouts instead of a nasty uncaught
undefined ARRAY exception resulting in an OPAC "spinning wheel of death"
(formerly the "green knight rider bar of death".

Note that in the event of storage timeouts, you should tune and/or beef-up
your database.

Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm

index eb166a6..6368787 100644 (file)
@@ -1270,7 +1270,6 @@ sub staged_search {
             my $start = time;
             $results = $U->storagereq($method, %$search_hash);
             $search_duration = time - $start;
-            $logger->info("staged search: DB call took $search_duration seconds and returned ".scalar(@$results)." rows, including summary");
             $summary = shift(@$results) if $results;
 
             unless($summary) {
@@ -1279,6 +1278,8 @@ sub staged_search {
                 return {count => 0};
             }
 
+            $logger->info("staged search: DB call took $search_duration seconds and returned ".scalar(@$results)." rows, including summary");
+
             my $hc = $summary->{estimated_hit_count} || $summary->{visible};
             if($hc == 0) {
                 $logger->info("search returned 0 results: duration=$search_duration: params=".