Merge "Converted User object cache to the WAN cache"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 18 May 2015 06:38:06 +0000 (06:38 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 18 May 2015 06:38:06 +0000 (06:38 +0000)
1  2 
includes/User.php

diff --combined includes/User.php
@@@ -410,15 -410,14 +410,14 @@@ class User implements IDBAccessObject 
         * @since 1.25
         */
        protected function loadFromCache() {
-               global $wgMemc;
                if ( $this->mId == 0 ) {
                        $this->loadDefaults();
                        return false;
                }
  
+               $cache = ObjectCache::getMainWANInstance();
                $key = wfMemcKey( 'user', 'id', $this->mId );
-               $data = $wgMemc->get( $key );
+               $data = $cache->get( $key );
                if ( !is_array( $data ) || $data['mVersion'] < self::VERSION ) {
                        // Object is expired
                        return false;
         * This method should not be called outside the User class
         */
        public function saveToCache() {
-               global $wgMemc;
                $this->load();
                $this->loadGroups();
                $this->loadOptions();
                        return;
                }
  
+               $cache = ObjectCache::getMainWANInstance();
                // The cache needs good consistency due to its high TTL, so the user
                // should have been loaded from the master to avoid lag amplification.
                if ( !( $this->queryFlagsUsed & self::READ_LATEST ) ) {
                $data['mVersion'] = self::VERSION;
                $key = wfMemcKey( 'user', 'id', $this->mId );
  
-               $wgMemc->set( $key, $data );
+               $cache->set( $key, $data );
        }
  
        /** @name newFrom*() static factory methods */
         *   page. Ignored if null or !$val.
         */
        public function setNewtalk( $val, $curRev = null ) {
 -              global $wgMemc;
 -
                if ( wfReadOnly() ) {
                        return;
                }
                        $changed = $this->deleteNewtalk( $field, $id );
                }
  
 -              if ( $this->isAnon() ) {
 -                      // Anons have a separate memcached space, since
 -                      // user records aren't kept for them.
 -                      $key = wfMemcKey( 'newtalk', 'ip', $id );
 -                      $wgMemc->set( $key, $val ? 1 : 0, 1800 );
 -              }
                if ( $changed ) {
                        $this->invalidateCache();
                }
         * Called implicitly from invalidateCache() and saveSettings().
         */
        public function clearSharedCache() {
-               global $wgMemc;
                $this->load();
                if ( $this->mId ) {
-                       $wgMemc->delete( wfMemcKey( 'user', 'id', $this->mId ) );
+                       $cache = ObjectCache::getMainWANInstance();
+                       $cache->delete( wfMemcKey( 'user', 'id', $this->mId ) );
                }
        }
  
         * @since 1.25
         */
        public function touch() {
 -              global $wgMemc;
 -
                $this->load();
  
                if ( $this->mId ) {
 +                      $this->mQuickTouched = $this->newTouchedTimestamp();
 +
 +                      $cache = ObjectCache::getMainWANInstance();
                        $key = wfMemcKey( 'user-quicktouched', 'id', $this->mId );
 -                      $timestamp = $this->newTouchedTimestamp();
 -                      $wgMemc->set( $key, $timestamp );
 -                      $this->mQuickTouched = $timestamp;
 +                      $cache->touchCheckKey( $key );
                }
        }
  
         * @return string TS_MW Timestamp
         */
        public function getTouched() {
 -              global $wgMemc;
 -
                $this->load();
  
                if ( $this->mId ) {
                        if ( $this->mQuickTouched === null ) {
 +                              $cache = ObjectCache::getMainWANInstance();
                                $key = wfMemcKey( 'user-quicktouched', 'id', $this->mId );
 -                              $timestamp = $wgMemc->get( $key );
 +
 +                              $timestamp = $cache->getCheckKeyTime( $key );
                                if ( $timestamp ) {
 -                                      $this->mQuickTouched = $timestamp;
 +                                      $this->mQuickTouched = wfTimestamp( TS_MW, $timestamp );
                                } else {
                                        # Set the timestamp to get HTTP 304 cache hits
                                        $this->touch();
                        $force = 'force';
                }
  
 -              $this->getWatchedItem( $title )->resetNotificationTimestamp( $force, $oldid );
 +              $this->getWatchedItem( $title )->resetNotificationTimestamp(
 +                      $force, $oldid, WatchedItem::DEFERRED
 +              );
        }
  
        /**