Cache open-ils.fielder results by locale
authorDan Scott <dscott@laurentian.ca>
Sun, 16 Oct 2011 22:39:00 +0000 (18:39 -0400)
committerThomas Berezansky <tsbere@mvlc.org>
Tue, 18 Oct 2011 16:09:19 +0000 (12:09 -0400)
The problem was particularly visible in search facets, but existed
before: the cache key used for fielder results did not take locale into
account, so on a multi-locale system the first locale won and populated
the cache for all other locales.

Use a session locale if provided, otherwise default to the locale set in
opensrf.xml

Signed-off-by: Dan Scott <dscott@laurentian.ca>
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/Fielder.pm

index 38a56c5..341b569 100644 (file)
@@ -36,6 +36,7 @@ my $log = 'OpenSRF::Utils::Logger';
 
 my $cache;
 my $cache_timeout;
+my $default_locale;
 my $parser = XML::LibXML->new();
 my $xslt = XML::LibXSLT->new();
 
@@ -56,6 +57,8 @@ sub initialize {
     $cache_timeout = $conf->config_value(
             "apps", "open-ils.fielder", "app_settings", "cache_timeout" ) || 300;
 
+    $default_locale = $conf->config_value("default", "default_locale") || 'en-US';
+
     generate_methods();
 
 }
@@ -68,6 +71,7 @@ sub fielder_fetch {
     my $client = shift;
     my $obj = shift;
 
+    my $locale = $self->session->session_locale || $default_locale;
     my $query = $obj->{query};
     my $nocache = $obj->{cache} ? 0 : 1;
     my $fields = $obj->{fields};
@@ -98,7 +102,8 @@ sub fielder_fetch {
             $qstring .
             $fstring .
             $distinct .
-            $obj_class
+            $obj_class .
+            $locale
         );
 
         $res = $cache->get_cache( $key );