mirror of
https://github.com/discourse/discourse.git
synced 2025-03-09 14:34:35 +00:00
Version checks: tolerate old version check data that can happen immediately after upgrading but forgetting to restart sidekiq/clockwork. Don't cache version check data along with other dashboard data.
This commit is contained in:
parent
fc25da09e3
commit
06140740d0
@ -4,6 +4,7 @@ class Admin::DashboardController < Admin::AdminController
|
|||||||
dashboard_data = Rails.cache.fetch("admin-dashboard-data-#{Discourse::VERSION::STRING}", expires_in: 1.hour) do
|
dashboard_data = Rails.cache.fetch("admin-dashboard-data-#{Discourse::VERSION::STRING}", expires_in: 1.hour) do
|
||||||
AdminDashboardData.fetch_all.as_json
|
AdminDashboardData.fetch_all.as_json
|
||||||
end
|
end
|
||||||
|
dashboard_data.merge!({version_check: DiscourseUpdates.check_version.as_json}) if SiteSetting.version_checks?
|
||||||
render json: dashboard_data
|
render json: dashboard_data
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -59,9 +59,7 @@ class AdminDashboardData
|
|||||||
top_referrers: IncomingLinksReport.find('top_referrers').as_json,
|
top_referrers: IncomingLinksReport.find('top_referrers').as_json,
|
||||||
top_traffic_sources: IncomingLinksReport.find('top_traffic_sources').as_json,
|
top_traffic_sources: IncomingLinksReport.find('top_traffic_sources').as_json,
|
||||||
top_referred_topics: IncomingLinksReport.find('top_referred_topics').as_json
|
top_referred_topics: IncomingLinksReport.find('top_referred_topics').as_json
|
||||||
}.merge(
|
}
|
||||||
SiteSetting.version_checks? ? {version_check: DiscourseUpdates.check_version.as_json} : {}
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def rails_env_check
|
def rails_env_check
|
||||||
|
@ -20,12 +20,21 @@ module DiscourseUpdates
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
if version_info.updated_at.nil? or
|
if SiteSetting.version_checks?
|
||||||
(version_info.missing_versions_count == 0 and version_info.latest_version != version_info.installed_version)
|
|
||||||
# Version check data is out of date.
|
# Handle cases when version check data is old so we report something that makes sense
|
||||||
|
|
||||||
|
if (version_info.updated_at.nil? or
|
||||||
|
(version_info.missing_versions_count == 0 and version_info.latest_version != version_info.installed_version) or
|
||||||
|
(version_info.missing_versions_count != 0 and version_info.latest_version == version_info.installed_version))
|
||||||
Jobs.enqueue(:version_check, all_sites: true)
|
Jobs.enqueue(:version_check, all_sites: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if !version_info.updated_at.nil? and version_info.latest_version == version_info.installed_version
|
||||||
|
version_info.missing_versions_count = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
version_info
|
version_info
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ module Jobs
|
|||||||
class VersionCheck < Jobs::Base
|
class VersionCheck < Jobs::Base
|
||||||
|
|
||||||
def execute(args)
|
def execute(args)
|
||||||
if SiteSetting.version_checks and (DiscourseUpdates.updated_at.nil? or DiscourseUpdates.updated_at < 1.minute.ago)
|
if SiteSetting.version_checks? and (DiscourseUpdates.updated_at.nil? or DiscourseUpdates.updated_at < 1.minute.ago)
|
||||||
begin
|
begin
|
||||||
json = DiscourseHub.discourse_version_check
|
json = DiscourseHub.discourse_version_check
|
||||||
DiscourseUpdates.latest_version = json['latestVersion']
|
DiscourseUpdates.latest_version = json['latestVersion']
|
||||||
|
@ -81,4 +81,28 @@ describe DiscourseUpdates do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'old version check data' do
|
||||||
|
context 'installed is latest' do
|
||||||
|
before { stub_data(Discourse::VERSION::STRING, 1, false, 8.hours.ago) }
|
||||||
|
|
||||||
|
it 'queues a version check' do
|
||||||
|
Jobs.expects(:enqueue).with(:version_check, anything)
|
||||||
|
subject
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'reports 0 missing versions' do
|
||||||
|
subject['missing_versions_count'].should == 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'installed is not latest' do
|
||||||
|
before { stub_data('0.9.1', 0, false, 8.hours.ago) }
|
||||||
|
|
||||||
|
it 'queues a version check' do
|
||||||
|
Jobs.expects(:enqueue).with(:version_check, anything)
|
||||||
|
subject
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user