Ticket #6966 (new defect)

Opened 3 months ago

Last modified 3 months ago

cron: prevent duplicate events

Reported by: tellyworth Assigned to: anonymous
Priority: normal Milestone: 2.7
Component: General Version:
Severity: normal Keywords: has-patch, has-test
Cc:

Description

This is an unusual case but worth defending against:

If a user submits many posts in a short period of time (perhaps with XML-RPC), the cron array can fill up with a backlog of do_pings events. Since do_pings operates on all posts, there's no reason to have more than one of these events scheduled.

The enclosed patch changes wp_schedule_single_event() to ignore new events if there is already an identical event scheduled within 10 minutes of the new one. (It also handles the case where there's a backlog of events with timestamps in the past). The hook and args must be identical for it to be skipped. 10 minutes is arbitrary but seems reasonable; it could be an external define if there's a need to change it.

Attachments

cron-ignore-duplicate-events-r7916.3.patch (0.6 kB) - added by tellyworth on 05/13/08 02:45:09.

Change History

05/13/08 02:45:09 changed by tellyworth

  • attachment cron-ignore-duplicate-events-r7916.3.patch added.

05/13/08 02:48:03 changed by tellyworth

  • keywords set to has-patch, has-test.

Unit tests are in http://svn.automattic.com/wordpress-tests/wp-testcase/test_cron.php, test_duplicate_event() and test_not_duplicate_event(). All tests pass with the patch applied.