Page MenuHomePhabricator

Internal API errors when trying to edit Wikidata entities from Commons
Closed, ResolvedPublicPRODUCTION ERROR

Description

Wikibase crashes with internal API errors when you try to use the API to edit an entity of a type that doesn’t actually live on the current wiki, e.g. trying to call wbsetlabel for a property from Commons. Current error:

InvalidArgumentException: Entity type property cannot be edited on this wiki.

from /srv/mediawiki/php-1.39.0-wmf.4/extensions/Wikibase/repo/includes/EditEntity/MediawikiEditEntity.php(629)
#0 /srv/mediawiki/php-1.39.0-wmf.4/extensions/Wikibase/repo/includes/EditEntity/MediawikiEditEntity.php(669): Wikibase\Repo\EditEntity\MediawikiEditEntity->checkLocal(Wikibase\DataModel\Entity\Property)
#1 /srv/mediawiki/php-1.39.0-wmf.4/extensions/Wikibase/repo/includes/EditEntity/StatsdSaveTimeRecordingEditEntity.php(77): Wikibase\Repo\EditEntity\MediawikiEditEntity->attemptSave(Wikibase\DataModel\Entity\Property, string, integer, string, NULL, array)
#2 /srv/mediawiki/php-1.39.0-wmf.4/extensions/Wikibase/repo/includes/Api/EntitySavingHelper.php(392): Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity->attemptSave(Wikibase\DataModel\Entity\Property, string, integer, string, NULL, array)
#3 /srv/mediawiki/php-1.39.0-wmf.4/extensions/Wikibase/repo/includes/Api/ModifyEntity.php(339): Wikibase\Repo\Api\EntitySavingHelper->attemptSaveEntity(Wikibase\DataModel\Entity\Property, string, array, DerivativeContext)
#4 /srv/mediawiki/php-1.39.0-wmf.4/includes/api/ApiMain.php(1897): Wikibase\Repo\Api\ModifyEntity->execute()

Previous error / original report:

happens when trying to use wbsetlabel to set a label for a property on Commons.

The API call probably shouldn't actually get this far and should bail out with an error earlier.

Reproduction:

https://commons.wikimedia.org/wiki/Special:ApiSandbox#action=wbsetlabel&format=json&id=P369&token=XXXX&language=en&value=TEST%20EDIT

Error

MediaWiki version: 1.35.0-wmf.15 (probably exists in many previous versions), but is also related to the terms storage

message
A database query error has occurred. Did you forget to run your application's database schema updater after upgrading? 
Query: SELECT  wby_id AS `id`,wby_name AS `name`  FROM `wbt_type`     ORDER BY id 
Function: MediaWiki\Storage\NameTableStore::loadTable
Error: 1146 Table 'commonswiki.wbt_type' doesn't exist (10.64.48.150)

Impact

This is not an expected execution path, so impact is low.
But when performed will currently produce logspam

Notes

Details

