Pass Job success status to teardown callbacks
authorGergő Tisza <gtisza@wikimedia.org>
Wed, 5 Oct 2016 01:16:56 +0000 (01:16 +0000)
committerAaron Schulz <aschulz@wikimedia.org>
Wed, 5 Oct 2016 02:55:45 +0000 (02:55 +0000)
Change-Id: Icf2e03efcfd9232fe4ead776096b61cef1c06141

includes/jobqueue/Job.php
includes/jobqueue/JobRunner.php

index bbd0ddb..f814cee 100644 (file)
@@ -301,7 +301,9 @@ abstract class Job implements IJobSpecification {
        }
 
        /**
-        * @param callable $callback
+        * @param callable $callback A function with one parameter, the success status, which will be
+        *   false if the job failed or it succeeded but the DB changes could not be committed or
+        *   any deferred updates threw an exception. (This parameter was added in 1.28.)
         * @since 1.27
         */
        protected function addTeardownCallback( $callback ) {
@@ -310,12 +312,12 @@ abstract class Job implements IJobSpecification {
 
        /**
         * Do any final cleanup after run(), deferred updates, and all DB commits happen
-        *
+        * @param bool $status Whether the job, its deferred updates, and DB commit all succeeded
         * @since 1.27
         */
-       public function teardown() {
+       public function teardown( $status ) {
                foreach ( $this->teardownCallbacks as $callback ) {
-                       call_user_func( $callback );
+                       call_user_func( $callback, $status );
                }
        }
 
index ed3aa9a..84ded8d 100644 (file)
@@ -283,7 +283,7 @@ class JobRunner implements LoggerAwareInterface {
                }
                // Always attempt to call teardown() even if Job throws exception.
                try {
-                       $job->teardown();
+                       $job->teardown( $status );
                } catch ( Exception $e ) {
                        MWExceptionHandler::logException( $e );
                }