Commit fdff819
committed
bug #38879 [Cache] Fixed expiry could be int in ChainAdapter due to race conditions (phamviet)
This PR was merged into the 4.4 branch.
Discussion
----------
[Cache] Fixed expiry could be int in ChainAdapter due to race conditions
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix #38635
| License | MIT
| Doc PR | no
This bug is hard to re-produce and seems only happen with ArrayAdapter only.
Steps to reproduce:
cache.yaml
```
simple.cache:
adapters:
- cache.adapter.array
- cache.adapter.redis
```
```php
if (isset($item->metadata[CacheItem::METADATA_EXPIRY])) {
$logger->debug($item->key, $item->metadata);
$format = is_int($item->metadata[CacheItem::METADATA_EXPIRY]) ? 'U' : 'U.u';
$item->expiresAt(\DateTime::createFromFormat($format, $item->metadata[CacheItem::METADATA_EXPIRY]));
}
```
Refresh webpage multiple time to make web server busy and logs:
```
[2020-10-29T17:04:51.119653+07:00] application.DEBUG: item-key {"expiry":1603965892.118222,"ctime":4} []
[2020-10-29T17:04:54.322937+07:00] application.DEBUG: item-key {"expiry":1603965895.308393,"ctime":17} []
[2020-10-29T17:04:54.745923+07:00] application.DEBUG: item-key {"expiry":1603965895,"ctime":16} []
```
Commits
-------
268816f [Cache] Fixed expiry maybe int due too race conditions1 file changed
+5
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
74 | 74 | | |
75 | 75 | | |
76 | 76 | | |
77 | | - | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
78 | 82 | | |
79 | 83 | | |
80 | 84 | | |
| |||
0 commit comments