* stored anywhere else (e.g. a "hoard" of objects).
*
* The former should always use strongly consistent stores, so callers don't
- * have to deal with stale reads. The later may be eventually consistent, but
+ * have to deal with stale reads. The latter may be eventually consistent, but
* callers can use BagOStuff:READ_LATEST to see the latest available data.
*
* Primary entry points:
* Purpose: Ephemeral global storage.
* Stored centrally within the primary data-center.
* Changes are applied there first and replicated to other DCs (best-effort).
- * To retrieve the latest value (e.g. not from a slave), use BagOStuff::READ_LATEST.
+ * To retrieve the latest value (e.g. not from a replica DB), use BagOStuff::READ_LATEST.
* This store may be subject to LRU style evictions.
*
* - ObjectCache::getInstance( $cacheType )
$params['reportDupes'] = isset( $params['reportDupes'] )
? $params['reportDupes']
: true;
+ // Do b/c logic for SqlBagOStuff
+ if ( is_subclass_of( $class, SqlBagOStuff::class ) ) {
+ if ( isset( $params['server'] ) && !isset( $params['servers'] ) ) {
+ $params['servers'] = [ $params['server'] ];
+ unset( $param['server'] );
+ }
+ // In the past it was not required to set 'dbDirectory' in $wgObjectCaches
+ if ( isset( $params['servers'] ) ) {
+ foreach ( $params['servers'] as &$server ) {
+ if ( $server['type'] === 'sqlite' && !isset( $server['dbDirectory'] ) ) {
+ $server['dbDirectory'] = MediaWikiServices::getInstance()
+ ->getMainConfig()->get( 'SQLiteDataDir' );
+ }
+ }
+ }
+ }
+
// Do b/c logic for MemcachedBagOStuff
- if ( is_subclass_of( $class, 'MemcachedBagOStuff' ) ) {
+ if ( is_subclass_of( $class, MemcachedBagOStuff::class ) ) {
if ( !isset( $params['servers'] ) ) {
$params['servers'] = $GLOBALS['wgMemCachedServers'];
}
}
}
- try {
- // Make sure we actually have a DB backend before falling back to CACHE_DB
- MediaWikiServices::getInstance()->getDBLoadBalancer();
- $candidate = CACHE_DB;
- } catch ( ServiceDisabledException $e ) {
+ if ( MediaWikiServices::getInstance()->isServiceDisabled( 'DBLoadBalancer' ) ) {
// The LoadBalancer is disabled, probably because
// MediaWikiServices::disableStorageBackend was called.
$candidate = CACHE_NONE;
+ } else {
+ $candidate = CACHE_DB;
}
return self::getInstance( $candidate );
* ObjectCache::getLocalServerInstance( $fallbackType );
*
* // From $wgObjectCaches via newFromParams()
- * ObjectCache::getLocalServerInstance( array( 'fallback' => $fallbackType ) );
+ * ObjectCache::getLocalServerInstance( [ 'fallback' => $fallbackType ] );
*
* @param int|string|array $fallback Fallback cache or parameter map with 'fallback'
* @return BagOStuff
* @param array $params [optional] Array key 'fallback' for $fallback.
* @param int|string $fallback Fallback cache, e.g. (CACHE_NONE, "hash") (since 1.24)
* @return BagOStuff
- * @deprecated 1.27
+ * @deprecated since 1.27
*/
public static function newAccelerator( $params = [], $fallback = null ) {
if ( $fallback === null ) {