Page MenuHomePhabricator

Move the addWiki.php maintenance script from WikimediaMaintenance into MediaWiki core
Closed, ResolvedPublic

Description

This task is part of the Wikimedia Foundation department's OKR (Objectives and Key Results) work. It is connected to the Future of Language Incubation, a new experiment to implement and test recommendations to support language incubation. This specific task is related to Automate Backend Site Creation recommendation.

Hypothesis statement: If we move addwiki.php to MediaWiki Core and customize it to Wikimedia, we will improve code quality in our wiki creation system making it testable and robust, and we will make it easy for creators of new wikis and thereby make significant steps towards simplifying wiki creation process.


addWiki.php in WikimediaMaintenance often breaks because it has its own list of extension table SQL files which need to be kept up to date, duplicating the LoadExtensionSchemaUpdates hook which is used everywhere except Wikimedia production.

The essential function of addWiki.php is not really specific to Wikimedia. It uses the configuration of an existing wiki as a bootstrap to create a new wiki. That's something which would be useful to non-WMF users.

A common criticism of addWiki.php is that it's not testable outside of production. By making it be more generic, we can test it in typical local installs.

So I propose moving addWiki.php to core and using a wrapper or hooks or both to customise it for Wikimedia.

T222913 asks for better staging/checkpointing features. So I imagine any hooks would define tasks to run, rather than actually doing the tasks. Then addWiki.php can provide features to:

  • Create a checkpoint and restart from a given checkpoint
  • Skip a stage
  • Run a single stage

We don't currently run the updater in WMF production at all, because it's scary when you don't know exactly what it's going to do. But it should be less scary to run part of it on a new wiki. Maybe we can have some sort of dry run mode.

Task list

addWiki.php performs the following tasks:

  • Environment checks (language existence, check extensions loaded)
  • Core database and tables.
  • Extension tables (equivalent to LoadExtensionSchemaUpdates). Instead of checking the site name to figure out the extensions, we would rely on the bootstrap wiki having the correct list of extensions, which could be confirmed with an environment check hook. Selecting a bootstrap wiki could be simplified using a wrapper script.
  • site_stats (equivalent to core Installer::populateSiteStats).
  • External store initialisation (core blobs, growth, echo, mediamoderation). This would be moved to hooks in the relevant extensions.
  • Main page. This override could be in a file specified in configuration.
  • Create Mediawiki:Sitesupport-url. Unclear why this is here and not in a hook in WikimediaMessages to override the default. Updating the URL would be a nuisance when it's overridden in this way.
  • Wikibase populateSitesTable.php. We pass the "site group name", but SitesBuilder can also guess the site name with its WMF-specific hacks.
  • Cognate populateCognateSites.php requires the "site group".
  • setZoneAccess.php with backend and private option
  • Refresh MassMessage urltodb cache
  • Send notification to newprojects mailing list

Details

Related Changes in Gerrit:
SubjectRepoBranchLines +/-
mediawiki/extensions/ApiFeatureUsagemaster+6 -3
mediawiki/coremaster+531 -136
mediawiki/coremaster+70 -1
mediawiki/extensions/WikimediaMaintenancemaster+53 -22
operations/mediawiki-configmaster+25 -2
mediawiki/corewmf/1.44.0-wmf.5+19 -15
mediawiki/extensions/WikimediaMaintenancewmf/1.44.0-wmf.5+7 -0
mediawiki/extensions/WikimediaMaintenancewmf/1.44.0-wmf.5+151 -441
operations/mediawiki-configmaster+25 -3
mediawiki/coremaster+19 -15
mediawiki/extensions/Echomaster+6 -2
mediawiki/extensions/WikimediaMaintenancemaster+7 -0
mediawiki/extensions/WikimediaMaintenancemaster+151 -441
operations/mediawiki-configmaster+57 -14
operations/mediawiki-configmaster+35 -0
mediawiki/coremaster+32 -1
mediawiki/extensions/Echomaster+66 -1
mediawiki/extensions/Cognatemaster+92 -4
mediawiki/extensions/MassMessagemaster+32 -5
mediawiki/extensions/MediaModerationmaster+11 -152
mediawiki/coremaster+131 -4
mediawiki/coremaster+295 -59
mediawiki/extensions/CentralAuthmaster+37 -28
mediawiki/coremaster+566 -55
mediawiki/extensions/Translatemaster+62 -42
mediawiki/coremaster+3 -194
Show related patches Customize query in gerrit
Related Changes in GitLab:
TitleReferenceAuthorSource BranchDest Branch
Remove check for agreement between all.dblist and wikiversions.jsonrepos/releng/scap!600tstarlingpreinstall-dblistmaster
Update suggested commands for the new addWiki.phpladsgroup/Phabricator-maintenance-bot!16tstarlingnew-addWikimaster
Customize query in GitLab

Related Objects

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Change #1094144 merged by jenkins-bot:

[mediawiki/core@master] installer: Allow subclasses of InstallPreConfigured

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

Change #1098640 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/extensions/WikimediaMaintenance@master] dumpInterwiki: read from preinstall.dblist

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

