}
/**
- * Add a callable update. In a lot of cases, we just need a callback/closure,
+ * Add a callable update. In a lot of cases, we just need a callback/closure,
* defining a new DeferrableUpdate object is not necessary
*
* @see MWCallableUpdate::__construct()
* @param integer $type DeferredUpdates constant (PRESEND or POSTSEND) (since 1.27)
*/
public static function addCallableUpdate( $callable, $type = self::POSTSEND ) {
- self::addUpdate( new MWCallableUpdate( $callable ), $type );
+ self::addUpdate( new MWCallableUpdate( $callable, wfGetCaller() ), $type );
}
/**
}
public static function execute( array &$queue, $mode ) {
- $updates = $queue; // snapshot of queue
+ $stats = \MediaWiki\MediaWikiServices::getInstance()->getStatsdDataFactory();
+ $method = RequestContext::getMain()->getRequest()->getMethod();
+ $updates = $queue; // snapshot of queue
// Keep doing rounds of updates until none get enqueued
while ( count( $updates ) ) {
$queue = []; // clear the queue
} else {
$otherUpdates[] = $update;
}
+
+ $name = $update instanceof DeferrableCallback
+ ? get_class( $update ) . '-' . $update->getOrigin()
+ : get_class( $update );
+ $stats->increment( 'deferred_updates.' . $method . '.' . $name );
}
// Delegate DataUpdate execution to the DataUpdate class