Secondary networks: sunrise queries unregistered scoped tables, and wu_{N}_* tables are never created
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- PHP
- Estrellas
- 218
- Forks
- 87
- Merge medio
- 1 d 7 h
- PR fusionados (30 d)
- 85
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Ultimate-Multisite/ultimate-multisite
-
auto-dispatch enhancement origin:interactive priority:medium status:available tier:standard
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Ultimate-Multisite/ultimate-multisite#2015 ·
Los mantenedores suelen responder en 1 día
-
Secondary networks never get Ultimate Multisite tables created or upgradedPosiblemente ocupada @superdav42 la tomó hace 2 días. Abiertobug origin:interactive status:claimed
Ultimate-Multisite/ultimate-multisite#2009 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
needs-maintainer-review review:approve triage-failed
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
Ultimate-Multisite/ultimate-multisite#1952 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
auto-dispatch needs-investigation origin:worker security status:available tier:standard type:bug
Dificultad 3/5 Medio día Aptitud para principiantes 30/100
Ultimate-Multisite/ultimate-multisite#1938 ·
Los mantenedores suelen responder en 1 día
-
auto-dispatch needs-investigation origin:worker security status:available tier:standard type:bug
Dificultad 3/5 Medio día Aptitud para principiantes 30/100
Ultimate-Multisite/ultimate-multisite#1930 ·
Los mantenedores suelen responder en 1 día
Todos los issues de Ultimate-Multisite/ultimate-multisite
Issues similares
-
sync-en
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 2 días
-
bug-report bug-report-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Codeinwp/templates-patterns-collection#539 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
WINBIGFOX/TimeScribe#143 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
coollabsio/coolify#12287 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Los mantenedores suelen responder en 3 días