Change #1094126 merged by jenkins-bot:

[operations/mediawiki-config@master] Move default main page text for new wikis to config

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

Change #1096839 merged by jenkins-bot:

[operations/mediawiki-config@master] Introduce preinstall.dblist for wikis that haven't been installed yet

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

Mentioned in SAL (#wikimedia-operations) [2024-11-28T00:01:47Z] <tstarling@deploy2002> Started scap sync-world: Backport for [[gerrit:1094126|Move default main page text for new wikis to config (T352113)]], [[gerrit:1096839|Introduce preinstall.dblist for wikis that haven't been installed yet (T352113)]]

Mentioned in SAL (#wikimedia-operations) [2024-11-28T00:07:21Z] <tstarling@deploy2002> tstarling: Backport for [[gerrit:1094126|Move default main page text for new wikis to config (T352113)]], [[gerrit:1096839|Introduce preinstall.dblist for wikis that haven't been installed yet (T352113)]] synced to the testservers (https://wikitech.wikimedia.org/wiki/Mwdebug)

Mentioned in SAL (#wikimedia-operations) [2024-11-28T00:16:29Z] <tstarling@deploy2002> Finished scap sync-world: Backport for [[gerrit:1094126|Move default main page text for new wikis to config (T352113)]], [[gerrit:1096839|Introduce preinstall.dblist for wikis that haven't been installed yet (T352113)]] (duration: 14m 42s)

Change #1094138 merged by jenkins-bot:

[mediawiki/extensions/WikimediaMaintenance@master] Convert addWiki.php to a wrapper around core installPreConfigured.php

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

Change #1098679 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/extensions/Echo@master] Fix installer error when the task is run a second time

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

Change #1098686 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/core@master] Fix various installPreConfigured bugs

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

Change #1098686 merged by jenkins-bot:

[mediawiki/core@master] Fix various installPreConfigured bugs

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

Change #1098640 merged by jenkins-bot:

[mediawiki/extensions/WikimediaMaintenance@master] dumpInterwiki: read from preinstall.dblist

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

Change #1098679 merged by jenkins-bot:

[mediawiki/extensions/Echo@master] Fix installer error when the task is run a second time

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

Change #1098917 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[operations/mediawiki-config@master] Prepare id.wikivoyage.org for installation

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

Change #1099059 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/core@wmf/1.44.0-wmf.5] Fix various installPreConfigured bugs

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

Change #1099061 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/extensions/WikimediaMaintenance@wmf/1.44.0-wmf.5] Convert addWiki.php to a wrapper around core installPreConfigured.php

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

Change #1099065 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/extensions/WikimediaMaintenance@wmf/1.44.0-wmf.5] dumpInterwiki: read from preinstall.dblist

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

Change #1098917 merged by jenkins-bot:

[operations/mediawiki-config@master] Prepare id.wikivoyage.org for installation

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

Change #1099061 merged by jenkins-bot:

[mediawiki/extensions/WikimediaMaintenance@wmf/1.44.0-wmf.5] Convert addWiki.php to a wrapper around core installPreConfigured.php

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

Change #1099065 merged by jenkins-bot:

[mediawiki/extensions/WikimediaMaintenance@wmf/1.44.0-wmf.5] dumpInterwiki: read from preinstall.dblist

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

Change #1099059 merged by Tim Starling:

[mediawiki/core@wmf/1.44.0-wmf.5] Fix various installPreConfigured bugs

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

tstarling opened https://gitlab.wikimedia.org/repos/releng/scap/-/merge_requests/600

Remove check for agreement between all.dblist and wikiversions.json

Mentioned in SAL (#wikimedia-operations) [2024-11-29T04:01:44Z] <tstarling@deploy2002> Started scap sync-world: Backport for [[gerrit:1098915|addWiki.php tweaks]], [[gerrit:1098916|Run dumpInterwiki.php locally with no changes]], [[gerrit:1098917|Prepare id.wikivoyage.org for installation (T380726 T352113)]], [[gerrit:1099065|dumpInterwiki: read from preinstall.dblist (T352113)]], [[gerrit:1099066|addWiki: Move DB_ADMIN to core]], [[gerrit:1099064|addWiki: Add UpdateSearchIndexConf

Mentioned in SAL (#wikimedia-operations) [2024-11-29T04:12:18Z] <tstarling@deploy2002> tstarling: Backport for [[gerrit:1098915|addWiki.php tweaks]], [[gerrit:1098916|Run dumpInterwiki.php locally with no changes]], [[gerrit:1098917|Prepare id.wikivoyage.org for installation (T380726 T352113)]], [[gerrit:1099065|dumpInterwiki: read from preinstall.dblist (T352113)]], [[gerrit:1099066|addWiki: Move DB_ADMIN to core]], [[gerrit:1099064|addWiki: Add UpdateSearchIndexConfig]], [[gerrit

Mentioned in SAL (#wikimedia-operations) [2024-11-29T04:20:17Z] <tstarling@deploy2002> Finished scap sync-world: Backport for [[gerrit:1098915|addWiki.php tweaks]], [[gerrit:1098916|Run dumpInterwiki.php locally with no changes]], [[gerrit:1098917|Prepare id.wikivoyage.org for installation (T380726 T352113)]], [[gerrit:1099065|dumpInterwiki: read from preinstall.dblist (T352113)]], [[gerrit:1099066|addWiki: Move DB_ADMIN to core]], [[gerrit:1099064|addWiki: Add UpdateSearchIndexCon

Change #1098918 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[operations/mediawiki-config@master] Create id.wikivoyage.org

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

Change #1098918 merged by jenkins-bot:

[operations/mediawiki-config@master] Create id.wikivoyage.org

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

Mentioned in SAL (#wikimedia-operations) [2024-12-02T03:55:25Z] <tstarling@deploy2002> Started scap sync-world: Backport for [[gerrit:1098918|Create id.wikivoyage.org (T380726 T352113)]], [[gerrit:1099405|Add messages for Indonesian Wikivoyage (idwikivoyage) (T380726)]]

Mentioned in SAL (#wikimedia-operations) [2024-12-02T04:12:28Z] <tstarling@deploy2002> tstarling: Backport for [[gerrit:1098918|Create id.wikivoyage.org (T380726 T352113)]], [[gerrit:1099405|Add messages for Indonesian Wikivoyage (idwikivoyage) (T380726)]] synced to the testservers (https://wikitech.wikimedia.org/wiki/Mwdebug)

Mentioned in SAL (#wikimedia-operations) [2024-12-02T04:26:30Z] <tstarling@deploy2002> Finished scap sync-world: Backport for [[gerrit:1098918|Create id.wikivoyage.org (T380726 T352113)]], [[gerrit:1099405|Add messages for Indonesian Wikivoyage (idwikivoyage) (T380726)]] (duration: 31m 05s)

Notes from production test:

  • I ran the script using mwscript-k8s -f -- extensions/WikimediaMaintenance/addWiki.php --wiki=idwikivoyage
  • The wikiadmin2023 user on the s7 master did not have ALTER permissions, despite ALTER being included in the list of permissions in production-core.sql.erb in puppet. This caused it to fail at the extension-tables task. I added the grant manually and ran the script again from the start.
  • populateSitesTable reported "Got no data from https://meta.wikimedia.org/w/api.php"
  • There were a few errors in the logs due to the lack of the preinstall feature, which had to be dropped due to a scap dependency. Web clients hit id.wikivoyage.org and found it to be in various states of mid-install brokenness.

Complete logs from production test:

[extensions] Including extensions... done
[database] Setting up database... done
[tables] Creating tables... done
Warning: <strong>Warning:</strong> MediaWiki tables seem to already exist.
Skipping creation.
[stats] Initializing statistics... done
[interwiki] Populating default interwiki table... done
Warning: <strong>Warning:</strong> The interwiki table seems to already have entries.
Skipping default list.
[updates] Prevent running unneeded updates... done
[restore-services] Restoring MediaWiki services... done
[external-domains] Creating external databases... done
Warning: Skipping potentially shared domain "virtual-urlshortener"
Warning: Skipping potentially shared domain "virtual-globalblocking"
Warning: Skipping potentially shared domain "virtual-centralauth"
Warning: Skipping potentially shared domain "virtual-LoginNotify"
Warning: Skipping potentially shared domain "virtual-globaljsonlinks"
Warning: Skipping potentially shared domain "virtual-oathauth"
Warning: Skipping potentially shared domain "virtual-checkuser-global"
Warning: Skipping potentially shared domain "virtual-readinglists"
[extension-tables] Creating tables for enabled extensions... ...transcode table already exists.
Modifying transcode_time_error field of table transcode...done.
Creating global_block_whitelist table...done.
...gbw_address field does not exist in global_block_whitelist table, skipping modify field patch.
...global_block_whitelist table does not contain gbw_address field.
...global_block_whitelist table does not contain gbw_target_central_id field.
Creating securepoll_entity table...done.
Modifying el_end_date field of table securepoll_elections...done.
Modifying vote_timestamp field of table securepoll_votes...done.
Modifying st_timestamp field of table securepoll_strike...done.
Modifying cm_timestamp field of table securepoll_cookie_match...done.
...spmsg_entity key doesn't exist.
...sppr_entity key doesn't exist.
Creating spoofuser table...done.
...index su_normname_idx already set on spoofuser table.
Modifying table spoofuser with patch /srv/mediawiki/php-1.44.0-wmf.5/extensions/AntiSpoof/includes/../sql/mysql/patch-change-spoofuser-binary.sql...done.
Creating api_feature_usage table...done.
Creating cn_notices table...done.
...cn_notice_regions table already exists.
...have tmp_is_template field in cn_templates table.
Modifying tmp_is_template field of table cn_templates...done.
...have not_type field in cn_notices table.
...have notlog_begin_type field in cn_notice_log table.
Modifying not_end field of table cn_notices...done.
Modifying notlog_end_end field of table cn_notice_log...done.
...nl_notice_id_language key doesn't exist.
...np_notice_id_project key doesn't exist.
...nc_notice_id_country key doesn't exist.
...nr_notice_id_region key doesn't exist.
Adding known devices...
Done
Creating abuse_filter table...done.
...index afl_ip_timestamp already set on abuse_filter_log table.
...index afl_wiki_timestamp already set on abuse_filter_log table.
...skipping: index filter_timestamp doesn't exist.
...abuse_filter_log table does not contain afl_filter field.
...have af_actor field in abuse_filter table.
...have afh_actor field in abuse_filter_history table.
Running MediaWiki\Extension\AbuseFilter\Maintenance\MigrateActorsAF...
No need to migrate abuse_filter.af_user, field does not exist
No need to migrate abuse_filter_history.afh_user, field does not exist
done.
...abuse_filter table does not contain af_user field.
...abuse_filter_history table does not contain afh_user field.
Creating globalimagelinks table...done.
...globalimagelinks_to_wiki_page key doesn't exist.
Creating betafeatures_user_counts table...done.
Creating linter table...done.
...have linter_namespace field in linter table.
...have linter_template field in linter table.
Modifying linter_params field of table linter...done.
...mathoid doesn't exist.
...mathlatexml doesn't exist.
Creating babel table...done.
Modifying babel_lang field of table babel...done.
Modifying babel_level field of table babel...done.
Creating bounce_records table...done.
Modifying br_timestamp field of table bounce_records...done.
Creating geo_tags table...done.
...have gt_lon_int field in geo_tags table.
Creating discussiontools_subscription table...done.
Creating discussiontools_items table...done.
Creating revsrc table...done.
...revsrc_rs_unique key doesn't exist.
...swauthor doesn't exist.
...swauthor_links doesn't exist.
...swsource_links doesn't exist.
        Done!
Creating wbc_entity_usage table...done.
        Filling usage table: processed 0 pages, starting with page #0.
Creating globaljsonlinks table...done.
Creating cu_changes table...done.
Modifying cuc_id field of table cu_changes...done.
...index cuc_actor_ip_time already set on cu_changes table.
Modifying cuc_timestamp field of table cu_changes...done.
...have cul_reason_id field in cu_log table.
...have cul_actor field in cu_log table.
Running MediaWiki\CheckUser\Maintenance\PopulateCulActor...
The cu_log table seems to be empty.
done.
Running MediaWiki\CheckUser\Maintenance\PopulateCulComment...
The cu_log table seems to be empty.
done.
Running MediaWiki\CheckUser\Maintenance\PopulateCucActor...
The cu_changes table seems to be empty.
done.
Running MediaWiki\CheckUser\Maintenance\PopulateCucComment...
The cu_changes table seems to be empty.
done.
...cu_log_event table already exists.
...cu_private_event table already exists.
...cu_log table does not contain cul_user field.
Modifying cul_actor field of table cu_log...done.
...cu_log table does not contain cul_reason field.
Modifying cul_reason_id field of table cu_log...done.
...cu_changes table does not contain cuc_user field.
...cu_changes table does not contain cuc_comment field.
Modifying cuc_actor field of table cu_changes...done.
...cu_useragent_clienthints table already exists.
...cu_useragent_clienthints_map table already exists.
Running MediaWiki\CheckUser\Maintenance\MoveLogEntriesFromCuChanges...
cu_changes is empty; nothing to move.
done.
...have cul_result_id field in cu_log table.
Modifying cuc_id field of table cu_changes...done.
Modifying cupe_actor field of table cu_private_event...done.
...cu_useragent table already exists.
...have cuc_agent_id field in cu_changes table.
...have cule_agent_id field in cu_log_event table.
...have cupe_agent_id field in cu_private_event table.
Running MediaWiki\CheckUser\Maintenance\DeleteReadOldRowsInCuChanges...
cu_changes is empty; nothing to delete.
done.
...cu_changes table does not contain cuc_only_for_read_old field.
...cu_changes table does not contain cuc_actiontext field.
...cu_changes table does not contain cuc_private field.
...ipinfo_ip_changes doesn't exist.
...skipping update to table urlshortcodes in shared virtual domain.
...skipping update to table urlshortcodes in shared virtual domain.
...skipping update to table globalblocks in shared virtual domain.
...skipping update to table globalblocks in shared virtual domain.
...skipping update to table globalblocks in shared virtual domain.
...skipping update to table globalblocks in shared virtual domain.
...skipping update to table globalblocks in shared virtual domain.
...skipping update to table globalblocks in shared virtual domain.
...skipping update to table globalblocks in shared virtual domain.
...skipping update to table globalblocks in shared virtual domain.
...skipping update to table globalblocks in shared virtual domain.
Running MediaWiki\Extension\GlobalBlocking\Maintenance\UpdateAutoBlockParentIdColumn...
The field globalblocks.gb_autoblock_parent_id is not nullable, nothing to do.
done.
...skipping update to table globalblocks in shared virtual domain.
...skipping update to table globaluser in shared virtual domain.
Running MediaWiki\Extension\CentralAuth\Maintenance\MigrateGuSalt...
The gu_salt column does not seem to exist.
done.
...skipping update to table renameuser_queue in shared virtual domain.
...skipping update to table globaluser in shared virtual domain.
...skipping update to table loginnotify_seen_net in shared virtual domain.
...skipping update to table oathauth_types in shared virtual domain.
Creating mediamoderation_scan table...done.
...skipping update to table cuci_wiki_map in shared virtual domain.
...skipping update to table cuci_temp_edit in shared virtual domain.
...skipping update to table cuci_user in shared virtual domain.
...skipping update to table reading_list in shared virtual domain.
done
[echo-schema] Installing Echo tables... done
[mainpage] Creating main page with default content... done
Core installer complete

Running maintenance script class as if executing: populateSitesTable.php --wiki=idwikivoyage --wiki=idwikivoyage --force-protocol=https
Got no data from https://meta.wikimedia.org/w/api.php
done.
populateSitesTable.php complete

Running maintenance script class as if executing: setZoneAccess.php --wiki=idwikivoyage --backend=local-multiwrite
Making sure mwstore://local-multiwrite/local-public exists...making 'mwstore://local-multiwrite/local-public' public...done.
Making sure mwstore://local-multiwrite/local-thumb exists...making 'mwstore://local-multiwrite/local-thumb' public...done.
Making sure mwstore://local-multiwrite/local-transcoded exists...making 'mwstore://local-multiwrite/local-transcoded' public...done.
Making sure mwstore://local-multiwrite/local-temp exists...making 'mwstore://local-multiwrite/local-temp' private...done.
Making sure mwstore://local-multiwrite/local-deleted exists...making 'mwstore://local-multiwrite/local-deleted' private...done.
Making sure mwstore://local-multiwrite/timeline-render exists...making 'mwstore://local-multiwrite/timeline-render' public...done.
setZoneAccess.php complete

Running maintenance script class as if executing: UpdateSearchIndexConfig.php --wiki=idwikivoyage --cluster=all
Updating cluster eqiad...
indexing namespaces...
        Indexing namespaces...done
content index...
        Fetching Elasticsearch version...7.10.2...ok
        Scanning available plugins...
                analysis-hebrew, analysis-icu, analysis-nori, analysis-smartcn, analysis-stconvert
                analysis-stempel, analysis-ukrainian, experimental-highlighter, extra, extra-analysis-esperanto
                extra-analysis-homoglyph, extra-analysis-khmer, extra-analysis-serbian, extra-analysis-slovak, extra-analysis-textify
                extra-analysis-turkish, extra-analysis-ukrainian, ltr, repository-s3
        Picking analyzer...indonesian
        Inferring index identifier...idwikivoyage_content_first
        Creating index...
                Index is yellow retrying...
                Green!
        Index created.
                Validating number of shards...ok
                Validating replica range...ok
                Validating shard allocation settings...done
                Validating max shards per node...ok
        Validating analyzers...ok
        Validating mappings...
                Validating mapping...ok
        Validating new index is different...ok
        Validating aliases...
                Validating idwikivoyage_content alias...alias is free...corrected
                Validating idwikivoyage alias...alias not already assigned to this index...corrected
                Updating tracking indexes...done
general index...
        Fetching Elasticsearch version...7.10.2...ok
        Scanning available plugins...
                analysis-hebrew, analysis-icu, analysis-nori, analysis-smartcn, analysis-stconvert
                analysis-stempel, analysis-ukrainian, experimental-highlighter, extra, extra-analysis-esperanto
                extra-analysis-homoglyph, extra-analysis-khmer, extra-analysis-serbian, extra-analysis-slovak, extra-analysis-textify
                extra-analysis-turkish, extra-analysis-ukrainian, ltr, repository-s3
        Picking analyzer...indonesian
        Inferring index identifier...idwikivoyage_general_first
        Creating index...
                Index is yellow retrying...
                Green!
        Index created.
                Validating number of shards...ok
                Validating replica range...ok
                Validating shard allocation settings...done
                Validating max shards per node...ok
        Validating analyzers...ok
        Validating mappings...
                Validating mapping...ok
        Validating new index is different...ok
        Validating aliases...
                Validating idwikivoyage_general alias...alias is free...corrected
                Validating idwikivoyage alias...alias not already assigned to this index...corrected
                Updating tracking indexes...done
archive index...
        Fetching Elasticsearch version...7.10.2...ok
        Scanning available plugins...
                analysis-hebrew, analysis-icu, analysis-nori, analysis-smartcn, analysis-stconvert
                analysis-stempel, analysis-ukrainian, experimental-highlighter, extra, extra-analysis-esperanto
                extra-analysis-homoglyph, extra-analysis-khmer, extra-analysis-serbian, extra-analysis-slovak, extra-analysis-textify
                extra-analysis-turkish, extra-analysis-ukrainian, ltr, repository-s3
        Picking analyzer...indonesian
        Inferring index identifier...idwikivoyage_archive_first
        Creating index...
                Index is yellow retrying...
                Green!
        Index created.
                Validating number of shards...ok
                Validating replica range...ok
                Validating shard allocation settings...done
                Validating max shards per node...ok
        Validating analyzers...ok
        Validating mappings...
                Validating mapping...ok
        Validating new index is different...ok
        Validating aliases...
                Validating idwikivoyage_archive alias...alias is free...corrected
                Updating tracking indexes...done
Updating cluster codfw...
indexing namespaces...
        Indexing namespaces...done
content index...
        Fetching Elasticsearch version...7.10.2...ok
        Scanning available plugins...
                analysis-hebrew, analysis-icu, analysis-nori, analysis-smartcn, analysis-stconvert
                analysis-stempel, analysis-ukrainian, experimental-highlighter, extra, extra-analysis-esperanto
                extra-analysis-homoglyph, extra-analysis-khmer, extra-analysis-serbian, extra-analysis-slovak, extra-analysis-textify
                extra-analysis-turkish, extra-analysis-ukrainian, ltr, repository-s3
        Picking analyzer...indonesian
        Inferring index identifier...idwikivoyage_content_first
        Creating index...
                Index is yellow retrying...
                Green!
        Index created.
                Validating number of shards...ok
                Validating replica range...ok
                Validating shard allocation settings...done
                Validating max shards per node...ok
        Validating analyzers...ok
        Validating mappings...
                Validating mapping...ok
        Validating new index is different...ok
        Validating aliases...
                Validating idwikivoyage_content alias...alias is free...corrected
                Validating idwikivoyage alias...alias not already assigned to this index...corrected
                Updating tracking indexes...done
general index...
        Fetching Elasticsearch version...7.10.2...ok
        Scanning available plugins...
                analysis-hebrew, analysis-icu, analysis-nori, analysis-smartcn, analysis-stconvert
                analysis-stempel, analysis-ukrainian, experimental-highlighter, extra, extra-analysis-esperanto
                extra-analysis-homoglyph, extra-analysis-khmer, extra-analysis-serbian, extra-analysis-slovak, extra-analysis-textify
                extra-analysis-turkish, extra-analysis-ukrainian, ltr, repository-s3
        Picking analyzer...indonesian
        Inferring index identifier...idwikivoyage_general_first
        Creating index...
                Index is yellow retrying...
                Green!
        Index created.
                Validating number of shards...ok
                Validating replica range...ok
                Validating shard allocation settings...done
                Validating max shards per node...ok
        Validating analyzers...ok
        Validating mappings...
                Validating mapping...ok
        Validating new index is different...ok
        Validating aliases...
                Validating idwikivoyage_general alias...alias is free...corrected
                Validating idwikivoyage alias...alias not already assigned to this index...corrected
                Updating tracking indexes...done
archive index...
        Fetching Elasticsearch version...7.10.2...ok
        Scanning available plugins...
                analysis-hebrew, analysis-icu, analysis-nori, analysis-smartcn, analysis-stconvert
                analysis-stempel, analysis-ukrainian, experimental-highlighter, extra, extra-analysis-esperanto
                extra-analysis-homoglyph, extra-analysis-khmer, extra-analysis-serbian, extra-analysis-slovak, extra-analysis-textify
                extra-analysis-turkish, extra-analysis-ukrainian, ltr, repository-s3
        Picking analyzer...indonesian
        Inferring index identifier...idwikivoyage_archive_first
        Creating index...
                Index is yellow retrying...
                Green!
        Index created.
                Validating number of shards...ok
                Validating replica range...ok
                Validating shard allocation settings...done
                Validating max shards per node...ok
        Validating analyzers...ok
        Validating mappings...
                Validating mapping...ok
        Validating new index is different...ok
        Validating aliases...
                Validating idwikivoyage_archive alias...alias is free...corrected
                Updating tracking indexes...done
Updating cluster cloudelastic...
indexing namespaces...
        Indexing namespaces...done
content index...
        Fetching Elasticsearch version...7.10.2...ok
        Scanning available plugins...
                analysis-hebrew, analysis-icu, analysis-nori, analysis-smartcn, analysis-stconvert
                analysis-stempel, analysis-ukrainian, experimental-highlighter, extra, extra-analysis-esperanto
                extra-analysis-homoglyph, extra-analysis-khmer, extra-analysis-serbian, extra-analysis-slovak, extra-analysis-textify
                extra-analysis-turkish, extra-analysis-ukrainian, ltr, repository-s3
        Picking analyzer...indonesian
        Inferring index identifier...idwikivoyage_content_first
        Creating index...
                Index is yellow retrying...
                Green!
        Index created.
                Validating number of shards...ok
                Validating replica range...ok
                Validating shard allocation settings...done
                Validating max shards per node...ok
        Validating analyzers...ok
        Validating mappings...
                Validating mapping...ok
        Validating new index is different...ok
        Validating aliases...
                Validating idwikivoyage_content alias...alias is free...corrected
                Validating idwikivoyage alias...alias not already assigned to this index...corrected
                Updating tracking indexes...done
general index...
        Fetching Elasticsearch version...7.10.2...ok
        Scanning available plugins...
                analysis-hebrew, analysis-icu, analysis-nori, analysis-smartcn, analysis-stconvert
                analysis-stempel, analysis-ukrainian, experimental-highlighter, extra, extra-analysis-esperanto
                extra-analysis-homoglyph, extra-analysis-khmer, extra-analysis-serbian, extra-analysis-slovak, extra-analysis-textify
                extra-analysis-turkish, extra-analysis-ukrainian, ltr, repository-s3
        Picking analyzer...indonesian
        Inferring index identifier...idwikivoyage_general_first
        Creating index...
                Index is yellow retrying...
                Green!
        Index created.
                Validating number of shards...ok
                Validating replica range...ok
                Validating shard allocation settings...done
                Validating max shards per node...ok
        Validating analyzers...ok
        Validating mappings...
                Validating mapping...ok
        Validating new index is different...ok
        Validating aliases...
                Validating idwikivoyage_general alias...alias is free...corrected
                Validating idwikivoyage alias...alias not already assigned to this index...corrected
                Updating tracking indexes...done
archive index...
Warning: Not allowing archive on a non-private cluster
UpdateSearchIndexConfig.php complete
Notifying newprojects@lists.wikimedia.org... done
Done.

dancy merged https://gitlab.wikimedia.org/repos/releng/scap/-/merge_requests/600

Remove check for agreement between all.dblist and wikiversions.json

Change #1100559 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/core@master] installer: Allow addWiki.php to add extra tasks

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

Change #1100560 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/extensions/WikimediaMaintenance@master] Improve integration of WMF-specific tasks

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

Change #1100559 merged by jenkins-bot:

[mediawiki/core@master] installer: Allow addWiki.php to add extra tasks

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

Change #1100560 merged by jenkins-bot:

[mediawiki/extensions/WikimediaMaintenance@master] Improve integration of WMF-specific tasks

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

Probably charts is misconfigured, worth noting that the tables are being created on new wikis:

globaljsonlinks ['idwikivoyage', 'tigwiki', 'testcommonswiki']
globaljsonlinks_target ['idwikivoyage', 'tigwiki', 'testcommonswiki']
globaljsonlinks_wiki ['idwikivoyage', 'tigwiki', 'testcommonswiki']

And these two:

api_feature_usage ['idwikivoyage', 'tigwiki']
bounce_records ['idwikivoyage', 'tigwiki']

And these two:

api_feature_usage ['idwikivoyage', 'tigwiki']
bounce_records ['idwikivoyage', 'tigwiki']

It's still creating tables that it shouldn't on core databases:

api_feature_usage ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'tigwiki']
bounce_records ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'tigwiki']
globaljsonlinks ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'tigwiki', 'testcommonswiki']
globaljsonlinks_target ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'tigwiki', 'testcommonswiki']
globaljsonlinks_wiki ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'tigwiki', 'testcommonswiki']
cn_notice_projects ['idwikivoyage', 'kncwiki', 'tigwiki', 'testwiki', 'metawiki']
MaryMunyoki changed the task status from Open to In Progress.Feb 25 2025, 2:40 PM

Mentioned in SAL (#wikimedia-operations) [2025-02-26T16:19:57Z] <Amir1> dropping incorrectly created tables in new wikis (T352113)

I had to drop so many tables created incorrectly in new wikis:

globaljsonlinks ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'satwiktionary', 'sylwiki', 'tigwiki']
globaljsonlinks_target ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'satwiktionary', 'sylwiki', 'tigwiki']
globaljsonlinks_wiki ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'satwiktionary', 'sylwiki', 'tigwiki']
cn_notice_projects ['idwikivoyage', 'kncwiki', 'satwiktionary', 'sylwiki', 'tigwiki']
api_feature_usage ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'satwiktionary', 'sylwiki', 'tigwiki']
bounce_records ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'satwiktionary', 'sylwiki', 'tigwiki']

