Secondary networks: sunrise queries unregistered scoped tables, and wu_{N}_* tables are never created
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
Piste de recherche
Start with inc/class-sunrise.php and inc/database/engine/class-table.php, then trace network scoped installation through inc/installers/class-core-installer.php and inc/loaders/class-table-loader.php. Read the table and email manager tests in the Files Scope, and check how setup state, table registration, and upgrade paths interact across secondary networks. Done means every secondary network has its scoped tables, sunrise queries avoid unregistered tables, and default system emails are available once its posts table exists.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Problem
On a multi-network install, Ultimate Multisite queries network-scoped tables ({base_prefix}wu_{network_id}_*) on secondary networks, but two paths leave those tables unusable:
-
Sunrise domain mapping queries tables that were never registered.
Sunrise::load_domain_mapping()(inc/class-sunrise.php:191-205) startsDomain_Mappingon every network. On a network where Ultimate Multisite returns beforesetup_tables()(inc/class-wp-ultimo.php, theRequirements::met() === false || Requirements::run_setup() === falseearly return;run_setup()reads the per-networkwu_setup_finishedoption), noTableobject is built for that network. The domainQuerystill applies the network prefix (Network_Prefix::update_prefix_with_network_id(),inc/database/engine/traits/trait-network-prefix.php:20-25), so it reads$wpdb->wu_{N}_domain_mappings. That property is unset, which gives an empty table name:Table '<db>.wu_5_d' doesn't exist for query SELECT wu_5_d.id FROM wu_5_d WHERE wu_5_d.blog_id = 323 AND wu_5_d.domain != ...Note the double space: the table name is empty and only the alias
wu_5_dremains. Production logged about 170 of these in 7 hours on one template network. -
Secondary-network tables are never created.
Table::is_upgradeable()(inc/database/engine/class-table.php:50-57) returns false unless the request is on the main network and main site, somaybe_upgrade()never installswp_wu_{N}_*. A network ends up with none of these tables, or with only the subset some one-off path created. One network had customers/memberships/payments but noposts,postmeta,webhooks,passkey_credentials,webauthn_challenges,email_otp_attemptsorsso_nonces. Addon tables that extend the coreTable(e.g. metered-plans'metered_usage) inherit the same gap. A missingpoststable also means a network has no system emails (payment_received_*,site_published_*, …).
Expected
- Every secondary network that Ultimate Multisite serves has its full set of scoped tables, created idempotently when the network is first used or created, and on upgrade.
- Domain mapping at sunrise never builds a query against an unregistered table. Either register the network's tables (e.g. build the needed
Tableobjects inSunrise::load_domain_mapping()beforeDomain_Mappingruns), or fall back to the main network's tables when Ultimate Multisite is not set up on the current network. - Default system emails get created for a network once its
poststable exists.
Workaround applied on one install (not a fix)
Ran in each affected network's --url context:
$t->install()for everyTable_Loader::get_instance()->get_tables()entry, plusMetered_Usage_Table, whereexists()was false.Email_Manager::get_instance()->create_all_system_emails().- For the template network, set the
wu_setup_finishednetwork option so Ultimate Multisite completes loading and registers its tables.
Note: Table::exists() caches its result, so in the same process it still reported false right after a successful install(). A fresh process or information_schema showed the tables were present.
Files to modify
inc/class-sunrise.php(load_domain_mapping)inc/database/engine/class-table.php(is_upgradeable, and possibly theexists()cache)inc/installers/class-core-installer.php(network-scoped install)inc/loaders/class-table-loader.phpinc/managers/class-email-manager.php(create_all_system_emailson new networks)
Verification
On a multi-network test install:
- Create a secondary network without running the setup wizard and request one of its mapped domains. There should be no
FROM wu_N_(empty table) errors. - Every
get_tables()entry shouldexists()for that network after creation or upgrade. wu_get_emails()should return the default system emails on that network.
Files Scope
inc/class-sunrise.phpinc/database/engine/class-table.phpinc/installers/class-core-installer.phpinc/loaders/class-table-loader.phpinc/managers/class-email-manager.phptests/WP_Ultimo/Database/Engine/Table_Test.phptests/WP_Ultimo/Managers/Email_Manager_Test.php
aidevops.sh v3.39.49 plugin for OpenCode
- Langage dominant
- PHP
- Étoiles
- 218
- Forks
- 87
- Merge moyen
- 1 j 7 h
- PR mergées (30 j)
- 85
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Ultimate-Multisite/ultimate-multisite
-
perf: lazy-load the top My Sites toolbar and defer initial site-list hydrationPeut-être pris @superdav42 l’a pris il y a 1 jour. Ouverteenhancement origin:interactive priority:medium status:in-review tier:standard
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
Ultimate-Multisite/ultimate-multisite#2015 · 6 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Secondary networks never get Ultimate Multisite tables created or upgradedPeut-être pris @superdav42 l’a pris il y a 2 jours. Ouvertebug origin:interactive status:claimed
Ultimate-Multisite/ultimate-multisite#2009 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
needs-maintainer-review review:approve
Difficulté 3/5 1-2 jours Accessibilité débutants 62/100
Ultimate-Multisite/ultimate-multisite#1952 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
auto-dispatch needs-investigation origin:worker security status:available tier:standard type:bug
Difficulté 3/5 Une demi-journée Accessibilité débutants 30/100
Ultimate-Multisite/ultimate-multisite#1938 ·
Les mainteneurs répondent en général sous 1 jour
-
auto-dispatch needs-investigation origin:worker security status:available tier:standard type:bug
Difficulté 3/5 Une demi-journée Accessibilité débutants 30/100
Ultimate-Multisite/ultimate-multisite#1930 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de Ultimate-Multisite/ultimate-multisite
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Automattic/blocks-engine#3369 ·
Les mainteneurs répondent en général sous 1 jour
-
0. Needs triage 35-feedback bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
product / auth product / databases product / functions product / messaging product / storage product / vcs
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
good first issue ux
Difficulté 1/5 Moins d'une heure Accessibilité débutants 89/100
alleyinteractive/wp-curate#498 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour