Merge "Remove text shadow from default mediawiki.ui buttons"
[lhc/web/wiklou.git] / includes / ChangeTags.php
index 3818c96..28db8a1 100644 (file)
@@ -101,21 +101,20 @@ class ChangeTags {
                                'specified when adding a tag to a change!' );
                }
 
-               $dbr = wfGetDB( DB_SLAVE );
+               $dbw = wfGetDB( DB_MASTER );
 
                // Might as well look for rcids and so on.
                if ( !$rc_id ) {
                        // Info might be out of date, somewhat fractionally, on slave.
-                       $dbr = wfGetDB( DB_MASTER );
                        if ( $log_id ) {
-                               $rc_id = $dbr->selectField(
+                               $rc_id = $dbw->selectField(
                                        'recentchanges',
                                        'rc_id',
                                        array( 'rc_logid' => $log_id ),
                                        __METHOD__
                                );
                        } elseif ( $rev_id ) {
-                               $rc_id = $dbr->selectField(
+                               $rc_id = $dbw->selectField(
                                        'recentchanges',
                                        'rc_id',
                                        array( 'rc_this_oldid' => $rev_id ),
@@ -124,14 +123,13 @@ class ChangeTags {
                        }
                } elseif ( !$log_id && !$rev_id ) {
                        // Info might be out of date, somewhat fractionally, on slave.
-                       $dbr = wfGetDB( DB_MASTER );
-                       $log_id = $dbr->selectField(
+                       $log_id = $dbw->selectField(
                                'recentchanges',
                                'rc_logid',
                                array( 'rc_id' => $rc_id ),
                                __METHOD__
                        );
-                       $rev_id = $dbr->selectField(
+                       $rev_id = $dbw->selectField(
                                'recentchanges',
                                'rc_this_oldid',
                                array( 'rc_id' => $rc_id ),
@@ -146,7 +144,9 @@ class ChangeTags {
                );
 
                ## Update the summary row.
-               $prevTags = $dbr->selectField( 'tag_summary', 'ts_tags', $tsConds, __METHOD__ );
+               // $prevTags can be out of date on slaves, especially when addTags is called consecutively,
+               // causing loss of tags added recently in tag_summary table.
+               $prevTags = $dbw->selectField( 'tag_summary', 'ts_tags', $tsConds, __METHOD__ );
                $prevTags = $prevTags ? $prevTags : '';
                $prevTags = array_filter( explode( ',', $prevTags ) );
                $newTags = array_unique( array_merge( $prevTags, $tags ) );
@@ -158,7 +158,6 @@ class ChangeTags {
                        return false;
                }
 
-               $dbw = wfGetDB( DB_MASTER );
                $dbw->replace(
                        'tag_summary',
                        array( 'ts_rev_id', 'ts_rc_id', 'ts_log_id' ),
@@ -297,7 +296,7 @@ class ChangeTags {
         *
         * Tries memcached first.
         *
-        * @return array Array of strings: tags
+        * @return string[] Array of strings: tags
         */
        public static function listDefinedTags() {
                // Caching...