Please do not create new wikis until this is fixed. cc @Zabe

I had to drop so many tables created incorrectly in new wikis:

globaljsonlinks ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'satwiktionary', 'sylwiki', 'tigwiki']
globaljsonlinks_target ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'satwiktionary', 'sylwiki', 'tigwiki']
globaljsonlinks_wiki ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'satwiktionary', 'sylwiki', 'tigwiki']
cn_notice_projects ['idwikivoyage', 'kncwiki', 'satwiktionary', 'sylwiki', 'tigwiki']
api_feature_usage ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'satwiktionary', 'sylwiki', 'tigwiki']
bounce_records ['arbcom_zhwiki', 'idwikivoyage', 'kncwiki', 'satwiktionary', 'sylwiki', 'tigwiki']

Please do not create new wikis until this is fixed. cc @Zabe

globaljsonlinks should be fixed by https://gerrit.wikimedia.org/r/c/mediawiki/extensions/JsonConfig/+/1111690/40/includes/SchemaHooks.php

Change #1123643 had a related patch set uploaded (by Ladsgroup; author: Amir Sarabadani):

[mediawiki/extensions/ApiFeatureUsage@master] Fix wiring of schema change updates

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

Change #1123643 merged by jenkins-bot:

[mediawiki/extensions/ApiFeatureUsage@master] Fix wiring of schema change updates

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

