}
$dbw = wfGetDB( DB_MASTER );
+ # Avoid excess contention on the same category (T162121)
+ $name = __METHOD__ . ':' . md5( $this->mName );
+ $scopedLock = $dbw->getScopedLockAndFlush( $name, __METHOD__, 1 );
+ if ( !$scopedLock ) {
+ return;
+ }
+
$dbw->startAtomic( __METHOD__ );
$cond1 = $dbw->conditional( [ 'page_namespace' => NS_CATEGORY ], 1, 'NULL' );
// to refresh the incorrect category table entry -- which should be
// quick due to the small number of entries.
$totalcnt = $rescnt;
- $category = $this->cat;
- DeferredUpdates::addCallableUpdate( function () use ( $category ) {
- # Avoid excess contention on the same category (T162121)
- $dbw = wfGetDB( DB_MASTER );
- $name = __METHOD__ . ':' . md5( $this->mName );
- $scopedLock = $dbw->getScopedLockAndFlush( $name, __METHOD__, 1 );
- if ( $scopedLock ) {
- $category->refreshCounts();
- }
- } );
+ DeferredUpdates::addCallableUpdate( [ $this->cat, 'refreshCounts' ] );
} else {
// Case 3: hopeless. Don't give a total count at all.
// Messages: category-subcat-count-limited, category-article-count-limited,