fix(2meet-data-optimizer): add declared flat-table indexes from WP-CLI or WP-Cron only, one process at a time
- ensure_group_indexes() runs the ALTER only under WP-CLI or WP-Cron (filter tmdo_schema_ddl_allowed); web requests, including /wp-admin/ before auth_redirect() and admin-post.php, schedule tmdo_ensure_group_indexes instead - MySQL GET_LOCK keeps it to one process (add_option() is INSERT ... ON DUPLICATE KEY UPDATE and cannot serve as a lock); released by MySQL if the process dies - the applied signature is recorded only when every ALTER succeeds; failures log schema.index_failed and stay in pending_indexes(), which doctor reports - new tables get their declared cidx_ indexes in CREATE TABLE - test stub wpdb::query()/insert() return false on SQL errors like wpdb - Verify: GroupCompositeIndexTest 7/7, unit 698, integration 576, phpcs, stan - PR: PR-090a
This commit is contained in:
@@ -306,6 +306,9 @@ class TMDO_Core {
|
||||
add_action( 'add_option_' . TMDO_Hook_Bus_Bridge::OPTION, array( 'TMDO_Drift_Check', 'on_hook_bus_added' ), 10, 2 );
|
||||
add_action( TMDO_Drift_Check::RESYNC_HOOK, array( 'TMDO_Drift_Check', 'run_scheduled_fix' ) );
|
||||
|
||||
// 1.3.0: declared indexes a visitor request left for WP-Cron.
|
||||
add_action( TMDO_Schema_Manager::INDEXES_HOOK, array( 'TMDO_Schema_Manager', 'ensure_pending_indexes' ) );
|
||||
|
||||
// v2.3.0 M6: daily snapshot prune cron (paired with health check).
|
||||
add_action( 'wpdo_snapshot_prune_daily', array( 'TMDO_Snapshot_Pruner', 'cron_run' ) );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user