LP#1704396: Don't use alarm() for facet timeout user/miker/lp-1704396-reset_alarm_timer_for_facets-loop
authorMike Rylander <mrylander@gmail.com>
Wed, 1 Nov 2017 22:22:21 +0000 (18:22 -0400)
committerMike Rylander <mrylander@gmail.com>
Thu, 2 Nov 2017 20:50:29 +0000 (16:50 -0400)
Use a loop to count up, 50ms at a time, to 10 seconds max.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm

index 4a0336d..c26e9e1 100644 (file)
@@ -1362,13 +1362,12 @@ sub retrieve_cached_facets {
 
     return undef unless ($key and $key =~ /_facets$/);
 
-    eval {
-        local $SIG{ALRM} = sub {die};
-        alarm(4); # we'll sleep for as much as 4s
-        do {
-            die if $cache->get_cache($key . '_COMPLETE');
-        } while (sleep(0.05));
-    };
+    my $count = 0;
+    while (
+        $count < 200 && # 200 * 50ms == 10s
+        !$cache->get_cache($key . '_COMPLETE') &&
+        sleep(0.05)
+    ) { $count++ };
 
     my $blob = $cache->get_cache($key) || {};