diff options
author | Matt Wilde <matt@zenpayroll.com> | 2015-03-11 14:08:19 -0700 |
---|---|---|
committer | Matt Wilde <matt@zenpayroll.com> | 2015-03-11 15:14:10 -0700 |
commit | 23767c0c41fa51ebef1dfb11bc166c07e93897ac (patch) | |
tree | a7896c4cda73bb5e048ff47b245e71fc112952b9 /activesupport/lib/active_support | |
parent | 1b7ae86f262df7d15b57be3b4a4f38680ce37c64 (diff) | |
download | rails-23767c0c41fa51ebef1dfb11bc166c07e93897ac.tar.gz rails-23767c0c41fa51ebef1dfb11bc166c07e93897ac.tar.bz2 rails-23767c0c41fa51ebef1dfb11bc166c07e93897ac.zip |
Skip the `:race_condition_ttl` branch if the option is 0 or nil. This fixes an issue with the redis cache, where this code will sometimes throw an error out of SETEX when passing 0 as the `expires_at`.
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r-- | activesupport/lib/active_support/cache.rb | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/activesupport/lib/active_support/cache.rb b/activesupport/lib/active_support/cache.rb index 625be2c959..837974bc85 100644 --- a/activesupport/lib/active_support/cache.rb +++ b/activesupport/lib/active_support/cache.rb @@ -566,8 +566,8 @@ module ActiveSupport def handle_expired_entry(entry, key, options) if entry && entry.expired? race_ttl = options[:race_condition_ttl].to_i - if race_ttl && (Time.now.to_f - entry.expires_at <= race_ttl) - # When an entry has :race_condition_ttl defined, put the stale entry back into the cache + if (race_ttl > 0) && (Time.now.to_f - entry.expires_at <= race_ttl) + # When an entry has a positive :race_condition_ttl defined, put the stale entry back into the cache # for a brief period while the entry is being recalculated. entry.expires_at = Time.now + race_ttl write_entry(key, entry, :expires_in => race_ttl * 2) |