WordPress.org

Make WordPress Core

Opened 3 years ago

Closed 3 years ago

#17519 closed defect (bug) (invalid)

With Persistent Caching get_option returns old values of option despite update

Reported by: vickybiswas Owned by:
Milestone: Priority: normal
Severity: normal Version:
Component: General Keywords:
Focuses: Cc:

Description

We use wordpress 3.x on different installations for our high traffic sites.

We use persistent caching using W3 Total Cache object cache
which is set to read from our memcached servers

Intermittently we noticed
cron set but not running,
options set but not returning the right value

On digging deeper we found that when concurrent pages are loading a race condition existed which over wrote the new values with old values.

Screen shot attached will display what we mean here.
We created a test page which did the following

  1. read option value from db
  2. dump the object from step 1
  3. get_option
  4. display value received in step 3
  5. update option
  6. get_option
  7. display value received in step 7
  8. read option value from db
  9. dump the object from step 8
  10. Stop

The output in the screenshot shows that get option was returning a cached copy of the option although the db contained a later value.

Way to recreate using above algo
Platform
WP ver 3.x with W3 Total Cache

Settings
W3 Total Cache object caching on
using memcache servers

Code

<?php
print("Starting script <br />");
require_once("wp-load.php");

$countNumDB = show_db_values();
$countNumDB++;

$countNum = show_go_values();
if ($countNum==0) update_option("mmc_test_entry_a", 1);

update_option("mmc_test_entry_a",$countNumDB);

print("After Update-----------------------------------<br />");

show_go_values();
show_db_values();

sleep(2);


//Fetch and Display option Value using DB
function show_db_values() {
  global $wpdb;
  $oRS = $wpdb->get_row("SELECT * FROM wp_options WHERE option_name='mmc_test_entry_a'");
  print("<pre>\n");
  print_r($oRS);
  print("</pre><br />\n");
  return intval($oRS->option_value);
}

//Fetch and Display option Value using get_option
function show_go_values() {
  $countNum = intval(get_option("mmc_test_entry_a"));
  print('@ ' . time() . "get_option shows -> {$countNum}<br />");
  return intval($countNum);
}

Open this page in 4 windows and refresh these page consecutively a few times you would notice mismatch in db and fetch values like the second screenshot which shows
the db reflecting 9
get option fetches 7
after update both show 10
but parallely if we open this in another widow we would still get 7 using get_option

We did a similar script for testing cron with similar results

Starting script

