mirror of
https://gitea.invidious.io/iv-org/invidious.git
synced 2024-08-15 00:53:41 +00:00
Enhance fetch_random_instance func
Handle cross-inst. redirect w/ broken health stats Add check for instance version in cross-redirect
This commit is contained in:
parent
b63bebb519
commit
950c8f7104
1 changed files with 25 additions and 3 deletions
|
@ -417,9 +417,31 @@ def fetch_random_instance
|
|||
filtered_instance_list = [] of String
|
||||
instance_list.as_a.each do |data|
|
||||
if data[1]["type"] == "https"
|
||||
if data[1]["monitor"]
|
||||
# Makes sure the instance isn't too outdated.
|
||||
remote_version = data[1]["stats"]["software"]["version"]
|
||||
remote_commit_date = remote_version.as_s.match(/\d{4}\.\d{2}\.\d{2}/)
|
||||
next if !remote_commit_date
|
||||
remote_commit_date = Time.parse(remote_commit_date[0], "%Y.%m.%d", Time::Location::UTC)
|
||||
local_commit_date = Time.parse(CURRENT_VERSION, "%Y.%m.%d", Time::Location::UTC)
|
||||
|
||||
if (remote_commit_date - local_commit_date).abs.days <= 30
|
||||
# as_nil? doesn't exist. Thus we'll have to handle the error rasied if
|
||||
# as_nil fails.
|
||||
begin
|
||||
broken_health_monitoring = data[1]["monitor"].as_nil
|
||||
broken_health_monitoring = true if broken_health_monitoring.nil?
|
||||
rescue TypeCastError
|
||||
broken_health_monitoring = false
|
||||
end
|
||||
|
||||
if !broken_health_monitoring
|
||||
health = data[1]["monitor"].as_h["dailyRatios"][0].as_h["ratio"]
|
||||
filtered_instance_list << data[0].as_s if health.to_s.to_f > 90
|
||||
else
|
||||
# We can't check the health if the monitoring is broken. Thus we'll just add it to the list
|
||||
# and move on
|
||||
filtered_instance_list << data[0].as_s
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue