- if ( $dbw->trxLevel() ) {
- $dbw->onTransactionResolution(
- function () use ( &$scopeLock ) {
- ScopedCallback::consume( $scopeLock ); // release after commit
- },
- __METHOD__
- );
- }
+ // The file deps list has changed, we want to update it.
+ $vary = $context->getSkin() . '|' . $context->getLanguage();
+ $cache = ObjectCache::getLocalClusterInstance();
+ $key = $cache->makeKey( __METHOD__, $this->getName(), $vary );
+ $scopeLock = $cache->getScopedLock( $key, 0 );
+ if ( !$scopeLock ) {
+ // Another request appears to be doing this update already.
+ // Avoid write slams (T124649).
+ return;
+ }
+
+ // No needless escaping as this isn't HTML output.
+ // Only stored in the database and parsed in PHP.
+ $deps = json_encode( $localPaths, JSON_UNESCAPED_SLASHES );
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->upsert( 'module_deps',
+ [
+ 'md_module' => $this->getName(),
+ 'md_skin' => $vary,
+ 'md_deps' => $deps,
+ ],
+ [ 'md_module', 'md_skin' ],
+ [
+ 'md_deps' => $deps,
+ ]
+ );
+
+ if ( $dbw->trxLevel() ) {
+ $dbw->onTransactionResolution(
+ function () use ( &$scopeLock ) {
+ ScopedCallback::consume( $scopeLock ); // release after commit
+ },
+ __METHOD__
+ );