WordPress.org

Make WordPress Core

Opened 15 months ago

Last modified 13 months ago

#23405 closed defect (bug)

blog-details cache can get stuck with bad value — at Initial Version

Reported by: westi Owned by:
Milestone: 3.6 Priority: normal
Severity: normal Version: 3.5.1
Component: Multisite Keywords: has-patch
Focuses: Cc:

Description

If you call get_blog_details for a blog which doesn't exist yet in wp_blogs then we cache a negative lookup result as -1:

https://core.trac.wordpress.org/browser/trunk/wp-includes/ms-blogs.php?rev=23389#L217

if ( empty($details) ) {

$details = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE blog_id = %d /* get_blog_details */", $blog_id ) );
if ( ! $details ) {

Set the full cache.
wp_cache_set( $blog_id, -1, 'blog-details' );
return false;

}

}


When you then later call refresh_blog_details to clear up the cache for the blog_id the cached -1 is passed to clean_blog_cache which then tries to get a blog_id from the object that was returned and doesn't get the right one and the cached are not deleted.

This means that the blog ends up broken :(

Change History (0)

Note: See TracTickets for help on using tickets.