Passive invalidation via last_changed should use timestamps
|Reported by:||westi||Owned by:||ryan|
For #23173 we are switching lots of things over to passive invalidation via cache incrementors and last_changed.
This includes switching the oldest thing we had using this method of invalidation over to using wp_cache_incr.
This ticket is a petition to use time() still as the initial value so as to avoid race conditions with cache evictions and cache incrementors.
Currently with a 1 based last_changed key the following is possible with a persistent object cache backend like memcache:
- last_changed is set to 1
- list of pages is cached with 2 pages being the result of a get_pages call
- last_changed is evicted from the memcache server
- Another page is added
- A call to get_pages happens, sets last_changed to 1 and returns the old data
Confusion the reigns for a bit until other things are evicted or another change is made.
If we start with last_changed = time() then we have no danger of using stale cache entries.