diff options
author | Nick Thomas <nick@gitlab.com> | 2018-05-08 07:07:48 +0100 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2018-05-08 07:51:38 +0100 |
commit | 1f898f1e20a74b67faa931384c3fec33b5fd956f (patch) | |
tree | 4c2ae6b71b6b9af93f9c9cc2d871f40b529cb183 /app/models/concerns | |
parent | 0eb74426b3eeacf92cd144e6ddc336adbe43ca1e (diff) | |
download | gitlab-ce-1f898f1e20a74b67faa931384c3fec33b5fd956f.tar.gz |
Update commit status from external CI services less aggressively
Diffstat (limited to 'app/models/concerns')
-rw-r--r-- | app/models/concerns/reactive_caching.rb | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/app/models/concerns/reactive_caching.rb b/app/models/concerns/reactive_caching.rb index 2589215ad19..eef9caf1c8e 100644 --- a/app/models/concerns/reactive_caching.rb +++ b/app/models/concerns/reactive_caching.rb @@ -60,13 +60,16 @@ module ReactiveCaching end def with_reactive_cache(*args, &blk) - within_reactive_cache_lifetime(*args) do + bootstrap = !within_reactive_cache_lifetime?(*args) + Rails.cache.write(alive_reactive_cache_key(*args), true, expires_in: self.class.reactive_cache_lifetime) + + if bootstrap + ReactiveCachingWorker.perform_async(self.class, id, *args) + nil + else data = Rails.cache.read(full_reactive_cache_key(*args)) yield data if data.present? end - ensure - Rails.cache.write(alive_reactive_cache_key(*args), true, expires_in: self.class.reactive_cache_lifetime) - ReactiveCachingWorker.perform_async(self.class, id, *args) end def clear_reactive_cache!(*args) @@ -75,7 +78,7 @@ module ReactiveCaching def exclusively_update_reactive_cache!(*args) locking_reactive_cache(*args) do - within_reactive_cache_lifetime(*args) do + if within_reactive_cache_lifetime?(*args) enqueuing_update(*args) do value = calculate_reactive_cache(*args) Rails.cache.write(full_reactive_cache_key(*args), value) @@ -105,8 +108,8 @@ module ReactiveCaching Gitlab::ExclusiveLease.cancel(full_reactive_cache_key(*args), uuid) end - def within_reactive_cache_lifetime(*args) - yield if Rails.cache.read(alive_reactive_cache_key(*args)) + def within_reactive_cache_lifetime?(*args) + !!Rails.cache.read(alive_reactive_cache_key(*args)) end def enqueuing_update(*args) |