stdClass Object
(
    [option_id] => 96
    [blog_id] => 0
    [option_name] => cron
    [option_value] => a:16:{i:1299753900;a:1:{s:22:"mmc_astroscopes_update";a:2:{s:32:"0420685dad7e38d8c877822ab455ed11";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";N;s:9:"cache_key";s:42:"mmc_astro_d41d8cd98f00b204e9800998ecf8427e";}}s:32:"f34b1f61fd084a9b3d78351e7603e83e";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:98:"http://solutions.astrology.com/scripts/it.dll?cust_id=afv1x6&doc=daily69momscope/dailymomscope.xml";s:9:"cache_key";s:42:"mmc_astro_6c10ce151460e0cbc2fb83b8fba37a06";}}}}i:1299754740;a:1:{s:13:"kb_rss_update";a:5:{s:32:"d5ab97badfec5d705b3648bd534f0477";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_34a25eb496b7858cb5c826fd809bce48";s:9:"widget_id";s:17:"kb-advanced-rss-3";}}s:32:"c3116833b112d30c6367be872b4c67d4";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_426548f3f955925809625b9c6b9b1744";s:9:"widget_id";s:17:"kb-advanced-rss-4";}}s:32:"18b3055792aacef123074b9ca74dac55";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_364c7f478c7121b7bb621aa7fa8403a3";s:9:"widget_id";s:17:"kb-advanced-rss-5";}}s:32:"5a4a08925ea65721b5a23699ac97773d";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_0306f5e9f102f025bce58c6c822c3be4";s:9:"widget_id";s:17:"kb-advanced-rss-6";}}s:32:"eaf0bd348c10a2fd06a3acad91b7ee4c";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_2a495aedf333c5736fe131abe87cd0a7";s:9:"widget_id";s:17:"kb-advanced-rss-7";}}}}i:1299754750;a:1:{s:25:"w3_cdn_cron_queue_process";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:25:"w3_cdn_cron_queue_process";s:4:"args";a:0:{}s:8:"interval";i:900;}}}i:1299759120;a:5:{s:23:"celebritytwitter_update";a:1:{s:32:"6e522efa368959102e2dd6b4f22e1909";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:29:"http://giantredcarpet.com/rss";}}}s:20:"hollywoodlife_update";a:1:{s:32:"5ba39041bb096595e23e3c2119691d00";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:34:"http://www.hollywoodlife.com/feed/";}}}s:20:"entertainment_update";a:1:{s:32:"301d48ec2a9f4b36afdcd220426071ad";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:57:"http://feeds.feedburner.com/cafemom/thestir/entertainment";}}}s:25:"celebritybabyscoop_update";a:1:{s:32:"d6f57fa14ee72b7fdb6e1ee0d8fd72c5";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:41:"http://www.celebritybabyscoop.com/rss.xml";}}}s:10:"TMZ_update";a:1:{s:32:"5fae3b7313fbde8e0fa9608814e4a60b";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:26:"http://www.tmz.com/rss.xml";}}}}i:1299760706;a:1:{s:19:"wp_scheduled_delete";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1299788066;a:1:{s:16:"wp_update_themes";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1299788076;a:2:{s:16:"wp_version_check";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}s:17:"wp_update_plugins";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1299839463;a:1:{s:24:"akismet_scheduled_delete";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1300356860;a:1:{s:8:"do_pings";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:2:{s:8:"schedule";b:0;s:4:"args";a:0:{}}}}i:1300356900;a:1:{s:28:"generate_google_news_sitemap";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:2:{s:8:"schedule";b:0;s:4:"args";a:0:{}}}}i:1305886446;a:1:{s:14:"test_entry_A_1";a:1:{s:32:"6a0516caf3ce51275a89301665b122f0";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_1";}s:8:"interval";i:86400;}}}i:1305887119;a:1:{s:14:"test_entry_A_2";a:1:{s:32:"aa36d3b4b4b434079a14acfb78ee17f7";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_2";}s:8:"interval";i:86400;}}}i:1305887137;a:1:{s:14:"test_entry_A_3";a:1:{s:32:"a27438b84df31de69f5733f8d5158b3b";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_3";}s:8:"interval";i:86400;}}}i:1305887141;a:1:{s:14:"test_entry_A_4";a:1:{s:32:"2111368a27f704830c3a4e2059d14023";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_4";}s:8:"interval";i:86400;}}}i:1305887151;a:1:{s:14:"test_entry_A_5";a:1:{s:32:"7aa257bc988cc2f7a581b9dc514aa758";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_5";}s:8:"interval";i:86400;}}}s:7:"version";i:2;}
    [autoload] => yes
)


@ 1305872756get_option shows -> a:15:{i:1299753900;a:1:{s:22:"mmc_astroscopes_update";a:2:{s:32:"0420685dad7e38d8c877822ab455ed11";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";N;s:9:"cache_key";s:42:"mmc_astro_d41d8cd98f00b204e9800998ecf8427e";}}s:32:"f34b1f61fd084a9b3d78351e7603e83e";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:98:"http://solutions.astrology.com/scripts/it.dll?cust_id=afv1x6&doc=daily69momscope/dailymomscope.xml";s:9:"cache_key";s:42:"mmc_astro_6c10ce151460e0cbc2fb83b8fba37a06";}}}}i:1299754740;a:1:{s:13:"kb_rss_update";a:5:{s:32:"d5ab97badfec5d705b3648bd534f0477";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_34a25eb496b7858cb5c826fd809bce48";s:9:"widget_id";s:17:"kb-advanced-rss-3";}}s:32:"c3116833b112d30c6367be872b4c67d4";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_426548f3f955925809625b9c6b9b1744";s:9:"widget_id";s:17:"kb-advanced-rss-4";}}s:32:"18b3055792aacef123074b9ca74dac55";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_364c7f478c7121b7bb621aa7fa8403a3";s:9:"widget_id";s:17:"kb-advanced-rss-5";}}s:32:"5a4a08925ea65721b5a23699ac97773d";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_0306f5e9f102f025bce58c6c822c3be4";s:9:"widget_id";s:17:"kb-advanced-rss-6";}}s:32:"eaf0bd348c10a2fd06a3acad91b7ee4c";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_2a495aedf333c5736fe131abe87cd0a7";s:9:"widget_id";s:17:"kb-advanced-rss-7";}}}}i:1299754750;a:1:{s:25:"w3_cdn_cron_queue_process";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:25:"w3_cdn_cron_queue_process";s:4:"args";a:0:{}s:8:"interval";i:900;}}}i:1299759120;a:5:{s:23:"celebritytwitter_update";a:1:{s:32:"6e522efa368959102e2dd6b4f22e1909";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:29:"http://giantredcarpet.com/rss";}}}s:20:"hollywoodlife_update";a:1:{s:32:"5ba39041bb096595e23e3c2119691d00";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:34:"http://www.hollywoodlife.com/feed/";}}}s:20:"entertainment_update";a:1:{s:32:"301d48ec2a9f4b36afdcd220426071ad";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:57:"http://feeds.feedburner.com/cafemom/thestir/entertainment";}}}s:25:"celebritybabyscoop_update";a:1:{s:32:"d6f57fa14ee72b7fdb6e1ee0d8fd72c5";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:41:"http://www.celebritybabyscoop.com/rss.xml";}}}s:10:"TMZ_update";a:1:{s:32:"5fae3b7313fbde8e0fa9608814e4a60b";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:26:"http://www.tmz.com/rss.xml";}}}}i:1299760706;a:1:{s:19:"wp_scheduled_delete";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1299788066;a:1:{s:16:"wp_update_themes";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1299788076;a:2:{s:16:"wp_version_check";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}s:17:"wp_update_plugins";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1299839463;a:1:{s:24:"akismet_scheduled_delete";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1300356860;a:1:{s:8:"do_pings";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:2:{s:8:"schedule";b:0;s:4:"args";a:0:{}}}}i:1300356900;a:1:{s:28:"generate_google_news_sitemap";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:2:{s:8:"schedule";b:0;s:4:"args";a:0:{}}}}i:1305886446;a:1:{s:14:"test_entry_A_1";a:1:{s:32:"6a0516caf3ce51275a89301665b122f0";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_1";}s:8:"interval";i:86400;}}}i:1305887119;a:1:{s:14:"test_entry_A_2";a:1:{s:32:"aa36d3b4b4b434079a14acfb78ee17f7";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_2";}s:8:"interval";i:86400;}}}i:1305887137;a:1:{s:14:"test_entry_A_3";a:1:{s:32:"a27438b84df31de69f5733f8d5158b3b";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_3";}s:8:"interval";i:86400;}}}i:1305887141;a:1:{s:14:"test_entry_A_4";a:1:{s:32:"2111368a27f704830c3a4e2059d14023";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_4";}s:8:"interval";i:86400;}}}s:7:"version";i:2;}
After Update-----------------------------------
@ 1305872757get_option shows -> a:16:{i:1299753900;a:1:{s:22:"mmc_astroscopes_update";a:2:{s:32:"0420685dad7e38d8c877822ab455ed11";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";N;s:9:"cache_key";s:42:"mmc_astro_d41d8cd98f00b204e9800998ecf8427e";}}s:32:"f34b1f61fd084a9b3d78351e7603e83e";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:98:"http://solutions.astrology.com/scripts/it.dll?cust_id=afv1x6&doc=daily69momscope/dailymomscope.xml";s:9:"cache_key";s:42:"mmc_astro_6c10ce151460e0cbc2fb83b8fba37a06";}}}}i:1299754740;a:1:{s:13:"kb_rss_update";a:5:{s:32:"d5ab97badfec5d705b3648bd534f0477";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_34a25eb496b7858cb5c826fd809bce48";s:9:"widget_id";s:17:"kb-advanced-rss-3";}}s:32:"c3116833b112d30c6367be872b4c67d4";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_426548f3f955925809625b9c6b9b1744";s:9:"widget_id";s:17:"kb-advanced-rss-4";}}s:32:"18b3055792aacef123074b9ca74dac55";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_364c7f478c7121b7bb621aa7fa8403a3";s:9:"widget_id";s:17:"kb-advanced-rss-5";}}s:32:"5a4a08925ea65721b5a23699ac97773d";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_0306f5e9f102f025bce58c6c822c3be4";s:9:"widget_id";s:17:"kb-advanced-rss-6";}}s:32:"eaf0bd348c10a2fd06a3acad91b7ee4c";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_2a495aedf333c5736fe131abe87cd0a7";s:9:"widget_id";s:17:"kb-advanced-rss-7";}}}}i:1299754750;a:1:{s:25:"w3_cdn_cron_queue_process";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:25:"w3_cdn_cron_queue_process";s:4:"args";a:0:{}s:8:"interval";i:900;}}}i:1299759120;a:5:{s:23:"celebritytwitter_update";a:1:{s:32:"6e522efa368959102e2dd6b4f22e1909";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:29:"http://giantredcarpet.com/rss";}}}s:20:"hollywoodlife_update";a:1:{s:32:"5ba39041bb096595e23e3c2119691d00";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:34:"http://www.hollywoodlife.com/feed/";}}}s:20:"entertainment_update";a:1:{s:32:"301d48ec2a9f4b36afdcd220426071ad";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:57:"http://feeds.feedburner.com/cafemom/thestir/entertainment";}}}s:25:"celebritybabyscoop_update";a:1:{s:32:"d6f57fa14ee72b7fdb6e1ee0d8fd72c5";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:41:"http://www.celebritybabyscoop.com/rss.xml";}}}s:10:"TMZ_update";a:1:{s:32:"5fae3b7313fbde8e0fa9608814e4a60b";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:26:"http://www.tmz.com/rss.xml";}}}}i:1299760706;a:1:{s:19:"wp_scheduled_delete";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1299788066;a:1:{s:16:"wp_update_themes";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1299788076;a:2:{s:16:"wp_version_check";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}s:17:"wp_update_plugins";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1299839463;a:1:{s:24:"akismet_scheduled_delete";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1300356860;a:1:{s:8:"do_pings";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:2:{s:8:"schedule";b:0;s:4:"args";a:0:{}}}}i:1300356900;a:1:{s:28:"generate_google_news_sitemap";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:2:{s:8:"schedule";b:0;s:4:"args";a:0:{}}}}i:1305886446;a:1:{s:14:"test_entry_A_1";a:1:{s:32:"6a0516caf3ce51275a89301665b122f0";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_1";}s:8:"interval";i:86400;}}}i:1305887119;a:1:{s:14:"test_entry_A_2";a:1:{s:32:"aa36d3b4b4b434079a14acfb78ee17f7";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_2";}s:8:"interval";i:86400;}}}i:1305887137;a:1:{s:14:"test_entry_A_3";a:1:{s:32:"a27438b84df31de69f5733f8d5158b3b";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_3";}s:8:"interval";i:86400;}}}i:1305887141;a:1:{s:14:"test_entry_A_4";a:1:{s:32:"2111368a27f704830c3a4e2059d14023";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_4";}s:8:"interval";i:86400;}}}i:1305887156;a:1:{s:14:"test_entry_A_6";a:1:{s:32:"2c64bb51f72127dffabb04230ee37104";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_6";}s:8:"interval";i:86400;}}}s:7:"version";i:2;}

stdClass Object
(
    [option_id] => 96
    [blog_id] => 0
    [option_name] => cron
    [option_value] => a:16:{i:1299753900;a:1:{s:22:"mmc_astroscopes_update";a:2:{s:32:"0420685dad7e38d8c877822ab455ed11";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";N;s:9:"cache_key";s:42:"mmc_astro_d41d8cd98f00b204e9800998ecf8427e";}}s:32:"f34b1f61fd084a9b3d78351e7603e83e";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:98:"http://solutions.astrology.com/scripts/it.dll?cust_id=afv1x6&doc=daily69momscope/dailymomscope.xml";s:9:"cache_key";s:42:"mmc_astro_6c10ce151460e0cbc2fb83b8fba37a06";}}}}i:1299754740;a:1:{s:13:"kb_rss_update";a:5:{s:32:"d5ab97badfec5d705b3648bd534f0477";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_34a25eb496b7858cb5c826fd809bce48";s:9:"widget_id";s:17:"kb-advanced-rss-3";}}s:32:"c3116833b112d30c6367be872b4c67d4";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_426548f3f955925809625b9c6b9b1744";s:9:"widget_id";s:17:"kb-advanced-rss-4";}}s:32:"18b3055792aacef123074b9ca74dac55";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_364c7f478c7121b7bb621aa7fa8403a3";s:9:"widget_id";s:17:"kb-advanced-rss-5";}}s:32:"5a4a08925ea65721b5a23699ac97773d";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_0306f5e9f102f025bce58c6c822c3be4";s:9:"widget_id";s:17:"kb-advanced-rss-6";}}s:32:"eaf0bd348c10a2fd06a3acad91b7ee4c";a:2:{s:8:"schedule";b:0;s:4:"args";a:2:{s:14:"feed_to_update";s:36:"rss_2a495aedf333c5736fe131abe87cd0a7";s:9:"widget_id";s:17:"kb-advanced-rss-7";}}}}i:1299754750;a:1:{s:25:"w3_cdn_cron_queue_process";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:25:"w3_cdn_cron_queue_process";s:4:"args";a:0:{}s:8:"interval";i:900;}}}i:1299759120;a:5:{s:23:"celebritytwitter_update";a:1:{s:32:"6e522efa368959102e2dd6b4f22e1909";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:29:"http://giantredcarpet.com/rss";}}}s:20:"hollywoodlife_update";a:1:{s:32:"5ba39041bb096595e23e3c2119691d00";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:34:"http://www.hollywoodlife.com/feed/";}}}s:20:"entertainment_update";a:1:{s:32:"301d48ec2a9f4b36afdcd220426071ad";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:57:"http://feeds.feedburner.com/cafemom/thestir/entertainment";}}}s:25:"celebritybabyscoop_update";a:1:{s:32:"d6f57fa14ee72b7fdb6e1ee0d8fd72c5";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:41:"http://www.celebritybabyscoop.com/rss.xml";}}}s:10:"TMZ_update";a:1:{s:32:"5fae3b7313fbde8e0fa9608814e4a60b";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{s:14:"feed_to_update";s:26:"http://www.tmz.com/rss.xml";}}}}i:1299760706;a:1:{s:19:"wp_scheduled_delete";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1299788066;a:1:{s:16:"wp_update_themes";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1299788076;a:2:{s:16:"wp_version_check";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}s:17:"wp_update_plugins";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1299839463;a:1:{s:24:"akismet_scheduled_delete";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1300356860;a:1:{s:8:"do_pings";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:2:{s:8:"schedule";b:0;s:4:"args";a:0:{}}}}i:1300356900;a:1:{s:28:"generate_google_news_sitemap";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:2:{s:8:"schedule";b:0;s:4:"args";a:0:{}}}}i:1305886446;a:1:{s:14:"test_entry_A_1";a:1:{s:32:"6a0516caf3ce51275a89301665b122f0";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_1";}s:8:"interval";i:86400;}}}i:1305887119;a:1:{s:14:"test_entry_A_2";a:1:{s:32:"aa36d3b4b4b434079a14acfb78ee17f7";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_2";}s:8:"interval";i:86400;}}}i:1305887137;a:1:{s:14:"test_entry_A_3";a:1:{s:32:"a27438b84df31de69f5733f8d5158b3b";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_3";}s:8:"interval";i:86400;}}}i:1305887141;a:1:{s:14:"test_entry_A_4";a:1:{s:32:"2111368a27f704830c3a4e2059d14023";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_4";}s:8:"interval";i:86400;}}}i:1305887156;a:1:{s:14:"test_entry_A_6";a:1:{s:32:"2c64bb51f72127dffabb04230ee37104";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:1:{i:0;s:3:"A_6";}s:8:"interval";i:86400;}}}s:7:"version";i:2;}
    [autoload] => yes
)

If you notice the cron finally contained A_6 and A_5 was lost as if it never existed in the cron.

Solution
We used a temporary solution as follows

add_action( 'pre_option_cron', 'mmc_pre_option_cron',10 );
wp_schedule_event($new_timestamp,$recurrence,$hook,$args);
remove_action( 'pre_option_cron', 'mmc_pre_option_cron',10 );

/**
 * Clean Cron Values from cache so that fresh is fetched
 *
 * @since 2011-04-18 Vicky Biswas
 */
function mmc_pre_option_cron (){
        $alloptions = wp_load_alloptions();
        if ( isset( $alloptions['cron'] ) ) {
            unset ($alloptions['cron']);
            wp_cache_set( 'alloptions', $alloptions, 'options' );
        } else
            wp_cache_delete( 'cron', 'options' );   
    return false;   
}

We invalidated the cache for cron when we needed to set the value. So that it reads from the db and updates.

Still Looking for a permanent Solution not sure despite updating the object cache why get_option returns old value.

Attachments (2)

ScreenHunter_01 May. 19 11.58.gif (16.1 KB) - added by vickybiswas 3 years ago.
compare how 2 pages when loaded
ScreenHunter_02 May. 19 12.29.gif (6.8 KB) - added by vickybiswas 3 years ago.

Download all attachments as: .zip

Change History (5)

vickybiswas3 years ago

compare how 2 pages when loaded

comment:1 follow-up: scribu3 years ago

I've encountered this problem myself. Not sure wether it was due to persistent caching or due to HyperDB, or both.

comment:2 in reply to: ↑ 1 vickybiswas3 years ago

Hey Scribu,
HyperDB wont be the culprit because as soon as we update_option it is cached using persistent cache and subsequently fetched from there itself.
Regards,
Vicky Biswas

Replying to scribu:

I've encountered this problem myself. Not sure wether it was due to persistent caching or due to HyperDB, or both.

comment:3 nacin3 years ago

  • Milestone Awaiting Review deleted
  • Resolution set to invalid
  • Status changed from new to closed

I don't think there's any indication that this is a core bug. I'm classifying this as a configuration/support issue for now and closing this as invalid. If you post in the W3TC section of the forums, I'm sure Frederick will be more than happy to share his insights on the matter, and could assist if it appears to be a bug in the persistent cache.

Note: See TracTickets for help on using tickets.