Request ID
XiBK-wpAEDQAAI33g-sAAABO
Request URL
https://commons.wikimedia.org/w/api.php
Stack Trace
exception.trace
#0 /srv/mediawiki/php-1.35.0-wmf.15/includes/libs/rdbms/database/Database.php(1610): Wikimedia\Rdbms\Database->getQueryException(string, integer, string, string)
#1 /srv/mediawiki/php-1.35.0-wmf.15/includes/libs/rdbms/database/Database.php(1587): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, integer, string, string)
#2 /srv/mediawiki/php-1.35.0-wmf.15/includes/libs/rdbms/database/Database.php(1166): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#3 /srv/mediawiki/php-1.35.0-wmf.15/includes/libs/rdbms/database/Database.php(1828): Wikimedia\Rdbms\Database->query(string, string)
#4 /srv/mediawiki/php-1.35.0-wmf.15/includes/libs/rdbms/database/DBConnRef.php(68): Wikimedia\Rdbms\Database->select(string, array, array, string, array)
#5 /srv/mediawiki/php-1.35.0-wmf.15/includes/libs/rdbms/database/DBConnRef.php(318): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#6 /srv/mediawiki/php-1.35.0-wmf.15/includes/Storage/NameTableStore.php(380): Wikimedia\Rdbms\DBConnRef->select(string, array, array, string, array)
#7 /srv/mediawiki/php-1.35.0-wmf.15/includes/Storage/NameTableStore.php(355): MediaWiki\Storage\NameTableStore->loadTable(Wikimedia\Rdbms\DBConnRef)
#8 /srv/mediawiki/php-1.35.0-wmf.15/includes/libs/objectcache/wancache/WANObjectCache.php(1434): MediaWiki\Storage\NameTableStore->MediaWiki\Storage\{closure}(boolean, integer, array, NULL)
#9 /srv/mediawiki/php-1.35.0-wmf.15/includes/libs/objectcache/wancache/WANObjectCache.php(1279): WANObjectCache->fetchOrRegenerate(string, integer, Closure, array)
#10 /srv/mediawiki/php-1.35.0-wmf.15/includes/Storage/NameTableStore.php(356): WANObjectCache->getWithSetCallback(string, integer, Closure)
#11 /srv/mediawiki/php-1.35.0-wmf.15/includes/Storage/NameTableStore.php(256): MediaWiki\Storage\NameTableStore->getTableFromCachesOrReplica()
#12 /srv/mediawiki/php-1.35.0-wmf.15/extensions/Wikibase/lib/includes/Store/Sql/Terms/DatabaseTypeIdsStore.php(66): MediaWiki\Storage\NameTableStore->getId(string)
#13 /srv/mediawiki/php-1.35.0-wmf.15/extensions/Wikibase/repo/includes/Store/Sql/Terms/DatabaseTermsCollisionDetector.php(72): Wikibase\Lib\Store\Sql\Terms\DatabaseTypeIdsStore->lookupTypeIds(array)
#14 /srv/mediawiki/php-1.35.0-wmf.15/extensions/Wikibase/repo/includes/Validators/FingerprintUniquenessValidator.php(71): Wikibase\Repo\Store\Sql\Terms\DatabaseTermsCollisionDetector->detectLabelCollision(string, string)
#15 /srv/mediawiki/php-1.35.0-wmf.15/extensions/Wikibase/repo/includes/Validators/FingerprintUniquenessValidator.php(64): Wikibase\Repo\Validators\FingerprintUniquenessValidator->validateProperty(Wikibase\Repo\ChangeOp\ChangeOpFingerprintResult)
#16 /srv/mediawiki/php-1.35.0-wmf.15/extensions/Wikibase/repo/includes/Validators/ByIdFingerprintUniquenessValidator.php(58): Wikibase\Repo\Validators\FingerprintUniquenessValidator->validate(Wikibase\Repo\ChangeOp\ChangeOpFingerprintResult)
#17 /srv/mediawiki/php-1.35.0-wmf.15/extensions/Wikibase/repo/includes/Validators/ByIdFingerprintUniquenessValidator.php(52): Wikibase\Repo\Validators\ByIdFingerprintUniquenessValidator->validateProperty(Wikibase\Repo\ChangeOp\ChangeOpFingerprintResult)
#18 /srv/mediawiki/php-1.35.0-wmf.15/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpFingerprintResult.php(49): Wikibase\Repo\Validators\ByIdFingerprintUniquenessValidator->validate(Wikibase\Repo\ChangeOp\ChangeOpFingerprintResult)
#19 /srv/mediawiki/php-1.35.0-wmf.15/extensions/Wikibase/repo/includes/Api/ModifyEntity.php(217): Wikibase\Repo\ChangeOp\ChangeOpFingerprintResult->validate()
#20 /srv/mediawiki/php-1.35.0-wmf.15/extensions/Wikibase/repo/includes/Api/SetLabel.php(63): Wikibase\Repo\Api\ModifyEntity->applyChangeOp(Wikibase\Repo\ChangeOp\ChangeOpFingerprint, Wikibase\DataModel\Entity\Property, Wikibase\Summary)
#21 /srv/mediawiki/php-1.35.0-wmf.15/extensions/Wikibase/repo/includes/Api/ModifyEntity.php(312): Wikibase\Repo\Api\SetLabel->modifyEntity(Wikibase\DataModel\Entity\Property, Wikibase\Repo\ChangeOp\ChangeOpFingerprint, array)
#22 /srv/mediawiki/php-1.35.0-wmf.15/includes/api/ApiMain.php(1603): Wikibase\Repo\Api\ModifyEntity->execute()
#23 /srv/mediawiki/php-1.35.0-wmf.15/includes/api/ApiMain.php(539): ApiMain->executeAction()
#24 /srv/mediawiki/php-1.35.0-wmf.15/includes/api/ApiMain.php(510): ApiMain->executeActionWithErrorHandling()
#25 /srv/mediawiki/php-1.35.0-wmf.15/api.php(78): ApiMain->execute()
#26 /srv/mediawiki/w/api.php(3): require(string)
#27 {main}

