fix(2meet-data-optimizer): upgrade existing flat tables from WP-CLI or WP-Cron only
- a changed group definition no longer runs dbDelta on an existing table inside a web request (seconds to minutes on a large table, and every concurrent request tried it): the group is recorded in tmdo_schema_deferred and tmdo_ensure_group_indexes is scheduled, whose request upgrades it - meanwhile the group stays native: Hook Bus field lookups return no field and the router treats it as drifting; afterwards a drift fix (tmdo_drift_resync) rebuilds the writes that skipped the flat table - new tables are still created at once; aeav_only upgrades at once (the flat table is the only copy); doctor lists deferred groups - Verify: SchemaUpgradeDeferralTest, Hook Bus and router tests, integration 582, unit 701, phpcs, stan; dev36 live cycle in the 2.3 acceptance - PR: PR-107
This commit is contained in:
@@ -634,6 +634,9 @@ class TMDO_Post_Query_Router {
|
||||
if ( TMDO_Mode_Manager::MODE_AEAV_ONLY === TMDO_Mode_Manager::get( 'post' ) ) {
|
||||
return false;
|
||||
}
|
||||
if ( TMDO_Schema_Manager::is_deferred( 'post', $group ) ) {
|
||||
return true; // Table upgrade waiting for WP-CLI / WP-Cron.
|
||||
}
|
||||
$status = get_option( TMDO_Drift_Check::OPTION, array() );
|
||||
$last = is_array( $status ) ? ( $status['post'][ $group ] ?? null ) : null;
|
||||
return is_array( $last ) && (int) ( $last['miss'] ?? 0 ) + (int) ( $last['diff'] ?? 0 ) + (int) ( $last['extra'] ?? 0 ) > 0;
|
||||
|
||||
Reference in New Issue
Block a user