[10:37:47] + ulimit -n 512 [10:37:47] + LOCKFILE=/var/lock/scap.operations_mediawiki-config.lock [10:37:47] + '[' -O /var/lock/scap.operations_mediawiki-config.lock ']' [10:37:47] + /usr/bin/scap version [10:37:48] 4.261.0 [10:37:48] + /usr/bin/scap prep auto [10:37:49] 10:37:49 Started scap prep auto [10:37:49] 10:37:49 Update https://gerrit.wikimedia.org/r/operations/mediawiki-config (master branch) in /srv/mediawiki-staging [10:37:50] 10:37:50 https://gerrit.wikimedia.org/r/operations/mediawiki-config checked out at commit ee3d1b814a5c342eae33f6c35ab49ccc1bbfcc6e [10:37:51] 10:37:51 Update https://gerrit.wikimedia.org/r/mediawiki/core (master branch) in /srv/mediawiki-staging/php-master [10:37:53] 10:37:53 https://gerrit.wikimedia.org/r/mediawiki/core checked out at commit 1e11a4bda59a72773d69e00c53bdf1beb92ce451 [10:37:53] 10:37:53 Update https://gerrit.wikimedia.org/r/mediawiki/extensions (master branch) in /srv/mediawiki-staging/php-master/extensions [10:37:56] 10:37:56 Changes pulled down since last fetch: [10:37:56] commit 973c0422fee595f794b2cba4dccca15e11232835 [10:37:56] Author: RAJVEER42 [10:37:56] Date: Sat Jun 13 15:27:05 2026 +0530 [10:37:56] [10:37:56] Update git submodules [10:37:56] [10:37:56] * Update AbuseFilter from branch 'master' [10:37:56] to 79c8b8c2ebbfb068b55d7169ec3a709625cb5947 [10:37:56] - Inject CheckUserInsert into AbuseLogger via AbuseLoggerFactory [10:37:56] [10:37:56] Why: [10:37:56] - AbuseLogger reached for CheckUserInsert via [10:37:56] MediaWikiServices::getInstance() inside a deferred callback. That is [10:37:56] the static service-locator anti-pattern Matěj flagged on [10:37:56] I/d467d728 and Dreamy_Jazz reinforced on I85875d2 this week. [10:37:56] - The dependency is optional (only used when the CheckUser extension [10:37:56] is loaded), so it should be injected as a nullable service so the [10:37:56] class is explicit about its dependency and remains testable. [10:37:56] [10:37:56] What: [10:37:56] - AbuseLogger::__construct takes a nullable ?CheckUserInsert [10:37:56] parameter. ServiceWiring always passes either the service or null, [10:37:56] so the parameter has no default value. Inside the deferred [10:37:56] callback the service is captured via the closure's `use ( ... )` [10:37:56] clause; the callback returns early if the injected service is [10:37:56] null. The MediaWikiServices import is no longer needed and is [10:37:56] removed. [10:37:56] - AbuseLoggerFactory::__construct gains the same nullable parameter [10:37:56] and passes it through to AbuseLogger in newLogger(). [10:37:56] - ServiceWiring.php wires the optional service in the [10:37:56] AbuseLoggerFactory closure: pass the CheckUserInsert service when [10:37:56] it is registered in the container, null otherwise. The check uses [10:37:56] $services->has( 'CheckUserInsert' ) directly, rather than routing [10:37:56] through ExtensionRegistry::isLoaded( 'CheckUser' ). [10:37:56] - Update AbuseLoggerFactoryTest::testNewLogger() to match the new [10:37:56] constructor signature: pass null for the new CheckUserInsert [10:37:56] parameter so the unit test continues to construct the factory [10:37:56] successfully. [10:37:56] - No behaviour change: the outer [10:37:56] `ExtensionRegistry::isLoaded( 'CheckUser' )` check in [10:37:56] ::addLogEntries already guards this code path, so the new null [10:37:56] check inside the closure is defensive only. [10:37:56] [10:37:56] Change-Id: I5573f486421b76ce6c9c633abb6350b336ef4495 [10:37:56] [10:38:00] 10:38:00 https://gerrit.wikimedia.org/r/mediawiki/extensions checked out at commit 973c0422fee595f794b2cba4dccca15e11232835 [10:42:13] 10:42:13 Update https://gerrit.wikimedia.org/r/mediawiki/vendor (master branch) in /srv/mediawiki-staging/php-master/vendor [10:42:15] 10:42:15 https://gerrit.wikimedia.org/r/mediawiki/vendor checked out at commit be635f69a64e93fb8f72d5addb9505cf03cf1343 [10:42:15] 10:42:15 Update https://gerrit.wikimedia.org/r/mediawiki/skins (master branch) in /srv/mediawiki-staging/php-master/skins [10:42:16] 10:42:16 https://gerrit.wikimedia.org/r/mediawiki/skins checked out at commit 04d8f0aa6900259beb26c19cf1ee1100fdf4ea08 [10:42:30] 10:42:30 MediaWiki master successfully checked out. [10:42:30] 10:42:30 Finished scap prep auto (duration: 04m 40s) [10:42:30] + /usr/bin/scap sync-world 'wmf-beta-update-all run' [10:42:31] ___ ____ [10:42:31] ⎛ ⎛ ,---- [10:42:31] \ //==--' [10:42:31] _//|,.·//==--' ____________________________ [10:42:31] _OO≣=- ︶ ᴹw ⎞_§ ______ ___\ ___\ ,\__ \/ __ \ [10:42:31] (∞)_, ) ( | ______/__ \/ /__ / /_/ / /_/ / [10:42:31] ¨--¨|| |- ( / ______\____/ \___/ \__^_/ .__/ [10:42:31] ««_/ «_/ jgs/bd808 /_/ [10:42:31] [10:42:31] 10:42:31 Started scap sync-world: wmf-beta-update-all run [10:42:39] 10:42:39 Started cache_git_info [10:43:07] 10:43:07 Finished cache_git_info (duration: 00m 27s) [10:43:07] 10:43:07 Started l10n-update [10:43:14] 10:43:14 Updating ExtensionMessages-master.php [10:43:25] 10:43:25 Updating LocalisationCache for master using 2 thread(s) [10:43:25] 10:43:25 Running rebuildLocalisationCache.php (cdb) [10:43:39] 10:43:39 0 languages rebuilt out of 549 [10:43:39] 10:43:39 Use --force to rebuild the caches which are still fresh. [10:43:43] 10:43:43 Running rebuildLocalisationCache.php (php) [10:43:50] 10:43:50 0 languages rebuilt out of 549 [10:43:50] 10:43:50 Use --force to rebuild the caches which are still fresh. [10:43:53] 10:43:53 Generating JSON versions and md5 files (as www-data) [10:44:09] 10:44:09 Finished l10n-update (duration: 01m 01s) [10:44:09] 10:44:09 Checking for new runtime errors locally [10:44:13] 10:44:13 Started sync-canaries [10:44:13] 10:44:13 sync-canaries: 0% (ok: 0; fail: 0; left: 1) [10:44:25] 10:44:25 sync-canaries: 100% (in-flight: 0; ok: 1; fail: 0; left: 0) [10:44:25] 10:44:25 Per-host sync duration: average 11.5s, median 11.5s [10:44:25] 10:44:25 rsync transfer: average 457299 bytes/host, total 457299 bytes [10:44:25] 10:44:25 Started scap-cdb-rebuild-canaries [10:44:25] 10:44:25 scap-cdb-rebuild: 0% (ok: 0; fail: 0; left: 1) [10:44:27] 10:44:27 scap-cdb-rebuild: 100% (in-flight: 0; ok: 1; fail: 0; left: 0) [10:44:27] 10:44:27 Finished scap-cdb-rebuild-canaries (duration: 00m 02s) [10:44:27] 10:44:27 Started sync-wikiversions-canaries [10:44:27] 10:44:27 sync-wikiversions: 0% (ok: 0; fail: 0; left: 1) [10:44:28] 10:44:28 sync-wikiversions: 100% (in-flight: 0; ok: 1; fail: 0; left: 0) [10:44:28] 10:44:28 Finished sync-wikiversions-canaries (duration: 00m 00s) [10:44:28] 10:44:28 Started php-fpm-restarts-canaries [10:44:28] 10:44:28 Running '/usr/local/sbin/restart-php-fpm-all' on 1 host(s) [10:44:28] 10:44:28 php-fpm-restart: 0% (ok: 0; fail: 0; left: 0) [10:44:29] 10:44:29 php-fpm-restart: 100% (in-flight: 0; ok: 1; fail: 0; left: 0) [10:44:29] 10:44:29 Finished php-fpm-restarts-canaries (duration: 00m 00s) [10:44:29] 10:44:29 Finished sync-canaries (duration: 00m 15s) [10:44:29] 10:44:29 Waiting 20 seconds for canary traffic... [10:44:49] 10:44:49 Logstash checker counted 0 error(s) in the last 20 seconds. OK. [10:44:49] 10:44:49 Started sync-apaches [10:44:49] 10:44:49 sync-apaches: 0% (ok: 0; fail: 0; left: 3) [10:45:10] 10:45:10 sync-apaches: 100% (in-flight: 0; ok: 3; fail: 0; left: 0) [10:45:10] 10:45:10 Per-host sync duration: average 13.5s, median 9.8s [10:45:10] 10:45:10 rsync transfer: average 457299 bytes/host, total 1371897 bytes [10:45:10] 10:45:10 Finished sync-apaches (duration: 00m 21s) [10:45:10] 10:45:10 Waiting 20 seconds for production traffic... [10:45:30] 10:45:30 Logstash checker counted 0 error(s) in the last 20 seconds. OK. [10:45:30] 10:45:30 Started scap-cdb-rebuild-prod [10:45:30] 10:45:30 scap-cdb-rebuild: 0% (ok: 0; fail: 0; left: 4) [10:45:34] 10:45:34 scap-cdb-rebuild: 100% (in-flight: 0; ok: 4; fail: 0; left: 0) [10:45:34] 10:45:34 Finished scap-cdb-rebuild-prod (duration: 00m 03s) [10:45:34] 10:45:34 Started sync-wikiversions-prod [10:45:34] 10:45:34 sync-wikiversions: 0% (ok: 0; fail: 0; left: 4) [10:45:35] 10:45:35 sync-wikiversions: 100% (in-flight: 0; ok: 4; fail: 0; left: 0) [10:45:35] 10:45:35 Finished sync-wikiversions-prod (duration: 00m 00s) [10:45:35] 10:45:35 Started php-fpm-restarts-prod [10:45:35] 10:45:35 Running '/usr/local/sbin/restart-php-fpm-all' on 2 host(s) [10:45:35] 10:45:35 php-fpm-restart: 0% (ok: 0; fail: 0; left: 0) [10:45:36] 10:45:36 php-fpm-restart: 100% (in-flight: 0; ok: 2; fail: 0; left: 0) [10:45:36] 10:45:36 Finished php-fpm-restarts-prod (duration: 00m 01s) [10:45:36] 10:45:36 Running purgeMessageBlobStore.php [10:45:39] 10:45:39 Finished scap sync-world: wmf-beta-update-all run (duration: 03m 08s) [10:45:40] + /usr/local/bin/wmf-beta-update-databases.py