]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Revert "Bug 1251208 - Bugzilla->request_cache() can be faster"
authorDylan William Hardison <dylan@hardison.net>
Tue, 1 Mar 2016 13:27:28 +0000 (08:27 -0500)
committerDylan William Hardison <dylan@hardison.net>
Tue, 1 Mar 2016 13:27:28 +0000 (08:27 -0500)
This reverts commit 1d3186c171465b173a42f8ecd168662eccccc4d1.

Bugzilla.pm

index c50d225236ecc5c23c863b4f1b31c5bc30691e41..0ce152e4821353ab63e218039f017ebaaaa34aac 100644 (file)
@@ -736,6 +736,7 @@ sub local_timezone {
              ||= DateTime::TimeZone->new(name => 'local');
 }
 
+# Send messages to syslog for the auditing systems (eg. mozdef) to pick up.
 sub audit {
     my ($class, $message) = @_;
     openlog('apache', 'cons,pid', 'local4');
@@ -743,21 +744,43 @@ sub audit {
     closelog();
 }
 
-my $request_cache = {};
-
-sub request_cache { return $request_cache }
+# This creates the request cache for non-mod_perl installations.
+# This is identical to Install::Util::_cache so that things loaded
+# into Install::Util::_cache during installation can be read out
+# of request_cache later in installation.
+our $_request_cache = $Bugzilla::Install::Util::_cache;
+
+sub request_cache {
+    if ($ENV{MOD_PERL}) {
+        require Apache2::RequestUtil;
+        # Sometimes (for example, during mod_perl.pl), the request
+        # object isn't available, and we should use $_request_cache instead.
+        my $request = eval { Apache2::RequestUtil->request };
+        return $_request_cache if !$request;
+        return $request->pnotes();
+    }
+    return $_request_cache;
+}
 
 sub clear_request_cache {
-    %$request_cache = ();
+    $_request_cache = {};
+    if ($ENV{MOD_PERL}) {
+        require Apache2::RequestUtil;
+        my $request = eval { Apache2::RequestUtil->request };
+        if ($request) {
+            my $pnotes = $request->pnotes;
+            delete @$pnotes{(keys %$pnotes)};
+        }
+    }
 }
 
 # This is a per-process cache.  Under mod_cgi it's identical to the
 # request_cache.  When using mod_perl, items in this cache live until the
 # worker process is terminated.
-my $process_cache = {};
+our $_process_cache = {};
 
 sub process_cache {
-    return $process_cache;
+    return $_process_cache;
 }
 
 # BMO - Instrumentation