For both bounce_records and cn_notice_projects they can't be fixed because they are not migrated to virtual domains and have their own ad-hoc way.

bounce_records now fixed thanks to @Reedy and only cn_notice_projects left.

Maybe all extensions listed as todo in T348573: All Wikimedia extensions that store their data outside the main database should use a virtual database domain can cause creation of tables in the wrong database, when the extensions is enabled at the install step.

Maybe all extensions listed as todo in T348573: All Wikimedia extensions that store their data outside the main database should use a virtual database domain can cause creation of tables in the wrong database, when the extensions is enabled at the install step.

I'm not sure all extensions listed there would need virtual domains. So far, I've only saw the aforementioned extensions.

bounce_records now fixed thanks to @Reedy and only cn_notice_projects left.

Should be done and live.

Currently the following tables are created on wiki creation (nupwiki created in T390384):

wikiadmin2023@10.64.0.108(nupwiki)> show tables;
+--------------------------------+
| Tables_in_nupwiki              |
+--------------------------------+
| abuse_filter                   |
| abuse_filter_action            |
| abuse_filter_history           |
| abuse_filter_log               |
| actor                          |
| api_feature_usage              |
| archive                        |
| babel                          |
| betafeatures_user_counts       |
| block                          |
| block_target                   |
| bot_passwords                  |
| category                       |
| categorylinks                  |
| change_tag                     |
| change_tag_def                 |
| collation                      |
| comment                        |
| content                        |
| content_models                 |
| cu_changes                     |
| cu_log                         |
| cu_log_event                   |
| cu_private_event               |
| cu_useragent                   |
| cu_useragent_clienthints       |
| cu_useragent_clienthints_map   |
| discussiontools_item_ids       |
| discussiontools_item_pages     |
| discussiontools_item_revisions |
| discussiontools_items          |
| discussiontools_subscription   |
| externallinks                  |
| file                           |
| filearchive                    |
| filerevision                   |
| filetypes                      |
| geo_tags                       |
| global_block_whitelist         |
| globalimagelinks               |
| image                          |
| imagelinks                     |
| interwiki                      |
| ip_changes                     |
| ipblocks_restrictions          |
| iwlinks                        |
| job                            |
| l10n_cache                     |
| langlinks                      |
| linktarget                     |
| linter                         |
| log_search                     |
| logging                        |
| objectcache                    |
| oldimage                       |
| page                           |
| page_props                     |
| page_restrictions              |
| pagelinks                      |
| protected_titles               |
| querycache                     |
| querycache_info                |
| querycachetwo                  |
| recentchanges                  |
| redirect                       |
| revision                       |
| searchindex                    |
| securepoll_cookie_match        |
| securepoll_elections           |
| securepoll_entity              |
| securepoll_lists               |
| securepoll_log                 |
| securepoll_msgs                |
| securepoll_options             |
| securepoll_properties          |
| securepoll_questions           |
| securepoll_strike              |
| securepoll_voters              |
| securepoll_votes               |
| site_identifiers               |
| site_stats                     |
| sites                          |
| slot_roles                     |
| slots                          |
| spoofuser                      |
| templatelinks                  |
| text                           |
| transcode                      |
| updatelog                      |
| uploadstash                    |
| user                           |
| user_autocreate_serial         |
| user_former_groups             |
| user_groups                    |
| user_newtalk                   |
| user_properties                |
| watchlist                      |
| watchlist_expiry               |
| wbc_entity_usage               |
+--------------------------------+
99 rows in set (0.001 sec)

wikiadmin2023@10.64.0.108(nupwiki)>

Comparing it to enwiki, on enwiki there are following tables which are not on nupwiki:

bv2024_edits
cur
flaggedpage_config
flaggedpages
flaggedrevs
flaggedrevs_promote
flaggedrevs_statistics
flaggedrevs_tracking
hidden
ores_classification
ores_model
page_assessments
page_assessments_projects
pagetriage_page
pagetriage_page_tags
pagetriage_tags
securepoll_ucocar2025_edits
wikilove_log
wmcr2024_edits

and the following tables are on nupwiki and not on enwiki:

api_feature_usage
bot_passwords
globalimagelinks
securepoll_log

Not sure about securepoll_log but the rest of nupwiki tables missing in enwiki I'm sure needs fixing and removal.

I dropped api_feature_usage, bot_passwords and globalimagelinks in nupwiki. Someone in TSP says securepoll_log should actually exists and it's weird it's not in enwiki.

I think this is done. If there are any remaining issues, they can be split out into separate tasks.

T393444 reports that (likely since this change?) emails are not being sent anymore to the newprojects mailing list when addWiki.php runs.