Cleaned up CAS check in RevDelLogItem::setBits for recentchanges
authorAaron Schulz <aschulz@wikimedia.org>
Fri, 22 May 2015 23:39:05 +0000 (16:39 -0700)
committerUmherirrender <umherirrender_de.wp@web.de>
Sat, 23 May 2015 18:53:45 +0000 (18:53 +0000)
Change-Id: I6c29653361a0937489c27891739a9dc626c20167

includes/revisiondelete/RevDelLogItem.php
includes/revisiondelete/RevDelRevisionItem.php

index 49adf20..5c83107 100644 (file)
@@ -53,6 +53,21 @@ class RevDelLogItem extends RevDelItem {
 
        public function setBits( $bits ) {
                $dbw = wfGetDB( DB_MASTER );
+
+               $dbw->update( 'logging',
+                       array( 'log_deleted' => $bits ),
+                       array(
+                               'log_id' => $this->row->log_id,
+                               'log_deleted' => $this->getBits() // cas
+                       ),
+                       __METHOD__
+               );
+
+               if ( !$dbw->affectedRows() ) {
+                       // Concurrent fail!
+                       return false;
+               }
+
                $dbw->update( 'recentchanges',
                        array(
                                'rc_deleted' => $bits,
@@ -64,16 +79,8 @@ class RevDelLogItem extends RevDelItem {
                        ),
                        __METHOD__
                );
-               $dbw->update( 'logging',
-                       array( 'log_deleted' => $bits ),
-                       array(
-                               'log_id' => $this->row->log_id,
-                               'log_deleted' => $this->getBits()
-                       ),
-                       __METHOD__
-               );
 
-               return (bool)$dbw->affectedRows();
+               return true;
        }
 
        public function getHTML() {
index 300ce6a..17e1fd1 100644 (file)
@@ -67,7 +67,7 @@ class RevDelRevisionItem extends RevDelItem {
                        array(
                                'rev_id' => $this->revision->getId(),
                                'rev_page' => $this->revision->getPage(),
-                               'rev_deleted' => $this->getBits()
+                               'rev_deleted' => $this->getBits() // cas
                        ),
                        __METHOD__
                );