Make WordPress Core

Opened 7 years ago

Last modified 7 years ago

#18955 closed defect (bug)

get_site_option caches default value when option does not exist — at Version 7

Reported by: wpmuguru Owned by:
Milestone: 3.3 Priority: normal
Severity: normal Version: 3.2.1
Component: Multisite Keywords: has-patch
Focuses: Cc:

Description (last modified by wpmuguru)

If get_site_option is passed any default value on a non-existent site option then a subsequent call to update_site_option will not add the site option. Because the site option does not exist, it does not get updated either. To reproduce

  • in the sitemeta table edit the active_sitewide_plugins meta_key to be active_sitewide_plugins_x
  • go to the network plugins screen and network activate any plugin

You get the message that the plugin was activated, but it doesn't because the site option doesn't get saved.

Options for fixing

  1. change the get_site_option in update_site_options to not use cache
  2. add a notsiteoption cache and cache the non-existence of the site option
  3. don't cache the default value in get_site_option

Option 1 is quick & easy Option 2 is more work but is the way the blog options are handled and it would make things more consistent Option 3 is probably not the preferable solution

Change History (9)

#1 @duck_
7 years ago

  • Description modified (diff)
  • Keywords has-patch added

As noted by your steps this bug requires code to ignore the site_option API to be triggered (so the DB and cache aren't in sync) and shouldn't happen in core.

Attached 18955.notoptions.diff example patch for adding a notoptions cache for site-options. I think this is the most sensible option. I'd say that 1 was the least preferable.

#2 @wpmuguru
7 years ago

18955.notoptions.diff worked fine for me. It's also the best solution to this, imo.

7 years ago

18955.notoptions.diff plus wp_load_core_site_options()

#3 @wpmuguru
7 years ago

We should also cache the non existence of site options in wp_load_core_site_options().

#4 @SergeyBiryukov
7 years ago

  • Milestone changed from Awaiting Review to 3.3

#5 @boonebgorges
7 years ago

  • Cc boonebgorges@… added

See also #18971

#7 @wpmuguru
7 years ago

  • Description modified (diff)
Note: See TracTickets for help on using tickets.