Skip to content

Instantly share code, notes, and snippets.

@lukecav
Created December 20, 2017 22:08
Show Gist options
  • Save lukecav/40693ede6c0441dc3902083c69e31f62 to your computer and use it in GitHub Desktop.
Save lukecav/40693ede6c0441dc3902083c69e31f62 to your computer and use it in GitHub Desktop.
Fix a race condition in alloptions caching in WordPress
/**
* Fix a race condition in alloptions caching
*
* See https://core.trac.wordpress.org/ticket/31245
*/
function _wpcom_vip_maybe_clear_alloptions_cache( $option ) {
if ( ! wp_installing() ) {
$alloptions = wp_load_alloptions(); //alloptions should be cached at this point
if ( isset( $alloptions[ $option ] ) ) { //only if option is among alloptions
wp_cache_delete( 'alloptions', 'options' );
}
}
}
add_action( 'added_option', '_wpcom_vip_maybe_clear_alloptions_cache' );
add_action( 'updated_option', '_wpcom_vip_maybe_clear_alloptions_cache' );
add_action( 'deleted_option', '_wpcom_vip_maybe_clear_alloptions_cache' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment