* @param array $args
*/
private function forEachLBCallMethod( $methodName, array $args = array() ) {
- $this->forEachLB( function ( LoadBalancer $loadBalancer, $methodName, array $args ) {
- call_user_func_array( array( $loadBalancer, $methodName ), $args );
- }, array( $methodName, $args ) );
+ $this->forEachLB(
+ function ( LoadBalancer $loadBalancer, $methodName, array $args ) {
+ call_user_func_array( array( $loadBalancer, $methodName ), $args );
+ },
+ array( $methodName, $args )
+ );
}
/**
* Commit on all connections. Done for two reasons:
* 1. To commit changes to the masters.
* 2. To release the snapshot on all connections, master and slave.
+ * @param string $fname Caller name
*/
- public function commitAll() {
- $this->forEachLBCallMethod( 'commitAll' );
+ public function commitAll( $fname = __METHOD__ ) {
+ $start = microtime( true );
+ $this->forEachLBCallMethod( 'commitAll', array( $fname ) );
+ $timeMs = 1000 * ( microtime( true ) - $start );
+
+ RequestContext::getMain()->getStats()->timing( "db.commit-all", $timeMs );
}
/**
* Commit changes on all master connections
+ * @param string $fname Caller name
*/
- public function commitMasterChanges() {
+ public function commitMasterChanges( $fname = __METHOD__ ) {
$start = microtime( true );
- $this->forEachLBCallMethod( 'commitMasterChanges' );
+ $this->forEachLBCallMethod( 'commitMasterChanges', array( $fname ) );
$timeMs = 1000 * ( microtime( true ) - $start );
+
RequestContext::getMain()->getStats()->timing( "db.commit-masters", $timeMs );
}
/**
* Rollback changes on all master connections
+ * @param string $fname Caller name
* @since 1.23
*/
- public function rollbackMasterChanges() {
- $this->forEachLBCallMethod( 'rollbackMasterChanges' );
+ public function rollbackMasterChanges( $fname = __METHOD__ ) {
+ $this->forEachLBCallMethod( 'rollbackMasterChanges', array( $fname ) );
}
/**
/**
* Commit transactions on all open connections
+ * @param string $fname Caller name
*/
- public function commitAll() {
+ public function commitAll( $fname = __METHOD__ ) {
foreach ( $this->mConns as $conns2 ) {
foreach ( $conns2 as $conns3 ) {
/** @var DatabaseBase[] $conns3 */
foreach ( $conns3 as $conn ) {
if ( $conn->trxLevel() ) {
- $conn->commit( __METHOD__, 'flush' );
+ $conn->commit( $fname, 'flush' );
}
}
}
}
/**
- * Issue COMMIT only on master, only if queries were done on connection
+ * Issue COMMIT only on master, only if queries were done on connection
+ * @param string $fname Caller name
*/
- public function commitMasterChanges() {
+ public function commitMasterChanges( $fname = __METHOD__ ) {
$masterIndex = $this->getWriterIndex();
foreach ( $this->mConns as $conns2 ) {
if ( empty( $conns2[$masterIndex] ) ) {
/** @var DatabaseBase $conn */
foreach ( $conns2[$masterIndex] as $conn ) {
if ( $conn->trxLevel() && $conn->writesOrCallbacksPending() ) {
- $conn->commit( __METHOD__, 'flush' );
+ $conn->commit( $fname, 'flush' );
}
}
}
/**
* Issue ROLLBACK only on master, only if queries were done on connection
+ * @param string $fname Caller name
+ * @throws DBExpectedError
* @since 1.23
*/
- public function rollbackMasterChanges() {
+ public function rollbackMasterChanges( $fname = __METHOD__ ) {
$failedServers = array();
$masterIndex = $this->getWriterIndex();
foreach ( $conns2[$masterIndex] as $conn ) {
if ( $conn->trxLevel() && $conn->writesOrCallbacksPending() ) {
try {
- $conn->rollback( __METHOD__, 'flush' );
+ $conn->rollback( $fname, 'flush' );
} catch ( DBError $e ) {
MWExceptionHandler::logException( $e );
$failedServers[] = $conn->getServer();