wordpress-develop icon indicating copy to clipboard operation
wordpress-develop copied to clipboard

Fix type of `wp_cache_set_last_changed()`

Open tillkruss opened this issue 8 months ago • 2 comments

The timestamp for queries currently is stored as 0.91192600 1743003204, not as a numeric value. This makes it hard to compare, plus it consumes unnecessary bytes in the key name.

Trac ticket: https://core.trac.wordpress.org/ticket/63194


This Pull Request is for code review only. Please keep all other discussion in the Trac ticket. Do not merge this Pull Request. See GitHub Pull Requests for Code Review in the Core Handbook for more details.

tillkruss avatar Mar 28 '25 20:03 tillkruss

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

Core Committers: Use this line as a base for the props when committing in SVN:

Props tillkruess, peterwilsoncc, westonruter.

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

github-actions[bot] avatar Mar 28 '25 20:03 github-actions[bot]

Test using WordPress Playground

The changes in this pull request can previewed and tested using a WordPress Playground instance.

WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser.

Some things to be aware of

  • The Plugin and Theme Directories cannot be accessed within Playground.
  • All changes will be lost when closing a tab with a Playground instance.
  • All changes will be lost when refreshing the page.
  • A fresh instance is created each time the link below is clicked.
  • Every time this pull request is updated, a new ZIP file containing all changes is created. If changes are not reflected in the Playground instance, it's possible that the most recent build failed, or has not completed. Check the list of workflow runs to be sure.

For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation.

Test this pull request with WordPress Playground.

github-actions[bot] avatar Mar 28 '25 21:03 github-actions[bot]

There are a number of plugins using the setter and associated getter (which would also be affected by the type change) in the plugin repo. I expect there are a few unlisted plugins using it too, for example the WordPress.com VIP MU Plugins.

Changing the type would affect plugins running something like this:

$lc = explode( ' ', wp_cache_(set|get)_last_changed('group') );
$time = $lc[1] + $lc[0];

With this change these would start throwing a warning as $lc[1] isn't set. I expect that this is exactly the code you wish to avoid running.


A concern I have is that the return type of wp_cache_get_last_changed('group') would become unpredictable after this change. For frequently invalidated caches, such as posts, it would quickly become a float. For infrequently invalidated caches, such as users, it would remain a string.

This could be resolved by flushing the global cache upon upgrade, but that would miss a lot of enterprise type sites that don't run the upgrade script as frequently as they could.

peterwilsoncc avatar Apr 01 '25 23:04 peterwilsoncc

@peterwilsoncc I agree. I changed the type of the filter to string so at least it's accurate now, it was never int. Thanks for checking.

tillkruss avatar Apr 01 '25 23:04 tillkruss

A commit was made that fixes the Trac ticket referenced in the description of this pull request.

SVN changeset: 60128 GitHub commit: https://github.com/WordPress/wordpress-develop/commit/07bf0f91117629fb382ad09b6de1d138baea15e0

This PR will be closed, but please confirm the accuracy of this and reopen if there is more work to be done.

github-actions[bot] avatar Apr 03 '25 20:04 github-actions[bot]