Event Timeline

It's not up to me to triage this but given @Addshore's impact analysis I guess it is safe to rule out UBN.

Change 643810 had a related patch set uploaded (by Ladsgroup; owner: Ladsgroup):
[mediawiki/extensions/Wikibase@master] Prevent trying to edit foreign entities in ModifyEntity

https://gerrit.wikimedia.org/r/643810

Spotted again on commonswiki:

/srv/mediawiki/php-1.36.0-wmf.25/includes/libs/rdbms/database/Database.php:1680

#0 /srv/mediawiki/php-1.36.0-wmf.25/includes/libs/rdbms/database/Database.php(1658): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, integer, string, string)
#1 /srv/mediawiki/php-1.36.0-wmf.25/includes/libs/rdbms/database/Database.php(1227): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#2 /srv/mediawiki/php-1.36.0-wmf.25/includes/libs/rdbms/database/Database.php(1907): Wikimedia\Rdbms\Database->query(string, string, integer)
#3 /srv/mediawiki/php-1.36.0-wmf.25/includes/libs/rdbms/database/DBConnRef.php(68): Wikimedia\Rdbms\Database->select(string, array, array, string, array)
#4 /srv/mediawiki/php-1.36.0-wmf.25/includes/libs/rdbms/database/DBConnRef.php(313): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#5 /srv/mediawiki/php-1.36.0-wmf.25/includes/Storage/NameTableStore.php(380): Wikimedia\Rdbms\DBConnRef->select(string, array, array, string, array)
#6 /srv/mediawiki/php-1.36.0-wmf.25/includes/Storage/NameTableStore.php(355): MediaWiki\Storage\NameTableStore->loadTable(Wikimedia\Rdbms\DBConnRef)
#7 /srv/mediawiki/php-1.36.0-wmf.25/includes/libs/objectcache/wancache/WANObjectCache.php(1562): MediaWiki\Storage\NameTableStore->MediaWiki\Storage\{closure}(boolean, integer, array, NULL, array)
#8 /srv/mediawiki/php-1.36.0-wmf.25/includes/libs/objectcache/wancache/WANObjectCache.php(1389): WANObjectCache->fetchOrRegenerate(string, integer, Closure, array, array)
#9 /srv/mediawiki/php-1.36.0-wmf.25/includes/Storage/NameTableStore.php(356): WANObjectCache->getWithSetCallback(string, integer, Closure)
#10 /srv/mediawiki/php-1.36.0-wmf.25/includes/Storage/NameTableStore.php(256): MediaWiki\Storage\NameTableStore->getTableFromCachesOrReplica()
#11 /srv/mediawiki/php-1.36.0-wmf.25/extensions/Wikibase/lib/includes/Store/Sql/Terms/DatabaseTypeIdsStore.php(66): MediaWiki\Storage\NameTableStore->getId(string)
#12 /srv/mediawiki/php-1.36.0-wmf.25/extensions/Wikibase/repo/includes/Store/Sql/Terms/DatabaseTermsCollisionDetector.php(68): Wikibase\Lib\Store\Sql\Terms\DatabaseTypeIdsStore->lookupTypeIds(array)
#13 /srv/mediawiki/php-1.36.0-wmf.25/extensions/Wikibase/repo/includes/Specials/SpecialNewProperty.php(232): Wikibase\Repo\Store\Sql\Terms\DatabaseTermsCollisionDetector->detectLabelCollision(string, string)
#14 /srv/mediawiki/php-1.36.0-wmf.25/extensions/Wikibase/repo/includes/Specials/SpecialNewEntity.php(150): Wikibase\Repo\Specials\SpecialNewProperty->validateFormData(array)
#15 /srv/mediawiki/php-1.36.0-wmf.25/includes/htmlform/HTMLForm.php(713): Wikibase\Repo\Specials\SpecialNewEntity->Wikibase\Repo\Specials\{closure}(array, OOUIHTMLForm)
#16 /srv/mediawiki/php-1.36.0-wmf.25/includes/htmlform/HTMLForm.php(603): HTMLForm->trySubmit()
#17 /srv/mediawiki/php-1.36.0-wmf.25/extensions/Wikibase/repo/includes/Specials/SpecialNewEntity.php(108): HTMLForm->tryAuthorizedSubmit()
#18 /srv/mediawiki/php-1.36.0-wmf.25/includes/specialpage/SpecialPage.php(645): Wikibase\Repo\Specials\SpecialNewEntity->execute(NULL)
#19 /srv/mediawiki/php-1.36.0-wmf.25/includes/specialpage/SpecialPageFactory.php(1404): SpecialPage->run(NULL)
#20 /srv/mediawiki/php-1.36.0-wmf.25/includes/MediaWiki.php(310): MediaWiki\SpecialPage\SpecialPageFactory->executePath(Title, RequestContext)
#21 /srv/mediawiki/php-1.36.0-wmf.25/includes/MediaWiki.php(945): MediaWiki->performRequest()
#22 /srv/mediawiki/php-1.36.0-wmf.25/includes/MediaWiki.php(548): MediaWiki->main()
#23 /srv/mediawiki/php-1.36.0-wmf.25/index.php(53): MediaWiki->run()
#24 /srv/mediawiki/php-1.36.0-wmf.25/index.php(46): wfIndexMain()
#25 /srv/mediawiki/w/index.php(3): require(string)
#26 {main}

