Ticket #5199 (new defect)

Opened 9 months ago

Last modified 4 months ago

Options object cache can become out of sync with the database.

Reported by: markjaquith Assigned to: anonymous
Priority: high Milestone: 2.6
Component: General Version: 2.2.3
Severity: major Keywords: needs-patch
Cc:

Description

I have a client with a high volume site (both in terms of view and in terms of entries posted that has been having problems with future-published entries sometimes not publishing at their correct times. I've been monitoring things, and it seems that when problems occur, the object cache has become out of sync with the database. We're using the APC backend in this case, though I don't think that's the cause of the issues.

Specifically, sometimes the database "cron" entry will have cron items that aren't found when you get_option('cron');

There may be a race condition with concurrent updates.

We can likely improve this in the option API, but we might not be able to eliminate it entirely. It may be prudent to revisit our method of storing cron entries, as an option is not a good place to store a frequently-updated serialized array.

The idea of a multi-use "meta" table has been floated, and this might be another good use of that, as cron entries could have their own meta type.

Change History

10/16/07 17:25:09 changed by markjaquith

Caught it with two conflicting values (note the different publishing times). The one in the DB was right, but not the one in the cache.

_get_cron_array() :

Array
(
   [1192545034] => Array
       (
           [publish_future_post] => Array
               (
                   [c718cfbf7e9d1a40c454cc48cebbe5a7] => Array
                       (
                           [schedule] =>
                           [args] => Array
                               (
                                   [0] => 11915
                               )

                       )

               )

       )

)




DB:

Array
(
   [1192543234] => Array
       (
           [publish_future_post] => Array
               (
                   [c718cfbf7e9d1a40c454cc48cebbe5a7] => Array
                       (
                           [schedule] =>
                           [args] => Array
                               (
                                   [0] => 11915
                               )

                       )

               )

       )

)

03/11/08 15:00:31 changed by lloydbudd

  • keywords set to needs-patch.
  • milestone changed from 2.5 to 2.6.