[10.x] Ensure array driver expires values at the expiry time #48497
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The array cache driver's logic for determining when a key has expired is wrong.
It currently requires the time to be PAST the expiry - but the value indicates when the key expires at, thus if it is currently the time that it expires, it should have expired.
This means the array driver does not currently function like Redis. You can demo this yourself using the following script to test.
Make sure to test with
array
and withredis
to see the difference.You will notice that the array driver cannot make another hit until 1 second past the NEXT minute while Redis is able to make a hit at the very start of the second (give or take a few hundred milliseconds for communicating with Redis itself).
Array
Redis
The included test is one I was already writing that lead me down the path of testing all of this - so I left it in for us.