Exemplo n.º 1
0
 /**
  * Ends this task peacefully
  * @param string $mode Use 'fast' to always skip job running
  */
 public function restInPeace($mode = 'fast')
 {
     $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
     // Assure deferred updates are not in the main transaction
     $lbFactory->commitMasterChanges(__METHOD__);
     // Loosen DB query expectations since the HTTP client is unblocked
     $trxProfiler = Profiler::instance()->getTransactionProfiler();
     $trxProfiler->resetExpectations();
     $trxProfiler->setExpectations($this->config->get('TrxProfilerLimits')['PostSend'], __METHOD__);
     // Do any deferred jobs
     DeferredUpdates::doUpdates('enqueue');
     DeferredUpdates::setImmediateMode(true);
     // Make sure any lazy jobs are pushed
     JobQueueGroup::pushLazyJobs();
     // Now that everything specific to this request is done,
     // try to occasionally run jobs (if enabled) from the queues
     if ($mode === 'normal') {
         $this->triggerJobs();
     }
     // Log profiling data, e.g. in the database or UDP
     wfLogProfilingData();
     // Commit and close up!
     $lbFactory->commitMasterChanges(__METHOD__);
     $lbFactory->shutdown(LBFactory::SHUTDOWN_NO_CHRONPROT);
     wfDebug("Request ended normally\n");
 }