Merge "CologneBlue rewrite: remove hard dependency on SkinLegacy, kill Quickbar nonsense"
[lhc/web/wiklou.git] / includes / job / Job.php
index fcf5ca8..270671e 100644 (file)
@@ -151,17 +151,21 @@ abstract class Job {
 
                // Try to delete it from the master
                $dbw = wfGetDB( DB_MASTER );
+               $dbw->begin( __METHOD__ );
                $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
                $affected = $dbw->affectedRows();
                $dbw->commit( __METHOD__ );
 
                if ( !$affected ) {
+                       $dbw->begin( __METHOD__ );
+
                        // Failed, someone else beat us to it
                        // Try getting a random row
-                       $row = $dbw->selectRow( 'job', array( 'MIN(job_id) as minjob',
-                               'MAX(job_id) as maxjob' ), '1=1', __METHOD__ );
+                       $row = $dbw->selectRow( 'job', array( 'minjob' => 'MIN(job_id)',
+                               'maxjob' => 'MAX(job_id)' ), '1=1', __METHOD__ );
                        if ( $row === false || is_null( $row->minjob ) || is_null( $row->maxjob ) ) {
                                // No jobs to get
+                               $dbw->rollback( __METHOD__ );
                                wfProfileOut( __METHOD__ );
                                return false;
                        }
@@ -171,6 +175,7 @@ abstract class Job {
                        if ( $row === false ) {
                                // Random job gone before we got the chance to select it
                                // Give up
+                               $dbw->rollback( __METHOD__ );
                                wfProfileOut( __METHOD__ );
                                return false;
                        }
@@ -403,6 +408,7 @@ abstract class Job {
 
                $fields = $this->insertFields();
                unset( $fields['job_id'] );
+               unset( $fields['job_timestamp'] );
                $dbw = wfGetDB( DB_MASTER );
                $dbw->begin( __METHOD__ );
                $dbw->delete( 'job', $fields, __METHOD__ );