fix(2meet-data-optimizer): serve native meta in shadow_read and compare flat values
- In shadow_read, TMDO_Hook_Bus::intercept_get() returned the flat value. update_metadata() reads the old value through that filter after the Hook Bus has upserted the new one, so WP saw old === new and never wrote native meta: every update in shadow_read was lost on demotion (dev36 2026-09-26). shadow_read now returns $check (native) and compares flat on a sample of reads (filter tmdo_shadow_compare_sample_rate, default 0.1). aeav_only is unchanged; the post query router still routes in shadow_read. - Live suite shadow_write: xfail markers removed, HivePress listing case added (new int key hp_rating_count); fixtures gain post() and a post_type-scoped field()/flat(). - Verify: live shadow_write + serialized 8/8 PASS (old code: 4 FAIL); unit 685 OK, integration 484 OK, phpcs (phpcs.xml) 0, stan OK - PR: PR-056
This commit is contained in:
@@ -268,6 +268,30 @@ class HookBusIntegrationTest extends TestCase {
|
||||
$this->assertNull( $result, 'dual_write does not read from flat — must return $check' );
|
||||
}
|
||||
|
||||
/**
|
||||
* shadow_read serves native meta: update_metadata() reads the old value
|
||||
* through this filter, and serving the just-written flat value made WP
|
||||
* skip the native write (dev36, 2026-09-26). Flat is only compared.
|
||||
*/
|
||||
public function test_get_serves_native_in_shadow_read_mode_even_with_a_flat_value(): void {
|
||||
global $wpdb;
|
||||
$wpdb->insert( self::FLAT_TABLE, array( 'user_id' => 12, 'first_name' => 'Flat' ) );
|
||||
self::set_user_mode( WPDO_Mode_Manager::MODE_SHADOW_READ );
|
||||
|
||||
foreach ( array( 0.0, 1.0 ) as $rate ) {
|
||||
$GLOBALS['_wp_filter_callbacks']['tmdo_shadow_compare_sample_rate'] = array(
|
||||
static function () use ( $rate ) {
|
||||
return $rate;
|
||||
},
|
||||
);
|
||||
|
||||
$result = WPDO_Hook_Bus::intercept_get( null, 12, 'first_name', true, 'user' );
|
||||
|
||||
$this->assertNull( $result, "shadow_read must return \$check (sample rate {$rate})" );
|
||||
}
|
||||
unset( $GLOBALS['_wp_filter_callbacks']['tmdo_shadow_compare_sample_rate'] );
|
||||
}
|
||||
|
||||
public function test_get_returns_empty_string_when_column_is_null(): void {
|
||||
global $wpdb;
|
||||
$wpdb->query(
|
||||
|
||||
Reference in New Issue
Block a user