diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-10-20 09:40:42 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-10-20 09:40:42 +0000 |
commit | ee664acb356f8123f4f6b00b73c1e1cf0866c7fb (patch) | |
tree | f8479f94a28f66654c6a4f6fb99bad6b4e86a40e /lib/version_check.rb | |
parent | 62f7d5c5b69180e82ae8196b7b429eeffc8e7b4f (diff) | |
download | gitlab-ce-ee664acb356f8123f4f6b00b73c1e1cf0866c7fb.tar.gz |
Add latest changes from gitlab-org/gitlab@15-5-stable-eev15.5.0-rc42
Diffstat (limited to 'lib/version_check.rb')
-rw-r--r-- | lib/version_check.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/version_check.rb b/lib/version_check.rb index 2d132001f54..35014f3ddf0 100644 --- a/lib/version_check.rb +++ b/lib/version_check.rb @@ -5,6 +5,36 @@ require "base64" class VersionCheck include ReactiveCaching + ## Version Check Reactive Caching + ## This cache stores the external API response from https://version.gitlab.com + ## + ## Example API Response + ## { + ## "latest_version": "15.2.2", + ## "severity": "success" + ## } + ## + ## This response from this endpoint only changes in 2 scenarios: + ## 1. Customer upgrades their GitLab Instance + ## 2. GitLab releases a new version + ## + ## We use GitLab::VERSION as the identifier for the cached information. + ## This means if the user upgrades their version we will create a new cache record. + ## The old one will be invalidated and cleaned up at the end of the self.reactive_cache_lifetime. + ## + ## - self.reactive_cache_refresh_interval = 12.hours + ## We want to prevent as many external API calls as possible to save on resources. + ## Since an EXISTING cache record will only become "invalid" if GitLab releases a new version we + ## determined that 12 hour intervals is enough of a window to capture an available upgrade. + ## + ## - self.reactive_cache_lifetime = 7.days + ## We don't want the data to be missing every time a user revisits a page using this info. + ## Thus 7 days seems like a fair amount of time before we erase the cache. + ## This also will handle cleaning up old cache records as they will no longer be accessed after an upgrade. + ## + + self.reactive_cache_refresh_interval = 12.hours + self.reactive_cache_lifetime = 7.days self.reactive_cache_work_type = :external_dependency self.reactive_cache_worker_finder = ->(_id, *args) { from_cache } |