Page MenuHomePhabricator

[M] Investigate: Which workflows create an IP actor?
Closed, ResolvedPublic

Description

Background

As outlined in T349129: [Epic] Workflows that create an IP (anon) actor should create a temporary user actor instead, any workflow that could cause an IP actor to be created should be updated to create a temporary user instead.

We should try to get an idea of what workflows exist that could be affected.

Known examples:

  • UploadBase (core)
  • ApiSetClaim (Wikibase extension)

This is similar to our previous work finding callers of certain functions that might be affected: T326759: Investigate: Which WMF deployed code might be affected by IP Masking?. What we found enabled us to start filing tasks, which was appreciated by other teams. With what we find here, we can file some subtasks to T349129 and tag relevant teams.

What needs doing
  • Come up with a strategy to find these workflows (e.g. those that end up calling ActorStore::acquireActorId?)
  • Apply the strategy to find a list of workflows
  • Include the relevant actions/rights - e.g. 'upload' for uploading, 'edit' for ApiSetClaim. (These will need adding to $wgAutoCreateTempUser['actions'], and will help us prioritise the work. If anons have the related right, then it's more of a priority.)
  • Search all MW deployed code
What doesn't need doing
  • It's OK if the list is not exhaustive
  • Tasks can be filed as a follow-up to this task, not as a prerequisite for this task being complete

Related Objects

Event Timeline

Tchanders renamed this task from Investigate: Which workflows create an IP actor? to [M] Investigate: Which workflows create an IP actor?.Oct 30 2023, 4:24 PM
Scope
  • We want to flag/fix workflows that currently (in WMF production) create IP actors
  • Workflows that would create IP actors with very unlikely configuration are outside of the scope (e.g. $wgGroupPermissions['*']['checkuser'] = true)
  • After this, if future code encounters the error, the responsibility is on the authors of that code to avoid the error
Assumptions
  1. All actors that are created are created by the ActorStore
  2. Each new actor for insertion is validated first
Method
  • Use https://codesearch.wmcloud.org/deployed/ for searching code
  • Find callers of the private method ActorStore::validateActorForInsertion
  • These are ActorStore::acquireActorId, ActorStore::createNewActor, ActorStore::acquireSystemActorId. All are public. ActorStore::acquireSystemActorId shouldn't need further investigation since system actors won't be named after IP addresses.
  • Search for calls to acquireActorId and createNewActor.

createNewActor

Summary: Some tests may need updating, but otherwise no workflows should be affected.

  • ActorStore::createNewActor called by:
    • User::createNew (static) called by:
      • tests
    • tests

acquireActorId

Summary: We need another round of searching for callers of some of the functions below, and we need answers to the questions below.

core:

  • DatabaseBlockStore::getArrayForBlockUpdate and ::getArrayForAutoblockUpdate
    • Both are in case the user performing the block doesn't have an actor (in the case of cross-wiki blocks made by a user from another wiki). Would only encounter the error if IP addresses were given the right to block. We don't need to defend against that so nothing to do here.
  • RecentChange::save
    • Search for callers
  • LocalFile::recordUpload3
    • Search for callers
  • OldLocalFile::recordOldUpload (protected) called by
    • OldLocalFile::uploadOld
      • Search for callers
  • LogPage::saveContent (protected) called by:
    • LogPage::addEntry
      • Search for callers
    • nothing extends LogPage
  • ManualLogEntry::insert
    • Search for callers
  • RollbackPage::updateRecentChange (private) called by:
    • RollbackPage::rollback
      • Search for callers
  • ActorMigration::getInsertValues (deprecated)
    • Search for callers
  • ActorStore::getUnknownActor
    • Special case for 'unknown user' actor. No further investigation needed, since this is not an IP actor.
  • User::getActorId
    • Search for callers
  • User::addToDatabase
    • Search for callers
  • maintenance/findMissingActors
    • Could this legitimately create new IP actors when temp accounts are enabled?
  • maintenance/reassignEdits
    • Could this legitimately create new IP actors when temp accounts are enabled?
  • tests

CheckUser:

  • Hooks::insertIntoCuLogEventTable (private) called by:
    • Hooks::updateCheckUserData
      • Should the actor already have been made when making the log entry?
  • Hooks::insertIntoCuPrivateEventTable (private) and Hooks::insertIntoCuChangesTable called by:
    • Hooks::updateCheckUserData
    • Hooks::onUser__mailPasswordInternal
    • Hooks::onEmailUser
    • Hooks::onLocalUserCreated
    • Hooks::onAuthManagerLoginAuthenticateAudit
    • Hooks::onUserLogoutComplete
      • Email shouldn't be affected, since IP users can't email
      • Logging in/out and user-creation: is the actor the logged in or logged out user?
  • CheckUserLogService::addLogEntry
    • This shouldn't add a new actor, and not an IP actor unless IP actors can use CheckUser. We don't need to account for this. Also, this throws an error before the user is shown the data. What we don't want is for a user to perform a check but not be logged.
  • tests

MediaModeration:

  • tests

Thanks:

  • LogStore::haveThanked
    • This shouldn't create an actor for an IP user, since the thanking user can't be an IP user (see ApiThanks::dieOnBadUser)

After a further round of digging:

  • This will need automating to get a useful answer, even to get an incomplete useful answer. We're sort of asking the question: "What is every way in which a user could meaningfully change a wiki, and which of those can anons do?"
  • Trying to answer this by looking at permissions won't work that well, because the examples we found for Wikidata use the "edit" permission: T340540

Progress on automating it:

  • We can start from ActorStore::validateActorForInsertion and get a tree of all callers, callers of callers, etc, but it will be very dense and eventually end up at very general, uninteresting callers
  • It needs some human judgement, e.g. from some brief digging, once I can see that we're looking at uploading or importing, or something else an anon user can't do in production, I know we don't need to look any further down that branch.
  • I looked into some tools that can do this, and briefly settled on Phan. I adapted a rough plugin to output names of all callers of certain methods, and could run this in several rounds, with manual pruning in between.
  • I'll also have a look at if we can use Doxygen's caller graphs, (i.e. if we can filter it easily enough): https://www.doxygen.nl/manual/config.html#cfg_caller_graph

Method

I used the Phan approach from T349219#9396126:

  • Adapt an existing draft Phan plugin to output the callers of specific methods we're interested in from T349219#9388250
  • Run it on core plus all deployed extensions as defined by make-release
  • Look over the outputted list, and add in further callees of interest
  • Iterate

Why I used this approach:

  • Why Phan? It's already set up to analyze MW.
  • Why not specific caller graph software? I didn't find anything that looked like it would handle this out-of-the-box (recommendations welcome for future reference, though I think Phan was good enough this time)
  • Why not Doxygen? Doxygen did output some caller graphs, but not for the functions we're interested in (they cite imperfections in their code parser)

Results

Full list of callers:

\AbuseFilterCreateAccountTestTrait::createAccount \ManualLogEntry::insert extensions/AbuseFilter/tests/phpunit/AbuseFilterCreateAccountTestTrait.php:56
\AbuseFilterCreateAccountTestTrait::createAccount \ManualLogEntry::publish extensions/AbuseFilter/tests/phpunit/AbuseFilterCreateAccountTestTrait.php:57
\AbuseFilterCreateAccountTestTrait::createAccount \MediaWiki\User\User::addToDatabase extensions/AbuseFilter/tests/phpunit/AbuseFilterCreateAccountTestTrait.php:45
\ApiBounceHandlerTest::testBounceHandlerWithGoodIPPasses \MediaWiki\User\User::addToDatabase extensions/BounceHandler/tests/phpunit/ApiBounceHandlerTest.php:33
\Babel\Tests\BabelTest::addDBDataOnce \MediaWiki\User\User::addToDatabase extensions/Babel/tests/phpunit/BabelTest.php:30
\BlockDisabledAccounts::doBlockAndLog \ManualLogEntry::insert extensions/WikimediaMaintenance/blockDisabledAccounts.php:119
\BlockDisabledAccounts::doBlockAndLog \ManualLogEntry::publish extensions/WikimediaMaintenance/blockDisabledAccounts.php:120
\CategoryMembershipChange::getUser \MediaWiki\User\User::addToDatabase includes/changes/CategoryMembershipChange.php:236
\CentralAuthTestUser::save \MediaWiki\User\User::addToDatabase extensions/CentralAuth/tests/phpunit/CentralAuthTestUser.php:190
\ChangeTags::updateTagsWithChecks \ManualLogEntry::insert includes/changetags/ChangeTags.php:599
\ChangeTags::updateTagsWithChecks \ManualLogEntry::publish includes/changetags/ChangeTags.php:601
\closure_153cfb93daec \ManualLogEntry::publish includes/RenameUser/RenameuserSQL.php:378
\closure_1c324b7ae880 \ManualLogEntry::publish includes/page/DeletePage.php:672
\closure_43b2cd3ca76a \ManualLogEntry::insert extensions/AbuseFilter/includes/View/HideAbuseLog.php:184
\closure_5a17977d6ced \ManualLogEntry::publish includes/page/File/FileDeleteForm.php:137
\closure_614461d440d9 \RecentChange::save extensions/AbuseFilter/includes/AbuseLogger.php:304
\closure_65ab049459e6 \RecentChange::save extensions/Wikistories/includes/Hooks/RecentChangesPropagationHooks.php:158
\closure_9beab0461f49 \RecentChange::save includes/changes/RecentChange.php:828
\closure_a12237ae53b0 \RecentChange::save includes/changes/RecentChange.php:748
\closure_a9fc08aa73b5 \ManualLogEntry::publish includes/filerepo/file/LocalFile.php:2006
\closure_f60c978ddf93 \RecentChange::save includes/logging/ManualLogEntry.php:433
\ContentModelChange::doContentModelChange \ManualLogEntry::insert includes/content/ContentModelChange.php:328
\ContentModelChange::doContentModelChange \ManualLogEntry::publish includes/content/ContentModelChange.php:329
\CreateAndPromote::addLogEntry \ManualLogEntry::insert maintenance/createAndPromote.php:208
\CreateAndPromote::addLogEntry \ManualLogEntry::publish maintenance/createAndPromote.php:209
\DigestEmailTest::getTranslator \MediaWiki\User\User::addToDatabase extensions/TranslationNotifications/tests/phpunit/DigestEmailTest.php:161
\DoubleRedirectJob::getUser \MediaWiki\User\User::addToDatabase includes/jobqueue/jobs/DoubleRedirectJob.php:297
\EditCLI::execute \MediaWiki\User\User::addToDatabase maintenance/edit.php:79
\FileImporter\Operations\FileRevisionFromRemoteUrl::createUploadLog \ManualLogEntry::insert extensions/FileImporter/src/Operations/FileRevisionFromRemoteUrl.php:231
\FileImporter\Operations\FileRevisionFromRemoteUrl::createUploadLog \ManualLogEntry::publish extensions/FileImporter/src/Operations/FileRevisionFromRemoteUrl.php:232
\FileImporter\Services\NullRevisionCreator::publishLogEntry \ManualLogEntry::insert extensions/FileImporter/src/Services/NullRevisionCreator.php:112
\FileImporter\Services\NullRevisionCreator::publishLogEntry \ManualLogEntry::publish extensions/FileImporter/src/Services/NullRevisionCreator.php:113
\FlaggedRevsLog::updateReviewLog \ManualLogEntry::insert extensions/FlaggedRevs/includes/backend/FlaggedRevsLog.php:69
\FlaggedRevsLog::updateReviewLog \ManualLogEntry::publish extensions/FlaggedRevs/includes/backend/FlaggedRevsLog.php:70
\FlaggedRevsLog::updateStabilityLog \ManualLogEntry::insert extensions/FlaggedRevs/includes/backend/FlaggedRevsLog.php:101
\FlaggedRevsLog::updateStabilityLog \ManualLogEntry::publish extensions/FlaggedRevs/includes/backend/FlaggedRevsLog.php:102
\FlaggedRevsLog::updateStabilityLogOnMove \ManualLogEntry::insert extensions/FlaggedRevs/includes/backend/FlaggedRevsLog.php:134
\FlaggedRevsLog::updateStabilityLogOnMove \ManualLogEntry::publish extensions/FlaggedRevs/includes/backend/FlaggedRevsLog.php:135
\Flow\Data\Listener\RecentChangesListener::onAfterInsert \RecentChange::save extensions/Flow/includes/Data/Listener/RecentChangesListener.php:125
\Flow\Import\Converter::getPageMovedFrom \MediaWiki\User\User::getActorId extensions/Flow/includes/Import/Converter.php:223
\Flow\Import\Postprocessor\SpecialLogTopic::afterTopicImported \ManualLogEntry::insert extensions/Flow/includes/Import/Postprocessor/SpecialLogTopic.php:50
\Flow\Log\ModerationLogger::log \ManualLogEntry::insert extensions/Flow/includes/Log/ModerationLogger.php:85
\Flow\Maintenance\FlowRestoreLQT::restoreLQTBoards \MediaWiki\User\User::getActorId extensions/Flow/maintenance/FlowRestoreLQT.php:104
\Flow\Tests\Collection\RevisionCollectionPermissionsTest::blockedUser \MediaWiki\User\User::addToDatabase extensions/Flow/tests/phpunit/Collection/RevisionCollectionPermissionsTest.php:208
\Flow\Tests\Collection\RevisionCollectionPermissionsTest::confirmedUser \MediaWiki\User\User::addToDatabase extensions/Flow/tests/phpunit/Collection/RevisionCollectionPermissionsTest.php:238
\Flow\Tests\Collection\RevisionCollectionPermissionsTest::suppressUser \MediaWiki\User\User::addToDatabase extensions/Flow/tests/phpunit/Collection/RevisionCollectionPermissionsTest.php:260
\Flow\Tests\Collection\RevisionCollectionPermissionsTest::sysopUser \MediaWiki\User\User::addToDatabase extensions/Flow/tests/phpunit/Collection/RevisionCollectionPermissionsTest.php:249
\Flow\Tests\Collection\RevisionCollectionPermissionsTest::unconfirmedUser \MediaWiki\User\User::addToDatabase extensions/Flow/tests/phpunit/Collection/RevisionCollectionPermissionsTest.php:227
\Flow\Tests\NotifiedUsersTest::getTestData \MediaWiki\User\User::addToDatabase extensions/Flow/tests/phpunit/Notifications/NotifiedUsersTest.php:160
\Flow\Tests\NotifiedUsersTest::getTestData \MediaWiki\User\User::addToDatabase extensions/Flow/tests/phpunit/Notifications/NotifiedUsersTest.php:162
\GrowthExperiments\LevelingUp\LevelingUpManager::shouldInviteUserAfterNormalEdit \MediaWiki\User\User::getActorId extensions/GrowthExperiments/includes/LevelingUp/LevelingUpManager.php:273
\GrowthExperiments\Mentorship\ChangeMentor::log \ManualLogEntry::insert extensions/GrowthExperiments/includes/Mentorship/ChangeMentor.php:123
\GrowthExperiments\Mentorship\ChangeMentor::log \ManualLogEntry::publish extensions/GrowthExperiments/includes/Mentorship/ChangeMentor.php:124
\GrowthExperiments\NewcomerTasks\AddImage\AddImageSubmissionHandler::handle \ManualLogEntry::insert extensions/GrowthExperiments/includes/NewcomerTasks/AddImage/AddImageSubmissionHandler.php:180
\GrowthExperiments\NewcomerTasks\AddImage\AddImageSubmissionHandler::handle \ManualLogEntry::publish extensions/GrowthExperiments/includes/NewcomerTasks/AddImage/AddImageSubmissionHandler.php:183
\GrowthExperiments\NewcomerTasks\AddLink\LinkSubmissionRecorder::log \ManualLogEntry::insert extensions/GrowthExperiments/includes/NewcomerTasks/AddLink/LinkSubmissionRecorder.php:124
\GrowthExperiments\NewcomerTasks\AddLink\LinkSubmissionRecorder::log \ManualLogEntry::publish extensions/GrowthExperiments/includes/NewcomerTasks/AddLink/LinkSubmissionRecorder.php:127
\GrowthExperiments\Tests\NewcomerTasksLogTest::logNewcomerTasks \ManualLogEntry::insert extensions/GrowthExperiments/tests/phpunit/integration/NewcomerTasks/NewcomerTasksLogTest.php:28
\GrowthExperiments\Tests\NewcomerTasksLogTest::logNewcomerTasks \ManualLogEntry::publish extensions/GrowthExperiments/tests/phpunit/integration/NewcomerTasks/NewcomerTasksLogTest.php:29
\GrowthExperiments\UserDatabaseHelper::hasMainspaceEdits \MediaWiki\User\User::getActorId extensions/GrowthExperiments/includes/UserDatabaseHelper.php:70
\GrowthExperiments\UserImpact\ComputedUserImpactLookup::getEditData \MediaWiki\User\User::getActorId extensions/GrowthExperiments/includes/UserImpact/ComputedUserImpactLookup.php:271
\ImportReporter::reportPage \ManualLogEntry::insert includes/specials/helpers/ImportReporter.php:188
\ImportReporter::reportPage \ManualLogEntry::publish includes/specials/helpers/ImportReporter.php:189
\ImportTextFiles::execute \MediaWiki\User\User::addToDatabase maintenance/importTextFiles.php:96
\ImportTextFiles::execute \RecentChange::notifyEdit maintenance/importTextFiles.php:173
\ImportTextFiles::execute \RecentChange::notifyNew maintenance/importTextFiles.php:191
\Installer::createSysop \MediaWiki\User\User::addToDatabase includes/installer/Installer.php:1804
\LocalFile::recordUpload3 \ManualLogEntry::insert includes/filerepo/file/LocalFile.php:1882
\LogPage::saveContent \RecentChange::notifyLog includes/logging/LogPage.php:136
\MediaWiki\Auth\AuthManager::autoCreateUser \ManualLogEntry::insert includes/auth/AuthManager.php:1966
\MediaWiki\Auth\AuthManager::autoCreateUser \MediaWiki\User\User::addToDatabase includes/auth/AuthManager.php:1907
\MediaWiki\Auth\AuthManager::continueAccountCreation \ManualLogEntry::insert includes/auth/AuthManager.php:1626
\MediaWiki\Auth\AuthManager::continueAccountCreation \ManualLogEntry::publish includes/auth/AuthManager.php:1627
\MediaWiki\Auth\AuthManager::continueAccountCreation \MediaWiki\User\User::addToDatabase includes/auth/AuthManager.php:1584
\MediaWiki\Block\BlockUser::log \ManualLogEntry::insert includes/block/BlockUser.php:756
\MediaWiki\Block\BlockUser::log \ManualLogEntry::publish includes/block/BlockUser.php:757
\MediaWiki\Block\UnblockUser::log \ManualLogEntry::insert includes/block/UnblockUser.php:226
\MediaWiki\Block\UnblockUser::log \ManualLogEntry::publish includes/block/UnblockUser.php:227
\MediaWiki\ChangeTags\ChangeTagsStore::logTagManagementAction \ManualLogEntry::insert includes/changetags/ChangeTagsStore.php:304
\MediaWiki\ChangeTags\ChangeTagsStore::logTagManagementAction \ManualLogEntry::publish includes/changetags/ChangeTagsStore.php:305
\MediaWiki\CheckUser\Logging\TemporaryAccountLogger::log \ManualLogEntry::insert extensions/CheckUser/src/Logging/TemporaryAccountLogger.php:181
\MediaWiki\CheckUser\Maintenance\PopulateCheckUserTablesWithSimulatedData::simulateLogAction \ManualLogEntry::insert extensions/CheckUser/maintenance/populateCheckUserTablesWithSimulatedData.php:736
\MediaWiki\CheckUser\Tests\Integration\CheckUserCommonTraitTest::newLogEntry \ManualLogEntry::insert extensions/CheckUser/tests/phpunit/integration/CheckUserCommonTraitTest.php:62
\MediaWiki\CheckUser\Tests\Integration\HooksTest::testActorInsertIntoCuChangesTable \MediaWiki\User\User::getActorId extensions/CheckUser/tests/phpunit/integration/HooksTest.php:203
\MediaWiki\CheckUser\Tests\Integration\HooksTest::testOnEmailUserFrom \MediaWiki\User\User::getActorId extensions/CheckUser/tests/phpunit/integration/HooksTest.php:818
\MediaWiki\CheckUser\Tests\Integration\HooksTest::testOnEmailUserFrom \MediaWiki\User\User::getActorId extensions/CheckUser/tests/phpunit/integration/HooksTest.php:819
\MediaWiki\CheckUser\Tests\Integration\HooksTest::testOnLocalUserCreated \MediaWiki\User\User::getActorId extensions/CheckUser/tests/phpunit/integration/HooksTest.php:708
\MediaWiki\CheckUser\Tests\Integration\HooksTest::testOnPerformRetroactiveAutoblock \RecentChange::save extensions/CheckUser/tests/phpunit/integration/HooksTest.php:1260
\MediaWiki\CheckUser\Tests\Integration\HooksTest::testonUser__mailPasswordInternal \MediaWiki\User\User::getActorId extensions/CheckUser/tests/phpunit/integration/HooksTest.php:661
\MediaWiki\CheckUser\Tests\Integration\HooksTest::testonUser__mailPasswordInternal \MediaWiki\User\User::getActorId extensions/CheckUser/tests/phpunit/integration/HooksTest.php:677
\MediaWiki\CheckUser\Tests\Integration\HooksTest::testUserInsertIntoCuLogEventTable \MediaWiki\User\User::getActorId extensions/CheckUser/tests/phpunit/integration/HooksTest.php:436
\MediaWiki\CheckUser\Tests\Integration\HooksTest::testUserInsertIntoCuPrivateEventTable \MediaWiki\User\User::getActorId extensions/CheckUser/tests/phpunit/integration/HooksTest.php:310
\MediaWiki\CheckUser\Tests\Integration\Maintenance\PopulateCheckUserTableTest::testPopulation \ManualLogEntry::insert extensions/CheckUser/tests/phpunit/integration/maintenance/PopulateCheckUserTableTest.php:76
\MediaWiki\CheckUser\Tests\Integration\Maintenance\PopulateCheckUserTableTest::testPopulation \ManualLogEntry::publish extensions/CheckUser/tests/phpunit/integration/maintenance/PopulateCheckUserTableTest.php:77
\MediaWiki\CheckUser\Tests\Integration\Maintenance\PopulateCheckUserTableTest::testPopulation \ManualLogEntry::publish extensions/CheckUser/tests/phpunit/integration/maintenance/PopulateCheckUserTableTest.php:85
\MediaWiki\CheckUser\Tests\Integration\Services\CheckUserLogServiceTest::testAddLogEntryPerformer \MediaWiki\User\User::getActorId extensions/CheckUser/tests/phpunit/integration/Services/CheckUserLogServiceTest.php:154
\MediaWiki\CheckUser\Tests\Integration\Services\UserAgentClientHintsManagerTest::testDeleteOrphanedMapRowsForCuLogEventRows \ManualLogEntry::insert extensions/CheckUser/tests/phpunit/integration/Services/UserAgentClientHintsManagerTest.php:254
\MediaWiki\CheckUser\Tests\Integration\Services\UserAgentClientHintsManagerTest::testDeleteOrphanedMapRowsForCuLogEventRows \ManualLogEntry::insert extensions/CheckUser/tests/phpunit/integration/Services/UserAgentClientHintsManagerTest.php:261
\MediaWiki\EditPage\EditPage::addContentModelChangeLogEntry \ManualLogEntry::insert includes/editpage/EditPage.php:2635
\MediaWiki\EditPage\EditPage::addContentModelChangeLogEntry \ManualLogEntry::publish includes/editpage/EditPage.php:2636
\MediaWiki\Extension\AbuseFilter\BlockAutopromoteStore::blockAutoPromote \ManualLogEntry::insert extensions/AbuseFilter/includes/BlockAutopromoteStore.php:91
\MediaWiki\Extension\AbuseFilter\BlockAutopromoteStore::blockAutoPromote \ManualLogEntry::publish extensions/AbuseFilter/includes/BlockAutopromoteStore.php:91
\MediaWiki\Extension\AbuseFilter\BlockAutopromoteStore::unblockAutopromote \ManualLogEntry::insert extensions/AbuseFilter/includes/BlockAutopromoteStore.php:129
\MediaWiki\Extension\AbuseFilter\BlockAutopromoteStore::unblockAutopromote \ManualLogEntry::publish extensions/AbuseFilter/includes/BlockAutopromoteStore.php:129
\MediaWiki\Extension\AbuseFilter\BlockedDomainFilter::logFilterHit \ManualLogEntry::insert extensions/AbuseFilter/includes/BlockedDomainFilter.php:131
\MediaWiki\Extension\AbuseFilter\BlockedDomainFilter::logFilterHit \ManualLogEntry::publish extensions/AbuseFilter/includes/BlockedDomainFilter.php:143
\MediaWiki\Extension\AbuseFilter\Consequences\Consequence\Block::revert \ManualLogEntry::insert extensions/AbuseFilter/includes/Consequences/Consequence/Block.php:94
\MediaWiki\Extension\AbuseFilter\Consequences\Consequence\Block::revert \ManualLogEntry::publish extensions/AbuseFilter/includes/Consequences/Consequence/Block.php:94
\MediaWiki\Extension\AbuseFilter\Consequences\Consequence\Degroup::execute \ManualLogEntry::insert extensions/AbuseFilter/includes/Consequences/Consequence/Degroup.php:116
\MediaWiki\Extension\AbuseFilter\Consequences\Consequence\Degroup::execute \ManualLogEntry::publish extensions/AbuseFilter/includes/Consequences/Consequence/Degroup.php:116
\MediaWiki\Extension\AbuseFilter\Consequences\Consequence\Degroup::revert \ManualLogEntry::insert extensions/AbuseFilter/includes/Consequences/Consequence/Degroup.php:157
\MediaWiki\Extension\AbuseFilter\Consequences\Consequence\Degroup::revert \ManualLogEntry::publish extensions/AbuseFilter/includes/Consequences/Consequence/Degroup.php:157
\MediaWiki\Extension\AbuseFilter\FilterStore::doSaveFilter \ManualLogEntry::insert extensions/AbuseFilter/includes/FilterStore.php:243
\MediaWiki\Extension\AbuseFilter\FilterStore::doSaveFilter \ManualLogEntry::publish extensions/AbuseFilter/includes/FilterStore.php:244
\MediaWiki\Extension\AbuseFilter\Maintenance\AddMissingLoggingEntries::doDBUpdates \ManualLogEntry::insert extensions/AbuseFilter/maintenance/AddMissingLoggingEntries.php:139
\MediaWiki\Extension\AbuseFilter\Special\SpecialAbuseLog::addPrivateDetailsAccessLogEntry \ManualLogEntry::insert extensions/AbuseFilter/includes/Special/SpecialAbuseLog.php:1100
\MediaWiki\Extension\CentralAuth\GlobalRename\GlobalRenameUserLogger::log \ManualLogEntry::insert extensions/CentralAuth/includes/GlobalRename/GlobalRenameUserLogger.php:53
\MediaWiki\Extension\CentralAuth\GlobalRename\GlobalRenameUserLogger::log \ManualLogEntry::publish extensions/CentralAuth/includes/GlobalRename/GlobalRenameUserLogger.php:54
\MediaWiki\Extension\CentralAuth\GlobalRename\GlobalRenameUserLogger::logPromotion \ManualLogEntry::insert extensions/CentralAuth/includes/GlobalRename/GlobalRenameUserLogger.php:84
\MediaWiki\Extension\CentralAuth\GlobalRename\GlobalRenameUserLogger::logPromotion \ManualLogEntry::publish extensions/CentralAuth/includes/GlobalRename/GlobalRenameUserLogger.php:85
\MediaWiki\Extension\CentralAuth\Special\SpecialGlobalGroupMembership::addLogEntry \ManualLogEntry::insert extensions/CentralAuth/includes/Special/SpecialGlobalGroupMembership.php:420
\MediaWiki\Extension\CentralAuth\Special\SpecialGlobalGroupMembership::addLogEntry \ManualLogEntry::publish extensions/CentralAuth/includes/Special/SpecialGlobalGroupMembership.php:421
\MediaWiki\Extension\CentralAuth\Special\SpecialGlobalGroupPermissions::addPermissionLog \ManualLogEntry::insert extensions/CentralAuth/includes/Special/SpecialGlobalGroupPermissions.php:699
\MediaWiki\Extension\CentralAuth\Special\SpecialGlobalGroupPermissions::addPermissionLog \ManualLogEntry::publish extensions/CentralAuth/includes/Special/SpecialGlobalGroupPermissions.php:700
\MediaWiki\Extension\CentralAuth\Special\SpecialGlobalGroupPermissions::addRenameLog \ManualLogEntry::insert extensions/CentralAuth/includes/Special/SpecialGlobalGroupPermissions.php:720
\MediaWiki\Extension\CentralAuth\Special\SpecialGlobalGroupPermissions::addRenameLog \ManualLogEntry::publish extensions/CentralAuth/includes/Special/SpecialGlobalGroupPermissions.php:721
\MediaWiki\Extension\CentralAuth\Special\SpecialGlobalGroupPermissions::addWikiSetLog \ManualLogEntry::insert extensions/CentralAuth/includes/Special/SpecialGlobalGroupPermissions.php:751
\MediaWiki\Extension\CentralAuth\Special\SpecialGlobalGroupPermissions::addWikiSetLog \ManualLogEntry::publish extensions/CentralAuth/includes/Special/SpecialGlobalGroupPermissions.php:752
\MediaWiki\Extension\CentralAuth\Special\SpecialWikiSets::addEntry \ManualLogEntry::insert extensions/CentralAuth/includes/Special/SpecialWikiSets.php:370
\MediaWiki\Extension\CentralAuth\Special\SpecialWikiSets::addEntry \ManualLogEntry::publish extensions/CentralAuth/includes/Special/SpecialWikiSets.php:371
\MediaWiki\Extension\CentralAuth\User\CentralAuthForcedLocalCreationService::attemptAutoCreateLocalUserFromName \ManualLogEntry::insert extensions/CentralAuth/includes/User/CentralAuthForcedLocalCreationService.php:108
\MediaWiki\Extension\CentralAuth\User\CentralAuthForcedLocalCreationService::attemptAutoCreateLocalUserFromName \ManualLogEntry::publish extensions/CentralAuth/includes/User/CentralAuthForcedLocalCreationService.php:109
\MediaWiki\Extension\CentralAuth\User\CentralAuthUser::logAction \ManualLogEntry::insert extensions/CentralAuth/includes/User/CentralAuthUser.php:3212
\MediaWiki\Extension\CentralAuth\User\CentralAuthUser::logAction \ManualLogEntry::publish extensions/CentralAuth/includes/User/CentralAuthUser.php:3213
\MediaWiki\Extension\GlobalBlocking\GlobalBlocking::block \LogPage::addEntry extensions/GlobalBlocking/includes/GlobalBlocking.php:651
\MediaWiki\Extension\GlobalBlocking\GlobalBlocking::unblock \LogPage::addEntry extensions/GlobalBlocking/includes/GlobalBlocking.php:689
\MediaWiki\Extension\GlobalBlocking\Special\SpecialGlobalBlockStatus::addLogEntry \ManualLogEntry::insert extensions/GlobalBlocking/includes/Special/SpecialGlobalBlockStatus.php:176
\MediaWiki\Extension\GlobalBlocking\Special\SpecialGlobalBlockStatus::addLogEntry \ManualLogEntry::publish extensions/GlobalBlocking/includes/Special/SpecialGlobalBlockStatus.php:177
\MediaWiki\Extension\Interwiki\SpecialInterwiki::onSubmit \LogPage::addEntry extensions/Interwiki/includes/SpecialInterwiki.php:273
\MediaWiki\Extension\Interwiki\SpecialInterwiki::onSubmit \LogPage::addEntry extensions/Interwiki/includes/SpecialInterwiki.php:327
\MediaWiki\Extension\Newsletter\Logging\NewsletterLogger::logNewIssue \ManualLogEntry::insert extensions/Newsletter/includes/Logging/NewsletterLogger.php:70
\MediaWiki\Extension\Newsletter\Logging\NewsletterLogger::logNewIssue \ManualLogEntry::publish extensions/Newsletter/includes/Logging/NewsletterLogger.php:70
\MediaWiki\Extension\Newsletter\Logging\NewsletterLogger::logNewsletterAdded \ManualLogEntry::insert extensions/Newsletter/includes/Logging/NewsletterLogger.php:50
\MediaWiki\Extension\Newsletter\Logging\NewsletterLogger::logNewsletterAdded \ManualLogEntry::publish extensions/Newsletter/includes/Logging/NewsletterLogger.php:50
\MediaWiki\Extension\Newsletter\Logging\NewsletterLogger::logPublisherAdded \ManualLogEntry::insert extensions/Newsletter/includes/Logging/NewsletterLogger.php:27
\MediaWiki\Extension\Newsletter\Logging\NewsletterLogger::logPublisherAdded \ManualLogEntry::publish extensions/Newsletter/includes/Logging/NewsletterLogger.php:27
\MediaWiki\Extension\Newsletter\Logging\NewsletterLogger::logPublisherRemoved \ManualLogEntry::insert extensions/Newsletter/includes/Logging/NewsletterLogger.php:38
\MediaWiki\Extension\Newsletter\Logging\NewsletterLogger::logPublisherRemoved \ManualLogEntry::publish extensions/Newsletter/includes/Logging/NewsletterLogger.php:38
\MediaWiki\Extension\NewUserMessage\NewUserMessage::fetchEditor \MediaWiki\User\User::addToDatabase extensions/NewUserMessage/includes/NewUserMessage.php:46
\MediaWiki\Extension\Notifications\Test\UserLocatorTest::testDontSendPageLinkedNotificationsForPagesCreatedByBotUsers \MediaWiki\User\User::addToDatabase extensions/Echo/tests/phpunit/UserLocatorTest.php:121
\MediaWiki\Extension\Notifications\Test\UserLocatorTest::testDontSendPageLinkedNotificationsForPagesCreatedByBotUsers \MediaWiki\User\User::addToDatabase extensions/Echo/tests/phpunit/UserLocatorTest.php:134
\MediaWiki\Extension\Notifications\Test\UserLocatorTest::testLocateArticleCreator \MediaWiki\User\User::addToDatabase extensions/Echo/tests/phpunit/UserLocatorTest.php:101
\MediaWiki\Extension\Notifications\Test\UserLocatorTest::testLocateTalkPageOwner \MediaWiki\User\User::addToDatabase extensions/Echo/tests/phpunit/UserLocatorTest.php:76
\MediaWiki\Extension\OATHAuth\Api\Module\ApiQueryOATH::execute \ManualLogEntry::insert extensions/OATHAuth/src/Api/Module/ApiQueryOATH.php:98
\MediaWiki\Extension\OATHAuth\Special\DisableOATHForUser::onSubmit \ManualLogEntry::insert extensions/OATHAuth/src/Special/DisableOATHForUser.php:150
\MediaWiki\Extension\OATHAuth\Special\VerifyOATHForUser::onSubmit \ManualLogEntry::insert extensions/OATHAuth/src/Special/VerifyOATHForUser.php:130
\MediaWiki\Extension\OAuth\Control\ConsumerSubmitControl::makeLogEntry \ManualLogEntry::insert extensions/OAuth/src/Control/ConsumerSubmitControl.php:602
\MediaWiki\Extension\PageTriage\Api\ApiPageTriageAction::logAction \ManualLogEntry::insert extensions/PageTriage/includes/Api/ApiPageTriageAction.php:230
\MediaWiki\Extension\PageTriage\Api\ApiPageTriageAction::logAction \ManualLogEntry::publish extensions/PageTriage/includes/Api/ApiPageTriageAction.php:230
\MediaWiki\Extension\PageTriage\Api\ApiPageTriageTagCopyvio::logActivity \ManualLogEntry::insert extensions/PageTriage/includes/Api/ApiPageTriageTagCopyvio.php:86
\MediaWiki\Extension\PageTriage\Api\ApiPageTriageTagCopyvio::logActivity \ManualLogEntry::publish extensions/PageTriage/includes/Api/ApiPageTriageTagCopyvio.php:86
\MediaWiki\Extension\PageTriage\Api\ApiPageTriageTagging::execute \ManualLogEntry::insert extensions/PageTriage/includes/Api/ApiPageTriageTagging.php:140
\MediaWiki\Extension\PageTriage\Api\ApiPageTriageTagging::execute \ManualLogEntry::publish extensions/PageTriage/includes/Api/ApiPageTriageTagging.php:140
\MediaWiki\Extension\SpamBlacklist\SpamBlacklist::logFilterHit \ManualLogEntry::insert extensions/SpamBlacklist/includes/SpamBlacklist.php:252
\MediaWiki\Extension\SpamBlacklist\SpamBlacklist::logFilterHit \ManualLogEntry::publish extensions/SpamBlacklist/includes/SpamBlacklist.php:264
\MediaWiki\Extension\Thanks\Storage\LogStore::thank \ManualLogEntry::insert extensions/Thanks/includes/Storage/LogStore.php:54
\MediaWiki\Extension\Thanks\Storage\LogStore::thank \ManualLogEntry::publish extensions/Thanks/includes/Storage/LogStore.php:55
\MediaWiki\Extension\TitleBlacklist\Hooks::logFilterHitUsername \ManualLogEntry::insert extensions/TitleBlacklist/includes/Hooks.php:281
\MediaWiki\Extension\TitleBlacklist\Hooks::logFilterHitUsername \ManualLogEntry::publish extensions/TitleBlacklist/includes/Hooks.php:282
\MediaWiki\Extension\Translate\MessageGroupProcessing\AggregateGroupsActionApi::execute \ManualLogEntry::insert extensions/Translate/src/MessageGroupProcessing/AggregateGroupsActionApi.php:121
\MediaWiki\Extension\Translate\MessageGroupProcessing\AggregateGroupsActionApi::execute \ManualLogEntry::publish extensions/Translate/src/MessageGroupProcessing/AggregateGroupsActionApi.php:122
\MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroupReviewStore::changeState \ManualLogEntry::insert extensions/Translate/src/MessageGroupProcessing/MessageGroupReviewStore.php:72
\MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroupReviewStore::changeState \ManualLogEntry::publish extensions/Translate/src/MessageGroupProcessing/MessageGroupReviewStore.php:73
\MediaWiki\Extension\Translate\MessageGroupProcessing\PageDeleteLogger::logBundleSuccess \ManualLogEntry::insert extensions/Translate/src/MessageGroupProcessing/PageDeleteLogger.php:31
\MediaWiki\Extension\Translate\MessageGroupProcessing\PageDeleteLogger::logBundleSuccess \ManualLogEntry::publish extensions/Translate/src/MessageGroupProcessing/PageDeleteLogger.php:32
\MediaWiki\Extension\Translate\MessageGroupProcessing\PageDeleteLogger::logPageSuccess \ManualLogEntry::insert extensions/Translate/src/MessageGroupProcessing/PageDeleteLogger.php:37
\MediaWiki\Extension\Translate\MessageGroupProcessing\PageDeleteLogger::logPageSuccess \ManualLogEntry::publish extensions/Translate/src/MessageGroupProcessing/PageDeleteLogger.php:38
\MediaWiki\Extension\Translate\MessageGroupProcessing\PageDeleteLogger::publishError \ManualLogEntry::insert extensions/Translate/src/MessageGroupProcessing/PageDeleteLogger.php:56
\MediaWiki\Extension\Translate\MessageGroupProcessing\PageDeleteLogger::publishError \ManualLogEntry::publish extensions/Translate/src/MessageGroupProcessing/PageDeleteLogger.php:57
\MediaWiki\Extension\Translate\MessageGroupProcessing\PageMoveLogger::logError \ManualLogEntry::insert extensions/Translate/src/MessageGroupProcessing/PageMoveLogger.php:47
\MediaWiki\Extension\Translate\MessageGroupProcessing\PageMoveLogger::logError \ManualLogEntry::publish extensions/Translate/src/MessageGroupProcessing/PageMoveLogger.php:48
\MediaWiki\Extension\Translate\MessageGroupProcessing\PageMoveLogger::logSuccess \ManualLogEntry::insert extensions/Translate/src/MessageGroupProcessing/PageMoveLogger.php:35
\MediaWiki\Extension\Translate\MessageGroupProcessing\PageMoveLogger::logSuccess \ManualLogEntry::publish extensions/Translate/src/MessageGroupProcessing/PageMoveLogger.php:36
\MediaWiki\Extension\Translate\MessageGroupProcessing\TranslatableBundleImporter::logImport \ManualLogEntry::insert extensions/Translate/src/MessageGroupProcessing/TranslatableBundleImporter.php:111
\MediaWiki\Extension\Translate\MessageGroupProcessing\TranslatableBundleImporter::logImport \ManualLogEntry::publish extensions/Translate/src/MessageGroupProcessing/TranslatableBundleImporter.php:115
\MediaWiki\Extension\Translate\PageTranslation\PageTranslationSpecialPage::execute \ManualLogEntry::insert extensions/Translate/src/PageTranslation/PageTranslationSpecialPage.php:188
\MediaWiki\Extension\Translate\PageTranslation\PageTranslationSpecialPage::execute \ManualLogEntry::publish extensions/Translate/src/PageTranslation/PageTranslationSpecialPage.php:189
\MediaWiki\Extension\Translate\PageTranslation\TranslatablePageMarker::handlePriorityLanguages \ManualLogEntry::insert extensions/Translate/src/PageTranslation/TranslatablePageMarker.php:405
\MediaWiki\Extension\Translate\PageTranslation\TranslatablePageMarker::handlePriorityLanguages \ManualLogEntry::publish extensions/Translate/src/PageTranslation/TranslatablePageMarker.php:406
\MediaWiki\Extension\Translate\PageTranslation\TranslatablePageMarker::markForTranslation \ManualLogEntry::insert extensions/Translate/src/PageTranslation/TranslatablePageMarker.php:335
\MediaWiki\Extension\Translate\PageTranslation\TranslatablePageMarker::markForTranslation \ManualLogEntry::publish extensions/Translate/src/PageTranslation/TranslatablePageMarker.php:336
\MediaWiki\Extension\Translate\PageTranslation\TranslatablePageMarker::unmarkPage \ManualLogEntry::insert extensions/Translate/src/PageTranslation/TranslatablePageMarker.php:111
\MediaWiki\Extension\Translate\PageTranslation\TranslatablePageMarker::unmarkPage \ManualLogEntry::publish extensions/Translate/src/PageTranslation/TranslatablePageMarker.php:112
\MediaWiki\Extension\Translate\TranslatorInterface\ReviewTranslationActionApi::doReview \ManualLogEntry::insert extensions/Translate/src/TranslatorInterface/ReviewTranslationActionApi.php:113
\MediaWiki\Extension\Translate\TranslatorInterface\ReviewTranslationActionApi::doReview \ManualLogEntry::publish extensions/Translate/src/TranslatorInterface/ReviewTranslationActionApi.php:114
\MediaWiki\Extension\Translate\TranslatorSandbox\TranslateSandbox::deleteUser \MediaWiki\User\User::getActorId extensions/Translate/src/TranslatorSandbox/TranslateSandbox.php:150
\MediaWiki\Extension\Translate\TranslatorSandbox\TranslatorSandboxActionApi::doDelete \ManualLogEntry::insert extensions/Translate/src/TranslatorSandbox/TranslatorSandboxActionApi.php:173
\MediaWiki\Extension\Translate\TranslatorSandbox\TranslatorSandboxActionApi::doDelete \ManualLogEntry::publish extensions/Translate/src/TranslatorSandbox/TranslatorSandboxActionApi.php:174
\MediaWiki\Extension\Translate\TranslatorSandbox\TranslatorSandboxActionApi::doPromote \ManualLogEntry::insert extensions/Translate/src/TranslatorSandbox/TranslatorSandboxActionApi.php:203
\MediaWiki\Extension\Translate\TranslatorSandbox\TranslatorSandboxActionApi::doPromote \ManualLogEntry::publish extensions/Translate/src/TranslatorSandbox/TranslatorSandboxActionApi.php:204
\MediaWiki\Extension\TranslationNotifications\Jobs\TranslationNotificationsSubmitJob::run \ManualLogEntry::insert extensions/TranslationNotifications/includes/Jobs/TranslationNotificationsSubmitJob.php:267
\MediaWiki\Extension\TranslationNotifications\Jobs\TranslationNotificationsSubmitJob::run \ManualLogEntry::publish extensions/TranslationNotifications/includes/Jobs/TranslationNotificationsSubmitJob.php:268
\MediaWiki\Extension\UrlShortener\SpecialManageShortUrls::onSubmit \ManualLogEntry::insert extensions/UrlShortener/includes/SpecialManageShortUrls.php:132
\MediaWiki\Extension\UrlShortener\SpecialManageShortUrls::onSubmit \ManualLogEntry::publish extensions/UrlShortener/includes/SpecialManageShortUrls.php:133
\MediaWiki\Extension\VisualEditor\Hooks::onSkinTemplateNavigation__Universal \MediaWiki\User\User::getActorId extensions/VisualEditor/includes/Hooks.php:584
\MediaWiki\IPInfo\Logging\Logger::log \ManualLogEntry::insert extensions/IPInfo/src/Logging/Logger.php:223
\MediaWiki\IPInfo\Test\Integration\RestHandler\LogHandlerTest::testDeletedTargetAllowed \MediaWiki\User\User::getActorId extensions/IPInfo/tests/phpunit/integration/RestHandler/LogHandlerTest.php:596
\MediaWiki\IPInfo\Test\Integration\RestHandler\LogHandlerTest::testDeletedTarget \MediaWiki\User\User::getActorId extensions/IPInfo/tests/phpunit/integration/RestHandler/LogHandlerTest.php:537
\MediaWiki\IPInfo\Test\Integration\RestHandler\LogHandlerTest::testPerformerRegistered \MediaWiki\User\User::getActorId extensions/IPInfo/tests/phpunit/integration/RestHandler/LogHandlerTest.php:483
\MediaWiki\MassMessage\Job\MassMessageJob::logLocalFailure \ManualLogEntry::insert extensions/MassMessage/includes/Job/MassMessageJob.php:191
\MediaWiki\MassMessage\Job\MassMessageJob::logLocalFailure \ManualLogEntry::publish extensions/MassMessage/includes/Job/MassMessageJob.php:192
\MediaWiki\MassMessage\Job\MassMessageJob::logLocalSkip \ManualLogEntry::insert extensions/MassMessage/includes/Job/MassMessageJob.php:173
\MediaWiki\MassMessage\Job\MassMessageJob::logLocalSkip \ManualLogEntry::publish extensions/MassMessage/includes/Job/MassMessageJob.php:174
\MediaWiki\MassMessage\MassMessage::logToWiki \ManualLogEntry::insert extensions/MassMessage/includes/MassMessage.php:162
\MediaWiki\MassMessage\MassMessage::logToWiki \ManualLogEntry::publish extensions/MassMessage/includes/MassMessage.php:163
\MediaWiki\Page\DeletePage::deleteInternal \ManualLogEntry::insert includes/page/DeletePage.php:667
\MediaWiki\Page\File\FileDeleteForm::doDelete \ManualLogEntry::insert includes/page/File/FileDeleteForm.php:134
\MediaWiki\Page\File\FileDeleteForm::doDelete \ManualLogEntry::insert includes/page/File/FileDeleteForm.php:87
\MediaWiki\Page\File\FileDeleteForm::doDelete \ManualLogEntry::publish includes/page/File/FileDeleteForm.php:88
\MediaWiki\Page\MergeHistory::merge \ManualLogEntry::insert includes/page/MergeHistory.php:404
\MediaWiki\Page\MergeHistory::merge \ManualLogEntry::publish includes/page/MergeHistory.php:405
\MediaWiki\Page\MovePage::moveToInternal \ManualLogEntry::insert includes/page/MovePage.php:1038
\MediaWiki\Page\MovePage::moveToInternal \ManualLogEntry::publish includes/page/MovePage.php:1041
\MediaWiki\Page\MovePage::moveUnsafe \ManualLogEntry::insert includes/page/MovePage.php:769
\MediaWiki\Page\MovePage::moveUnsafe \ManualLogEntry::publish includes/page/MovePage.php:770
\MediaWiki\Page\RollbackPage::rollbackIfAllowed \MediaWiki\Page\RollbackPage::rollback includes/page/RollbackPage.php:234
\MediaWiki\Page\RollbackPage::rollback \ManualLogEntry::insert includes/page/RollbackPage.php:392
\MediaWiki\Page\RollbackPage::rollback \ManualLogEntry::publish includes/page/RollbackPage.php:393
\MediaWiki\Page\UndeletePage::addLogEntry \ManualLogEntry::insert includes/page/UndeletePage.php:459
\MediaWiki\Page\UndeletePage::addLogEntry \ManualLogEntry::publish includes/page/UndeletePage.php:460
\MediaWiki\RenameUser\RenameuserSQL::rename \ManualLogEntry::insert includes/RenameUser/RenameuserSQL.php:353
\MediaWiki\Specials\SpecialPageLanguage::changePageLanguage \ManualLogEntry::insert includes/specials/SpecialPageLanguage.php:302
\MediaWiki\Specials\SpecialPageLanguage::changePageLanguage \ManualLogEntry::publish includes/specials/SpecialPageLanguage.php:303
\MediaWiki\Specials\SpecialUserRights::addLogEntry \ManualLogEntry::insert includes/specials/SpecialUserRights.php:564
\MediaWiki\Specials\SpecialUserRights::addLogEntry \ManualLogEntry::publish includes/specials/SpecialUserRights.php:568
\MediaWiki\Storage\PageUpdater::doCreate \ManualLogEntry::insert includes/Storage/PageUpdater.php:1549
\MediaWiki\Storage\PageUpdater::doCreate \RecentChange::notifyNew includes/Storage/PageUpdater.php:1521
\MediaWiki\Storage\PageUpdater::doModify \RecentChange::notifyEdit includes/Storage/PageUpdater.php:1396
\MediaWiki\TimedMediaHandler\ApiTranscodeReset::execute \ManualLogEntry::insert extensions/TimedMediaHandler/includes/ApiTranscodeReset.php:121
\MediaWiki\User\UserGroupManager::addUserToAutopromoteOnceGroups \ManualLogEntry::insert includes/user/UserGroupManager.php:713
\MediaWiki\User\UserGroupManager::addUserToAutopromoteOnceGroups \ManualLogEntry::publish includes/user/UserGroupManager.php:715
\MigrateCentralWikiLogs::execute \ManualLogEntry::insert extensions/OAuth/maintenance/migrateCentralWikiLogs.php:140
\NewsletterAPIEditTest::testAddPublisher \MediaWiki\User\User::addToDatabase extensions/Newsletter/tests/phpunit/Content/NewsletterAPIEditTest.php:133
\NewsletterAPIEditTest::testAddPublisher \MediaWiki\User\User::addToDatabase extensions/Newsletter/tests/phpunit/Content/NewsletterAPIEditTest.php:136
\NewsletterAPIEditTest::testRemovePublisher \MediaWiki\User\User::addToDatabase extensions/Newsletter/tests/phpunit/Content/NewsletterAPIEditTest.php:170
\NewsletterDbTest::testAddPublisher \MediaWiki\User\User::addToDatabase extensions/Newsletter/tests/phpunit/NewsletterDbTest.php:190
\NewsletterDbTest::testAddSubscriber \MediaWiki\User\User::addToDatabase extensions/Newsletter/tests/phpunit/NewsletterDbTest.php:58
\NewsletterDbTest::testGetSubscribersCount \MediaWiki\User\User::addToDatabase extensions/Newsletter/tests/phpunit/NewsletterDbTest.php:127
\NewsletterDbTest::testGetSubscribersCount \MediaWiki\User\User::addToDatabase extensions/Newsletter/tests/phpunit/NewsletterDbTest.php:128
\NewsletterDbTest::testRemovePublisher \MediaWiki\User\User::addToDatabase extensions/Newsletter/tests/phpunit/NewsletterDbTest.php:216
\NewsletterDbTest::testRemoveSubscriber \MediaWiki\User\User::addToDatabase extensions/Newsletter/tests/phpunit/NewsletterDbTest.php:91
\NotificationsTest::testUserRightsNotif \MediaWiki\User\User::addToDatabase extensions/Echo/tests/phpunit/NotificationsTest.php:41
\PatrolLog::record \ManualLogEntry::insert includes/logging/PatrolLog.php:62
\PatrolLog::record \ManualLogEntry::publish includes/logging/PatrolLog.php:63
\PruneOldBounceRecordsTest::setUp \MediaWiki\User\User::addToDatabase extensions/BounceHandler/tests/phpunit/PruneOldBounceRecordsTest.php:30
\ReassignEdits::initialiseUser \MediaWiki\User\User::getActorId maintenance/reassignEdits.php:188
\RecentAdditionsMessageGroup::getQueryConditions \MediaWiki\User\User::getActorId extensions/Translate/messagegroups/RecentAdditionsMessageGroup.php:44
\RecentChange::notifyLog \RecentChange::save includes/changes/RecentChange.php:867
\RevDelList::updateLog \ManualLogEntry::insert includes/revisiondelete/RevDelList.php:388
\RevDelList::updateLog \ManualLogEntry::publish includes/revisiondelete/RevDelList.php:389
\RollbackEdits::execute \MediaWiki\Page\RollbackPage::rollback maintenance/rollbackEdits.php:95
\SpoofUserTest::setUp \MediaWiki\User\User::addToDatabase extensions/AntiSpoof/tests/phpunit/SpoofUserTest.php:38
\SpoofUserTest::testRecord \MediaWiki\User\User::addToDatabase extensions/AntiSpoof/tests/phpunit/SpoofUserTest.php:50
\SpoofUserTest::testUpdate \MediaWiki\User\User::addToDatabase extensions/AntiSpoof/tests/phpunit/SpoofUserTest.php:82
\Thread::logChange \LogPage::addEntry extensions/LiquidThreads/includes/Thread.php:290
\Thread::logChange \LogPage::addEntry extensions/LiquidThreads/includes/Thread.php:299
\Thread::logChange \LogPage::addEntry extensions/LiquidThreads/includes/Thread.php:308
\Thread::logChange \LogPage::addEntry extensions/LiquidThreads/includes/Thread.php:321
\Thread::logChange \LogPage::addEntry extensions/LiquidThreads/includes/Thread.php:330
\Thread::logChange \LogPage::addEntry extensions/LiquidThreads/includes/Thread.php:339
\UnSubscribeUserTest::testUnSubscribeUser \MediaWiki\User\User::addToDatabase extensions/BounceHandler/tests/phpunit/UnSubscribeUserTest.php:20
\VERPEncodeDecodeTest::testVERPEncodingDecoding \MediaWiki\User\User::addToDatabase extensions/BounceHandler/tests/phpunit/VERPEncodeDecodeTest.php:23
\Wikibase\Client\Changes\InjectRCRecordsJob::run \RecentChange::save extensions/Wikibase/client/includes/Changes/InjectRCRecordsJob.php:265
\Wikibase\Client\Tests\Integration\ChangeModification\ChangeVisibilityNotificationJobTest::testRun_recentChangeFactoryRoundtrip \RecentChange::save extensions/Wikibase/client/tests/phpunit/integration/includes/ChangeModification/ChangeVisibilityNotificationJobTest.php:83
\Wikibase\Client\Tests\Integration\ChangeModification\RecentChangesModificationTestBase::initRecentChanges \RecentChange::save extensions/Wikibase/client/tests/phpunit/integration/includes/ChangeModification/RecentChangesModificationTestBase.php:216
\Wikibase\Client\Tests\Integration\RecentChanges\RecentChangesFinderTest::initRecentChanges \RecentChange::save extensions/Wikibase/client/tests/phpunit/integration/includes/RecentChanges/RecentChangesFinderTest.php:229
\Wikibase\Client\Tests\Integration\RecentChanges\RecentChangesFinderTest::initRecentChanges \RecentChange::save extensions/Wikibase/client/tests/phpunit/integration/includes/RecentChanges/RecentChangesFinderTest.php:247
\Wikibase\Client\Tests\Integration\RecentChanges\RecentChangesFinderTest::initRecentChanges \RecentChange::save extensions/Wikibase/client/tests/phpunit/integration/includes/RecentChanges/RecentChangesFinderTest.php:265
\Wikibase\Repo\Tests\Api\PermissionsTestCase::applyPermissions \MediaWiki\User\User::addToDatabase extensions/Wikibase/repo/tests/phpunit/includes/Api/PermissionsTestCase.php:40
\Wikibase\Repo\Tests\MediaWikiEditEntityTest::testAttemptSaveUnresolvedRedirect \MediaWiki\User\User::addToDatabase extensions/Wikibase/repo/tests/phpunit/includes/MediaWikiEditEntityTest.php:792
\Wikibase\Repo\Tests\MediaWikiEditEntityTest::testAttemptSaveWatch \MediaWiki\User\User::addToDatabase extensions/Wikibase/repo/tests/phpunit/includes/MediaWikiEditEntityTest.php:762
\Wikibase\Repo\Tests\Notifications\ChangeNotifierTest::makeUser \MediaWiki\User\User::addToDatabase extensions/Wikibase/repo/tests/phpunit/includes/Notifications/ChangeNotifierTest.php:103
\Wikibase\Repo\Tests\Store\Sql\WikiPageEntityStoreTest::testUpdateWatchlist \MediaWiki\User\User::addToDatabase extensions/Wikibase/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityStoreTest.php:544
\Wikibase\Repo\Tests\Store\Sql\WikiPageEntityStoreTest::testUpdateWatchlist_withoutWatchlistRights \MediaWiki\User\User::addToDatabase extensions/Wikibase/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityStoreTest.php:566
\Wikibase\Repo\Tests\UpdateRepo\UpdateRepoOnDeleteJobTest::testRun \MediaWiki\User\User::addToDatabase extensions/Wikibase/repo/tests/phpunit/includes/UpdateRepo/UpdateRepoOnDeleteJobTest.php:130
\Wikibase\Repo\Tests\UpdateRepo\UpdateRepoOnMoveJobTest::testRun \MediaWiki\User\User::addToDatabase extensions/Wikibase/repo/tests/phpunit/includes/UpdateRepo/UpdateRepoOnMoveJobTest.php:174
\Wikibase\Repo\Tests\UpdateRepo\UpdateRepoOnMoveJobTest::testShouldSupportFirstLevelRedirects \MediaWiki\User\User::addToDatabase extensions/Wikibase/repo/tests/phpunit/includes/UpdateRepo/UpdateRepoOnMoveJobTest.php:248
\WikiPage::doUpdateRestrictions \ManualLogEntry::insert includes/page/WikiPage.php:2321
\WikiPage::doUpdateRestrictions \ManualLogEntry::publish includes/page/WikiPage.php:2322

Extensions that have callers, so may be affected:

AbuseFilter
BounceHandler
Babel
WikimediaMaintenance
CentralAuth
Wikistories
TranslationNotifications
FileImporter
FlaggedRevs
Flow
GrowthExperiments
CheckUser
GlobalBlocking
Interwiki
Newsletter
NewUserMessage
Echo
OATHAuth
OAuth
PageTriage
SpamBlacklist
Thanks
TitleBlacklist
Translate
UrlShortener
VisualEditor
IPInfo
MassMessage
TimedMediaHandler
AntiSpoof
LiquidThreads
Wikibase

To do next

  • Look over the callers for obvious false positives, where it's clear the workflow wouldn't hit the IP actor creation error
  • For the rest: comment here, file tasks, alert maintainers (or take on ourselves)

@Tchanders this output from CI with temp user auto creation enabled might also be useful https://integration.wikimedia.org/ci/job/wmf-quibble-core-vendor-mysql-php74-docker/35564/consoleFull, seems to have a partial overlap with your list above.

@Tchanders this output from CI with temp user auto creation enabled might also be useful https://integration.wikimedia.org/ci/job/wmf-quibble-core-vendor-mysql-php74-docker/35564/consoleFull, seems to have a partial overlap with your list above.

Thanks - which patch was this from? Seems not to be available any more.

Unassigning myself to allow anyone else to take this on while I'm out. This should help with what to do next: T349219#9451462.

We're probably safe just following up on the methods/extensions named in that comment, though the line numbers may have changed.

The reassignEdits.php maintenance script needs to be updated. The script can reassign edits from one user to another, and in theory this could happen for a registered user to a anonymous user. I don't think that this would actually be done on WMF wikis, but I think we should still consider adding a more helpful error if a user attempts to re-assign edits to an IP address when temporary account autocreation is enabled.

Apart from that, I can't see anything that we haven't already filed about or fixed.

The reassignEdits.php maintenance script needs to be updated. The script can reassign edits from one user to another, and in theory this could happen for a registered user to a anonymous user. I don't think that this would actually be done on WMF wikis, but I think we should still consider adding a more helpful error if a user attempts to re-assign edits to an IP address when temporary account autocreation is enabled.

Thanks. Can you file a task for this, please?

The reassignEdits.php maintenance script needs to be updated. The script can reassign edits from one user to another, and in theory this could happen for a registered user to a anonymous user. I don't think that this would actually be done on WMF wikis, but I think we should still consider adding a more helpful error if a user attempts to re-assign edits to an IP address when temporary account autocreation is enabled.

Thanks. Can you file a task for this, please?

Done as T373914.