The purpose of NameTabelStores is to provide aggressive caching for certain database tables. These caches need to be reset when the corresponding table is reset between unit tests. NameTableStore has a reloadMap() method for that purpose, but there is no easy way to get hold of all the NameTabelStore instances. In particular, RevisionStoreFactory presently constructs NameTableStores for content_models and slot_roles that are untracked, it does not use the instances provided MediaWikiServices::getContentModelStore() and MediaWikiServices::getSlotRoleStore(), in order to be able to cosntruct NameTabelStore for an arbitrary target database.
We needs to either:
* reset ALL services between tests
* or track all NameTabelStore and reset them when the tables get reset
* or at least make RevisionStoreFactory use the same instances we return from getContentModelStore, getSlotRoleStore, etc. A NameTabelStoreFactory may be used to achieve this.
Note: there are several mechanisms that may trigger a table to be re-set:
# MediaWikiTestCase::tablesUsed
# MediaWikiTestCase::truncateTable
# MediaWikiTestCase::getSchemaOverrides
--------------------------------------------
Sample test failures caused by the table getting reset, but the NameTabelStore instance persisting (from <https://gerrit.wikimedia.org/r/c/mediawiki/core/+/443831/7>):
```
13:53:02 1) ApiComparePagesTest::testDiff with data set "Basic diff, titles" (array('ApiComparePagesTest A', 'ApiComparePagesTest B'), array(array('{{REPL:pageA}}', '{{REPL:revA4}}', 0, 'ApiComparePagesTest A', '{{REPL:pageB}}', '{{REPL:revB4}}', 0, 'ApiComparePagesTest B', '<tr><td colspan="2" class="di.../tr>\n')))
13:53:02 MediaWiki\Storage\NameTableAccessException: Failed to access name from slot_roles using id = 1
13:53:02
13:53:02 /workspace/src/includes/Storage/NameTableAccessException.php:42
13:53:02 /workspace/src/includes/Storage/NameTableStore.php:307
13:53:02 /workspace/src/includes/Storage/RevisionStore.php:1481
13:53:02 /workspace/src/includes/Storage/RevisionStore.php:1528
13:53:02 /workspace/src/includes/Storage/RevisionSlots.php:164
13:53:02 /workspace/src/includes/Storage/RevisionSlots.php:106
13:53:02 /workspace/src/includes/Storage/RevisionRecord.php:191
13:53:02 /workspace/src/includes/Storage/RevisionRecord.php:174
13:53:02 /workspace/src/includes/Revision.php:903
13:53:02 /workspace/src/includes/api/ApiComparePages.php:339
13:53:02 /workspace/src/includes/api/ApiComparePages.php:39
13:53:02 /workspace/src/includes/api/ApiMain.php:1577
13:53:02 /workspace/src/includes/api/ApiMain.php:500
13:53:02 /workspace/src/tests/phpunit/includes/api/ApiTestCase.php:107
13:53:02 /workspace/src/tests/phpunit/includes/api/ApiComparePagesTest.php:149
13:53:02 /workspace/src/tests/phpunit/MediaWikiTestCase.php:476
13:53:02 /workspace/src/maintenance/doMaintenance.php:94
```
```
13:53:02 27) ApiParseTest::testHeadHtml
13:53:02 MediaWiki\Storage\NameTableAccessException: Failed to access name from content_models using id = 2
13:53:02
13:53:02 /workspace/src/includes/Storage/NameTableAccessException.php:42
13:53:02 /workspace/src/includes/Storage/NameTableStore.php:307
13:53:02 /workspace/src/includes/Storage/RevisionStore.php:1482
13:53:02 /workspace/src/includes/Storage/RevisionStore.php:1528
13:53:02 /workspace/src/includes/Storage/RevisionSlots.php:164
13:53:02 /workspace/src/includes/Storage/RevisionSlots.php:106
13:53:02 /workspace/src/includes/Storage/RevisionRecord.php:191
13:53:02 /workspace/src/includes/Revision.php:668
13:53:02 /workspace/src/includes/Revision.php:936
13:53:02 /workspace/src/includes/page/WikiPage.php:632
13:53:02 /workspace/src/includes/libs/objectcache/WANObjectCache.php:1246
13:53:02 /workspace/src/includes/libs/objectcache/WANObjectCache.php:1119
13:53:02 /workspace/src/includes/page/WikiPage.php:638
13:53:02 /workspace/src/includes/page/WikiPage.php:260
13:53:02 /workspace/src/includes/page/WikiPage.php:1149
13:53:02 /workspace/src/includes/page/WikiPage.php:1169
13:53:02 /workspace/src/includes/api/ApiParse.php:594
13:53:02 /workspace/src/includes/api/ApiParse.php:163
13:53:02 /workspace/src/includes/api/ApiMain.php:1577
13:53:02 /workspace/src/includes/api/ApiMain.php:500
13:53:02 /workspace/src/tests/phpunit/includes/api/ApiTestCase.php:107
13:53:02 /workspace/src/tests/phpunit/includes/api/ApiParseTest.php:530
13:53:02 /workspace/src/tests/phpunit/MediaWikiTestCase.php:476
13:53:02 /workspace/src/maintenance/doMaintenance.php:94
```