Make WordPress Core

Ticket #31245: 31245.5.fabian-race-fix.diff

File 31245.5.fabian-race-fix.diff, 1.9 KB (added by SergeyBiryukov, 5 years ago)
  • src/wp-includes/option.php

     
    189189 * Loads and caches all autoloaded options, if available or all options.
    190190 *
    191191 * @since 2.2.0
     192 * @since 5.4.0 The `$force_cache` parameter was added.
    192193 *
    193194 * @global wpdb $wpdb WordPress database abstraction object.
    194195 *
     196 * @param bool $force_cache Optional. Whether to force an update of the local cache
     197 *                          from the persistent cache. Default false.
    195198 * @return array List of all options.
    196199 */
    197 function wp_load_alloptions() {
     200function wp_load_alloptions( $force_cache = false ) {
    198201        global $wpdb;
    199202
    200203        if ( ! wp_installing() || ! is_multisite() ) {
    201                 $alloptions = wp_cache_get( 'alloptions', 'options' );
     204                $alloptions = wp_cache_get( 'alloptions', 'options', $force_cache );
    202205        } else {
    203206                $alloptions = false;
    204207        }
     
    397400        }
    398401
    399402        if ( ! wp_installing() ) {
    400                 $alloptions = wp_load_alloptions();
     403                $alloptions = wp_load_alloptions( true );
    401404                if ( isset( $alloptions[ $option ] ) ) {
    402405                        $alloptions[ $option ] = $serialized_value;
    403406                        wp_cache_set( 'alloptions', $alloptions, 'options' );
     
    505508
    506509        if ( ! wp_installing() ) {
    507510                if ( 'yes' == $autoload ) {
    508                         $alloptions            = wp_load_alloptions();
     511                        $alloptions            = wp_load_alloptions( true );
    509512                        $alloptions[ $option ] = $serialized_value;
    510513                        wp_cache_set( 'alloptions', $alloptions, 'options' );
    511514                } else {
     
    583586        $result = $wpdb->delete( $wpdb->options, array( 'option_name' => $option ) );
    584587        if ( ! wp_installing() ) {
    585588                if ( 'yes' == $row->autoload ) {
    586                         $alloptions = wp_load_alloptions();
     589                        $alloptions = wp_load_alloptions( true );
    587590                        if ( is_array( $alloptions ) && isset( $alloptions[ $option ] ) ) {
    588591                                unset( $alloptions[ $option ] );
    589592                                wp_cache_set( 'alloptions', $alloptions, 'options' );