Still seen.

error
Error 1146: Table 'commonswiki.wbt_type' doesn't exist
Function: MediaWiki\Storage\NameTableStore::loadTable
Query: SELECT  wby_id AS `id`,wby_name AS `name`  FROM `wbt_type`     ORDER BY id
trace
[…]
#6 /srv/mediawiki/php-1.36.0-wmf.35/includes/Storage/NameTableStore.php(380): Wikimedia\Rdbms\DBConnRef->select(string, array, array, string, array)
#7 /srv/mediawiki/php-1.36.0-wmf.35/includes/Storage/NameTableStore.php(355): MediaWiki\Storage\NameTableStore->loadTable(Wikimedia\Rdbms\DBConnRef)
#8 /srv/mediawiki/php-1.36.0-wmf.35/includes/libs/objectcache/wancache/WANObjectCache.php(1604): MediaWiki\Storage\NameTableStore->MediaWiki\Storage\{closure}(boolean, integer, array, NULL, array)
#9 /srv/mediawiki/php-1.36.0-wmf.35/includes/libs/objectcache/wancache/WANObjectCache.php(1432): WANObjectCache->fetchOrRegenerate(string, integer, Closure, array, array)
#10 /srv/mediawiki/php-1.36.0-wmf.35/includes/Storage/NameTableStore.php(356): WANObjectCache->getWithSetCallback(string, integer, Closure)
#11 /srv/mediawiki/php-1.36.0-wmf.35/includes/Storage/NameTableStore.php(256): MediaWiki\Storage\NameTableStore->getTableFromCachesOrReplica()
#12 /srv/mediawiki/php-1.36.0-wmf.35/extensions/Wikibase/lib/includes/Store/Sql/Terms/DatabaseTypeIdsStore.php(66): MediaWiki\Storage\NameTableStore->getId(string)
#13 /srv/mediawiki/php-1.36.0-wmf.35/extensions/Wikibase/repo/includes/Store/Sql/Terms/DatabaseTermsCollisionDetector.php(91): Wikibase\Lib\Store\Sql\Terms\DatabaseTypeIdsStore->lookupTypeIds(array)
#14 /srv/mediawiki/php-1.36.0-wmf.35/extensions/Wikibase/repo/includes/Specials/SpecialNewItem.php(304): Wikibase\Repo\Store\Sql\Terms\DatabaseTermsCollisionDetector->detectLabelAndDescriptionCollision(string, string, string)
#15 /srv/mediawiki/php-1.36.0-wmf.35/extensions/Wikibase/repo/includes/Specials/SpecialNewEntity.php(150): Wikibase\Repo\Specials\SpecialNewItem->validateFormData(array)
#16 /srv/mediawiki/php-1.36.0-wmf.35/includes/htmlform/HTMLForm.php(714): Wikibase\Repo\Specials\SpecialNewEntity->Wikibase\Repo\Specials\{closure}(array, OOUIHTMLForm)
#17 /srv/mediawiki/php-1.36.0-wmf.35/includes/htmlform/HTMLForm.php(604): HTMLForm->trySubmit()
#18 /srv/mediawiki/php-1.36.0-wmf.35/extensions/Wikibase/repo/includes/Specials/SpecialNewEntity.php(108): HTMLForm->tryAuthorizedSubmit()

Why it's possible to create an item in commons? https://commons.wikimedia.org/wiki/Special:NewItem This should be disabled.

