aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/cache.rb
diff options
context:
space:
mode:
authorMatt Wilde <matt@zenpayroll.com>2015-03-11 14:08:19 -0700
committerMatt Wilde <matt@zenpayroll.com>2015-03-11 15:14:10 -0700
commit23767c0c41fa51ebef1dfb11bc166c07e93897ac (patch)
treea7896c4cda73bb5e048ff47b245e71fc112952b9 /activesupport/lib/active_support/cache.rb
parent1b7ae86f262df7d15b57be3b4a4f38680ce37c64 (diff)
downloadrails-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/cache.rb')
-rw-r--r--activesupport/lib/active_support/cache.rb4
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)