What is the problem?
When a user opens a page to edit, this can trigger autoblocks to be created or updated. But, because it is a GET request, we get warnings in the logs of the form:
[rdbms] Expectation (writes <= 0) by MediaWiki\Actions\ActionEntryPoint::execute not met (actual: 1) in trx #95a6ecc310:
role-primary: UPDATE `block` SET bl_timestamp = '?',bl_expiry = '?' WHERE bl_id = '?'
#0 /var/www/html/w/includes/libs/rdbms/TransactionProfiler.php(359): Wikimedia\Rdbms\TransactionProfiler->reportExpectationViolated()
#1 /var/www/html/w/includes/libs/rdbms/database/TransactionManager.php(574): Wikimedia\Rdbms\TransactionProfiler->recordQueryCompletion()
#2 /var/www/html/w/includes/libs/rdbms/database/Database.php(858): Wikimedia\Rdbms\TransactionManager->recordQueryCompletion()
#3 /var/www/html/w/includes/libs/rdbms/database/Database.php(711): Wikimedia\Rdbms\Database->attemptQuery()
#4 /var/www/html/w/includes/libs/rdbms/database/Database.php(638): Wikimedia\Rdbms\Database->executeQuery()
#5 /var/www/html/w/includes/libs/rdbms/database/Database.php(1518): Wikimedia\Rdbms\Database->query()
#6 /var/www/html/w/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\Rdbms\Database->update()
#7 /var/www/html/w/includes/libs/rdbms/database/DBConnRef.php(413): Wikimedia\Rdbms\DBConnRef->__call()
#8 /var/www/html/w/includes/libs/rdbms/querybuilder/UpdateQueryBuilder.php(332): Wikimedia\Rdbms\DBConnRef->update()
#9 /var/www/html/w/includes/block/DatabaseBlockStore.php(1608): Wikimedia\Rdbms\UpdateQueryBuilder->execute()
#10 /var/www/html/w/includes/block/DatabaseBlockStore.php(1536): MediaWiki\Block\DatabaseBlockStore->updateTimestamp()
#11 /var/www/html/w/includes/user/User.php(2716): MediaWiki\Block\DatabaseBlockStore->doAutoblock()
#12 /var/www/html/w/includes/user/User.php(2694): MediaWiki\User\User->spreadBlock()
#13 /var/www/html/w/includes/editpage/EditPage.php(687): MediaWiki\User\User->spreadAnyEditBlock()
#14 /var/www/html/w/includes/deferred/MWCallableUpdate.php(52): MediaWiki\EditPage\EditPage::MediaWiki\EditPage\{closure}()
#15 /var/www/html/w/includes/deferred/DeferredUpdates.php(459): MediaWiki\Deferred\MWCallableUpdate->doUpdate()
#16 /var/www/html/w/includes/deferred/DeferredUpdates.php(201): MediaWiki\Deferred\DeferredUpdates::attemptUpdate()
#17 /var/www/html/w/includes/deferred/DeferredUpdates.php(288): MediaWiki\Deferred\DeferredUpdates::run()
#18 /var/www/html/w/includes/deferred/DeferredUpdatesScope.php(243): MediaWiki\Deferred\DeferredUpdates::MediaWiki\Deferred\{closure}()
#19 /var/www/html/w/includes/deferred/DeferredUpdatesScope.php(172): MediaWiki\Deferred\DeferredUpdatesScope->processStageQueue()
#20 /var/www/html/w/includes/deferred/DeferredUpdates.php(307): MediaWiki\Deferred\DeferredUpdatesScope->processUpdates()
#21 /var/www/html/w/includes/MediaWikiEntryPoint.php(306): MediaWiki\Deferred\DeferredUpdates::doUpdates()
#22 /var/www/html/w/includes/MediaWikiEntryPoint.php(191): MediaWiki\MediaWikiEntryPoint->commitMainTransaction()
#23 /var/www/html/w/includes/actions/ActionEntryPoint.php(206): MediaWiki\MediaWikiEntryPoint->doPrepareForOutput()
#24 /var/www/html/w/includes/MediaWikiEntryPoint.php(174): MediaWiki\Actions\ActionEntryPoint->doPrepareForOutput()
#25 /var/www/html/w/includes/actions/ActionEntryPoint.php(153): MediaWiki\MediaWikiEntryPoint->prepareForOutput()
#26 /var/www/html/w/includes/MediaWikiEntryPoint.php(202): MediaWiki\Actions\ActionEntryPoint->execute()
#27 /var/www/html/w/index.php(58): MediaWiki\MediaWikiEntryPoint->run()
#28 {main}
[rdbms] MediaWiki\Block\DatabaseBlockStore::updateTimestamp [0.155ms] mariadb-main: UPDATE `block` SET bl_timestamp = '20250415142748',bl_expiry = '20250416142748' WHERE bl_id = 936I am surprised this bug has not already been raised (I couldn't find one when I searched). It must have existed for a while.
Steps to reproduce problem
- Block a user, with the autoblock checkbox checked
- Login as that user and attempt to edit a page
- Check in the logs for the wiki (on my local docker wiki this is cache/mw-debug-web.log)
Expected behaviour: Don't see a warning.
Observed behaviour: See a warning like Expectation (writes <= 0) by MediaWiki\Actions\ActionEntryPoint::execute not met.
Environment
Wiki(s): local docker MediaWiki 1.44.0-alpha (c8ddfa4) 07:05, 15 April 2025.
Derived Requirement
Ensure that no database write operations (e.g., autoblock timestamp updates) are triggered during GET requests when a blocked user attempts to edit a page. This prevents warnings like *"Expectation (writes <= 0) by MediaWiki\Actions\ActionEntryPoint::execute not met"* from appearing in logs.
Test Result - Beta|Prod
Status: ✅ PASS / ❓Need More Info / ❌ FAIL
Environment: beta
OS: macOS Sequoia 15.6
Browser: Chrome 136
Device: MBA
Emulated Device: NA
Test Artifact(s):
Test Steps
Test Case 1: Ensure no write is triggered during GET request for blocked user editing a page
*Preconditions:*
- User A is blocked with autoblock enabled.
- As User A, attempt to edit any page using the "Edit" link (triggers a GET request).
- Check the server log file (mw-debug-web.log) or the equivalent application log.
- ✅❓❌⬜ AC1: Confirm that there is no log warning stating Expectation (writes <= 0) by MediaWiki\Actions\ActionEntryPoint::execute not met.
QA Results - Local
| AC | Status | Details |
|---|---|---|
| 1 | ✅ | T391980#10877749 |



