LocalisationCache: try harder to use LCStoreCDB
authorOri Livneh <ori@wikimedia.org>
Fri, 6 Nov 2015 01:27:47 +0000 (17:27 -0800)
committerOri Livneh <ori@wikimedia.org>
Fri, 6 Nov 2015 01:48:05 +0000 (17:48 -0800)
When the LocalisationCache class is set to 'detect', we prefer LCStoreCDB if
$wgCacheDirectory is set, but we default to LCStoreDB otherwise. Rather than
give up, we should try wfTempDir(), since any directory that meets its criteria
is also suitable for LCStoreCDB.

Change-Id: Id3e2d2b18ddb423647bf2e893bcf942722c0e097

includes/cache/LocalisationCache.php

index fa5e288..03841d6 100644 (file)
@@ -209,7 +209,17 @@ class LocalisationCache {
                                        $storeClass = 'LCStoreStaticArray';
                                        break;
                                case 'detect':
-                                       $storeClass = $wgCacheDirectory ? 'LCStoreCDB' : 'LCStoreDB';
+                                       if ( !empty( $conf['storeDirectory'] ) ) {
+                                               $storeClass = 'LCStoreCDB';
+                                       } else {
+                                               $cacheDir = $wgCacheDirectory ?: wfTempDir();
+                                               if ( $cacheDir ) {
+                                                       $storeConf['directory'] = $cacheDir;
+                                                       $storeClass = 'LCStoreCDB';
+                                               } else {
+                                                       $storeClass = 'LCStoreDB';
+                                               }
+                                       }
                                        break;
                                default:
                                        throw new MWException(