Secondary networks: sunrise queries unregistered scoped tables, and wu_{N}_* tables are never created
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
- Ngôn ngữ chính
- PHP
- Star
- 218
- Fork
- 87
- Merge trung bình
- 1 ngày 7 giờ
- Pull request đã merge (30 ngày)
- 85
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Ultimate-Multisite/ultimate-multisite
-
perf: lazy-load the top My Sites toolbar and defer initial site-list hydrationCó thể đã có người làm @superdav42 đã nhận 1 ngày trước. Đang mởenhancement origin:interactive priority:medium status:in-review tier:standard
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
Ultimate-Multisite/ultimate-multisite#2015 · 6 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Secondary networks never get Ultimate Multisite tables created or upgradedCó thể đã có người làm @superdav42 đã nhận 2 ngày trước. Đang mởbug origin:interactive status:claimed
Ultimate-Multisite/ultimate-multisite#2009 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-maintainer-review review:approve
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 62/100
Ultimate-Multisite/ultimate-multisite#1952 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
auto-dispatch needs-investigation origin:worker security status:available tier:standard type:bug
Độ khó 3/5 Nửa ngày Mức phù hợp với người mới 30/100
Ultimate-Multisite/ultimate-multisite#1938 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
auto-dispatch needs-investigation origin:worker security status:available tier:standard type:bug
Độ khó 3/5 Nửa ngày Mức phù hợp với người mới 30/100
Ultimate-Multisite/ultimate-multisite#1930 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Ultimate-Multisite/ultimate-multisite
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Automattic/blocks-engine#3369 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
0. Needs triage 35-feedback bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
product / auth product / databases product / functions product / messaging product / storage product / vcs
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue ux
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 89/100
alleyinteractive/wp-curate#498 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày