johnbillion / wp-crontrol

Take control of the cron events on your WordPress website
https://wp-crontrol.com
GNU General Public License v2.0
208 stars 36 forks source link

Run Now often causes error #97

Open robgilde opened 1 year ago

robgilde commented 1 year ago

Found in 1.5.2. Possibly related to Issue #33. I stepped through this in a debugger and I think I've identified the root cause.

force_schedule_single_event() calls _set_cron_array() _set_cron_array() calls update_option() update_option() returns "true if the value was updated, false otherwise". False is not necessarily an error condition - it can be false if the save was unnecessary. However, the false result is propagated back up and force_schedule_single_event() at line 108 treats it as an error. I think line 108 should be something like if ( $wp_error && ! $result ) {

Thanks!

johnbillion commented 1 year ago

Thanks for the issue. I'll do some testing!

johnbillion commented 1 year ago

False is not necessarily an error condition - it can be false if the save was unnecessary

This is true, but in the case of force_schedule_single_event() the save is surely always necessary. In your debugging are you finding that the save inside update_option() doesn't happen?

robgilde commented 1 year ago

Yes at line 485 I think $value === $old_value is true.
However I'm having some other problems at the moment and my dev env is hosed so I can't be certain that that is not an error. Thanks for looking into this!