Why it's possible to create an item in commons? https://commons.wikimedia.org/wiki/Special:NewItem This should be disabled.

Yes, it should, and I think it was (unless I'm mis-remembering fixing that). Possibly the config for this has stopped working?

The stacktrace in T242959#6962744 is different to the one that was originally reported in this ticket.
The original stacktrace is trying to set a label on a property on commons (which fails at the same sort of point)

Why it's possible to create an item in commons? https://commons.wikimedia.org/wiki/Special:NewItem This should be disabled.

It is not possible to create an item or property in commons.
Though per T207683 the pages etc still get loaded currently.
Pages like this should be loaded or registered as part of the entity type, thus only loading when the entity type is loaded as a local entity type.

The stack in T242959#6962744 is a little different as this API module will exist always, but should fail earlier if the parsed item id is not for a local entity.
The API however still allows valid item and property ids as input, but it will fail to write to them for a variety of reasons (like the one we see), as they live on wikidata.

I have reworded T207683 slightly and added this api module to the list

5 of the errors happened about 10 minutes ago.

Just another thought on this quite old ticket.
This error complains as the tables do not exist.
The tables should exist, as Wikibase installs them (even if they are not used)

The tables should exist, as Wikibase installs them (even if they are not used)

Well, we don’t run update.php in production, so there’s no point in time where Wikibase would’ve installed them, right?

Change 757929 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Check for local entity types in MediawikiEditEntity

https://gerrit.wikimedia.org/r/757929

Krinkle renamed this task from A database query error has occurred. Query: SELECT wby_id AS `id`,wby_name AS `name` FROM `wbt_type` ORDER BY id Function: MediaWiki\Storage\NameTableStore::loadTableError: 1146 Table 'commonswiki.wbt_type' doesn't exist to NameTableStore::loadTableError: 1146 Table 'commonswiki.wbt_type' doesn't exist.Feb 21 2022, 12:36 PM
Krinkle renamed this task from NameTableStore::loadTableError: 1146 Table 'commonswiki.wbt_type' doesn't exist to Error from NameTableStore::loadTable: Table 'commonswiki.wbt_type' doesn't exist.
Krinkle added a subscriber: cjming.

There are a number of side-effect errors in production that suggest NameTableStore is not only failing to execute its query but also leaves the underlying connection in a dirty state and thus affecting unrelated other code paths:

Caller from MediaWiki\User\TalkPageNotificationManager::dbCheckNewUserMessages ignored an error originally raised from MediaWiki\Storage\NameTableStore::loadTable: [1146] Table 'commonswiki.wbt_type' doesn't exist

Caller from LinkBatch::doQuery (for Skin::preloadExistence) ignored an error originally raised from MediaWiki\Storage\NameTableStore::loadTable: [1146] Table 'commonswiki.wbt_type' doesn't exist

There are a number of side-effect errors in production that suggest NameTableStore is not only failing to execute its query but also leaves the underlying connection in a dirty state and thus affecting unrelated other code paths:

I guess that could be due to NameTableStore::retryStore() catching exceptions (including DB errors) without rethrowing them, which according to mw:Database transactions is “extremely bad practice” (and I remember @Ladsgroup removing several such cases in the past). But I might be missing something about the transaction handling in that class.

Yes. There are some exceptions including x1 connections (as the read-only there is a bit complicated) but I don't think that applies here.

The deprecation warnings are still showing up in 1.39.0-wmf.2:

Error
normalized_message
[{reqId}] {exception_url}   PHP Deprecated: Caller from MediaWiki\User\TalkPageNotificationManager::dbCheckNewUserMessages ignored an error originally raised from MediaWiki\Storage\NameTableStore::loadTable: [1146] Table 'commonswiki.wbt_type' doesn't exi
exception.trace
from /srv/mediawiki/php-1.39.0-wmf.1/includes/debug/MWDebug.php(377)
#0 [internal function]: MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.39.0-wmf.1/includes/debug/MWDebug.php(377): trigger_error(string, integer)
#2 /srv/mediawiki/php-1.39.0-wmf.1/includes/db/MWLBFactory.php(436): MWDebug::sendRawDeprecated(string, boolean, string)
#3 [internal function]: MWLBFactory::logDeprecation(string)
#4 /srv/mediawiki/php-1.39.0-wmf.1/includes/libs/rdbms/database/TransactionManager.php(196): call_user_func(array, string)
#5 /srv/mediawiki/php-1.39.0-wmf.1/includes/libs/rdbms/database/Database.php(1422): Wikimedia\Rdbms\TransactionManager->assertTransactionStatus(Wikimedia\Rdbms\DatabaseMysqli, array, string)
#6 /srv/mediawiki/php-1.39.0-wmf.1/includes/libs/rdbms/database/Database.php(1149): Wikimedia\Rdbms\Database->assertQueryIsCurrentlyAllowed(string, string)
#7 /srv/mediawiki/php-1.39.0-wmf.1/includes/libs/rdbms/database/Database.php(1793): Wikimedia\Rdbms\Database->query(string, string, integer)
#8 /srv/mediawiki/php-1.39.0-wmf.1/includes/libs/rdbms/database/Database.php(1632): Wikimedia\Rdbms\Database->select(string, string, array, string, array, array)
#9 /srv/mediawiki/php-1.39.0-wmf.1/includes/libs/rdbms/database/DBConnRef.php(68): Wikimedia\Rdbms\Database->selectField(string, string, array, string)
#10 /srv/mediawiki/php-1.39.0-wmf.1/includes/libs/rdbms/database/DBConnRef.php(266): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#11 /srv/mediawiki/php-1.39.0-wmf.1/includes/user/TalkPageNotificationManager.php(201): Wikimedia\Rdbms\DBConnRef->selectField(string, string, array, string)
#12 /srv/mediawiki/php-1.39.0-wmf.1/includes/user/TalkPageNotificationManager.php(92): MediaWiki\User\TalkPageNotificationManager->dbCheckNewUserMessages(User)
#13 /srv/mediawiki/php-1.39.0-wmf.1/extensions/Echo/includes/EchoHooks.php(1002): MediaWiki\User\TalkPageNotificationManager->userHasNewMessages(User)
#14 /srv/mediawiki/php-1.39.0-wmf.1/extensions/Echo/includes/EchoHooks.php(831): EchoHooks::shouldDisplayTalkAlert(User, Title)
#15 /srv/mediawiki/php-1.39.0-wmf.1/includes/HookContainer/HookContainer.php(338): EchoHooks::beforePageDisplay(OutputPage, Vector\SkinVector)
#16 /srv/mediawiki/php-1.39.0-wmf.1/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
#17 /srv/mediawiki/php-1.39.0-wmf.1/includes/HookContainer/HookRunner.php(939): MediaWiki\HookContainer\HookContainer->run(string, array, array)
#18 /srv/mediawiki/php-1.39.0-wmf.1/includes/OutputPage.php(2803): MediaWiki\HookContainer\HookRunner->onBeforePageDisplay(OutputPage, Vector\SkinVector)
#19 /srv/mediawiki/php-1.39.0-wmf.1/includes/exception/MWExceptionRenderer.php(157): OutputPage->output()
#20 /srv/mediawiki/php-1.39.0-wmf.1/includes/exception/MWExceptionRenderer.php(76): MWExceptionRenderer::reportHTML(Wikimedia\Rdbms\DBQueryError)
#21 /srv/mediawiki/php-1.39.0-wmf.1/includes/exception/MWExceptionHandler.php(107): MWExceptionRenderer::output(Wikimedia\Rdbms\DBQueryError, integer)
#22 /srv/mediawiki/php-1.39.0-wmf.1/includes/exception/MWExceptionHandler.php(202): MWExceptionHandler::report(Wikimedia\Rdbms\DBQueryError)
#23 /srv/mediawiki/php-1.39.0-wmf.1/includes/MediaWiki.php(584): MWExceptionHandler::handleException(Wikimedia\Rdbms\DBQueryError, string)
#24 /srv/mediawiki/php-1.39.0-wmf.1/index.php(53): MediaWiki->run()
#25 /srv/mediawiki/php-1.39.0-wmf.1/index.php(46): wfIndexMain()
#26 /srv/mediawiki/w/index.php(3): require(string)
#27 {main}

Change 757929 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Check for local entity types in MediawikiEditEntity

https://gerrit.wikimedia.org/r/757929

Should roll out with wmf.4 tomorrow (praise the trainsperiment week!), let’s see if it works then.

Krinkle assigned this task to Lucas_Werkmeister_WMDE.

Confirmed via the ApiSandbox example in the task description. However, it now produces a different fatal error that still counts as the same severity production error. This probably still needs to be caught somewhere and turned into an API error that blames the client, instead of now where it counts as an internal server error.

"error": {
    "code": "internal_api_error_InvalidArgumentException",
    "info": "[5c825728-ab28-4c14-9c67-a8bc8b96a56c] Caught exception of type InvalidArgumentException",
    "errorclass": "InvalidArgumentException"
},
InvalidArgumentException: Entity type property cannot be edited on this wiki.

from /srv/mediawiki/php-1.39.0-wmf.4/extensions/Wikibase/repo/includes/EditEntity/MediawikiEditEntity.php(629)
#0 /srv/mediawiki/php-1.39.0-wmf.4/extensions/Wikibase/repo/includes/EditEntity/MediawikiEditEntity.php(669): Wikibase\Repo\EditEntity\MediawikiEditEntity->checkLocal(Wikibase\DataModel\Entity\Property)
#1 /srv/mediawiki/php-1.39.0-wmf.4/extensions/Wikibase/repo/includes/EditEntity/StatsdSaveTimeRecordingEditEntity.php(77): Wikibase\Repo\EditEntity\MediawikiEditEntity->attemptSave(Wikibase\DataModel\Entity\Property, string, integer, string, NULL, array)
#2 /srv/mediawiki/php-1.39.0-wmf.4/extensions/Wikibase/repo/includes/Api/EntitySavingHelper.php(392): Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity->attemptSave(Wikibase\DataModel\Entity\Property, string, integer, string, NULL, array)
#3 /srv/mediawiki/php-1.39.0-wmf.4/extensions/Wikibase/repo/includes/Api/ModifyEntity.php(339): Wikibase\Repo\Api\EntitySavingHelper->attemptSaveEntity(Wikibase\DataModel\Entity\Property, string, array, DerivativeContext)
#4 /srv/mediawiki/php-1.39.0-wmf.4/includes/api/ApiMain.php(1897): Wikibase\Repo\Api\ModifyEntity->execute()

Let’s just reopen it then, I don’t think treating it as a new task is useful. (I’ll adjust the title and description.)

Lucas_Werkmeister_WMDE renamed this task from Error from NameTableStore::loadTable: Table 'commonswiki.wbt_type' doesn't exist to Internal API errors when trying to edit Wikidata entities from Commons.Mar 28 2022, 11:23 AM
Lucas_Werkmeister_WMDE removed Lucas_Werkmeister_WMDE as the assignee of this task.
Lucas_Werkmeister_WMDE updated the task description. (Show Details)

Change 774455 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Return Status for editing non-local entity instead of throwing

https://gerrit.wikimedia.org/r/774455

Change 774455 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Return Status for editing non-local entity instead of throwing

https://gerrit.wikimedia.org/r/774455

Can be verified with next week’s train, using the API sandbox link in the task description (after updating the token parameter).

Change 643810 abandoned by Lucas Werkmeister (WMDE):

[mediawiki/extensions/Wikibase@master] Prevent trying to edit foreign entities in ModifyEntity

Reason:

we went with other patches instead (see the task)

https://gerrit.wikimedia.org/r/643810

thcipriani subscribed.
Error
labels.normalized_message
[{reqId}] {exception_url}   Wikimedia\Rdbms\DBQueryError: Error 1146: Table 'commonswiki.wbt_type' doesn't exist
Function: MediaWiki\Storage\NameTableStore::loadTable
Query: SELECT  wby_id AS `id`,wby_name AS `name`  FROM `wbt_type`     ORDER BY id
error.stack_trace
from /srv/mediawiki/php-1.41.0-wmf.2/includes/libs/rdbms/database/Database.php(1523)
#0 /srv/mediawiki/php-1.41.0-wmf.2/includes/libs/rdbms/database/Database.php(1507): Wikimedia\Rdbms\Database->getQueryException(string, integer, string, string)
#1 /srv/mediawiki/php-1.41.0-wmf.2/includes/libs/rdbms/database/Database.php(1481): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, integer, string, string)
#2 /srv/mediawiki/php-1.41.0-wmf.2/includes/libs/rdbms/database/Database.php(854): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#3 /srv/mediawiki/php-1.41.0-wmf.2/includes/libs/rdbms/database/Database.php(1628): Wikimedia\Rdbms\Database->query(string, string, integer)
#4 /srv/mediawiki/php-1.41.0-wmf.2/includes/libs/rdbms/database/DBConnRef.php(119): Wikimedia\Rdbms\Database->select(array, array, array, string, array, array)
#5 /srv/mediawiki/php-1.41.0-wmf.2/includes/libs/rdbms/database/DBConnRef.php(344): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#6 /srv/mediawiki/php-1.41.0-wmf.2/includes/libs/rdbms/querybuilder/SelectQueryBuilder.php(652): Wikimedia\Rdbms\DBConnRef->select(array, array, array, string, array, array)
#7 /srv/mediawiki/php-1.41.0-wmf.2/includes/Storage/NameTableStore.php(375): Wikimedia\Rdbms\SelectQueryBuilder->fetchResultSet()
#8 /srv/mediawiki/php-1.41.0-wmf.2/includes/Storage/NameTableStore.php(351): MediaWiki\Storage\NameTableStore->loadTable(Wikimedia\Rdbms\DBConnRef)
#9 /srv/mediawiki/php-1.41.0-wmf.2/includes/libs/objectcache/wancache/WANObjectCache.php(1756): MediaWiki\Storage\NameTableStore->MediaWiki\Storage\{closure}(boolean, integer, array, NULL, array)
#10 /srv/mediawiki/php-1.41.0-wmf.2/includes/libs/objectcache/wancache/WANObjectCache.php(1586): WANObjectCache->fetchOrRegenerate(string, integer, Closure, array, array)
#11 /srv/mediawiki/php-1.41.0-wmf.2/includes/Storage/NameTableStore.php(352): WANObjectCache->getWithSetCallback(string, integer, Closure)
#12 /srv/mediawiki/php-1.41.0-wmf.2/includes/Storage/NameTableStore.php(254): MediaWiki\Storage\NameTableStore->getTableFromCachesOrReplica()
#13 /srv/mediawiki/php-1.41.0-wmf.2/extensions/Wikibase/lib/includes/Store/Sql/Terms/DatabaseTypeIdsStore.php(65): MediaWiki\Storage\NameTableStore->getId(string)
#14 /srv/mediawiki/php-1.41.0-wmf.2/extensions/Wikibase/repo/includes/Store/Sql/Terms/DatabaseTermsCollisionDetector.php(94): Wikibase\Lib\Store\Sql\Terms\DatabaseTypeIdsStore->lookupTypeIds(array)
#15 /srv/mediawiki/php-1.41.0-wmf.2/extensions/Wikibase/repo/includes/Specials/SpecialNewItem.php(333): Wikibase\Repo\Store\Sql\Terms\DatabaseTermsCollisionDetector->detectLabelAndDescriptionCollision(string, string, string)
#16 /srv/mediawiki/php-1.41.0-wmf.2/extensions/Wikibase/repo/includes/Specials/SpecialNewEntity.php(153): Wikibase\Repo\Specials\SpecialNewItem->validateFormData(array)
#17 /srv/mediawiki/php-1.41.0-wmf.2/includes/htmlform/HTMLForm.php(744): Wikibase\Repo\Specials\SpecialNewEntity->Wikibase\Repo\Specials\{closure}(array, OOUIHTMLForm)
#18 /srv/mediawiki/php-1.41.0-wmf.2/includes/htmlform/HTMLForm.php(624): HTMLForm->trySubmit()
#19 /srv/mediawiki/php-1.41.0-wmf.2/extensions/Wikibase/repo/includes/Specials/SpecialNewEntity.php(111): HTMLForm->tryAuthorizedSubmit()
#20 /srv/mediawiki/php-1.41.0-wmf.2/includes/specialpage/SpecialPage.php(701): Wikibase\Repo\Specials\SpecialNewEntity->execute(NULL)
#21 /srv/mediawiki/php-1.41.0-wmf.2/includes/specialpage/SpecialPageFactory.php(1491): SpecialPage->run(NULL)
#22 /srv/mediawiki/php-1.41.0-wmf.2/includes/MediaWiki.php(328): MediaWiki\SpecialPage\SpecialPageFactory->executePath(string, RequestContext)
#23 /srv/mediawiki/php-1.41.0-wmf.2/includes/MediaWiki.php(926): MediaWiki->performRequest()
#24 /srv/mediawiki/php-1.41.0-wmf.2/includes/MediaWiki.php(579): MediaWiki->main()
#25 /srv/mediawiki/php-1.41.0-wmf.2/index.php(50): MediaWiki->run()
#26 /srv/mediawiki/php-1.41.0-wmf.2/index.php(46): wfIndexMain()
#27 /srv/mediawiki/w/index.php(3): require(string)
#28 {main}
Notes

Seeing a few of these again on commons this morning for 1.41.0-wmf.2, looks like a longer stacktrace than previous, but still starting from the same place.