64 $type = get_class( $update )
66 $httpMethod =
MW_ENTRY_POINT ===
'cli' ?
'cli' : strtolower( $_SERVER[
'REQUEST_METHOD'] ??
'GET' );
67 $stats = MediaWikiServices::getInstance()->getStatsFactory();
68 $stats->getCounter(
'deferred_updates_total' )
69 ->setLabel(
'http_method', $httpMethod )
70 ->setLabel(
'type', $type )
73 $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
74 $ticket = $lbFactory->getEmptyTransactionTicket( __METHOD__ );
75 if ( !$ticket || $lbFactory->hasTransactionRound() ) {
80 $update->setTransactionTicket( $ticket );
84 $fnameTrxOwner = ( $update instanceof DeferrableCallback )
85 ? $update->getOrigin()
86 : get_class( $update ) .
'::doUpdate';
89 $useExplicitTrxRound = !(
90 $update instanceof TransactionRoundAwareUpdate &&
91 $update->getTransactionRoundRequirement() == $update::TRX_ROUND_ABSENT
93 if ( $useExplicitTrxRound ) {
95 $lbFactory->beginPrimaryChanges( $fnameTrxOwner );
98 $lbFactory->commitPrimaryChanges( $fnameTrxOwner );