Change update interval of runners when trying to preserve contacted_at
This commit is contained in:
parent
1d54886996
commit
6a29ac7d1d
4 changed files with 8 additions and 5 deletions
|
@ -63,6 +63,7 @@ v 8.12.0 (unreleased)
|
||||||
- Fix badge count alignment (ClemMakesApps)
|
- Fix badge count alignment (ClemMakesApps)
|
||||||
- Remove green outline from `New branch unavailable` button on issue page !5858 (winniehell)
|
- Remove green outline from `New branch unavailable` button on issue page !5858 (winniehell)
|
||||||
- Fix repo title alignment (ClemMakesApps)
|
- Fix repo title alignment (ClemMakesApps)
|
||||||
|
- Change update interval of contacted_at
|
||||||
- Fix branch title trailing space on hover (ClemMakesApps)
|
- Fix branch title trailing space on hover (ClemMakesApps)
|
||||||
- Award emoji tooltips containing more than 10 usernames are now truncated !4780 (jlogandavison)
|
- Award emoji tooltips containing more than 10 usernames are now truncated !4780 (jlogandavison)
|
||||||
- Fix duplicate "me" in award emoji tooltip !5218 (jlogandavison)
|
- Fix duplicate "me" in award emoji tooltip !5218 (jlogandavison)
|
||||||
|
|
|
@ -2,7 +2,7 @@ module Ci
|
||||||
class Runner < ActiveRecord::Base
|
class Runner < ActiveRecord::Base
|
||||||
extend Ci::Model
|
extend Ci::Model
|
||||||
|
|
||||||
LAST_CONTACT_TIME = 5.minutes.ago
|
LAST_CONTACT_TIME = 2.hours.ago
|
||||||
AVAILABLE_SCOPES = %w[specific shared active paused online]
|
AVAILABLE_SCOPES = %w[specific shared active paused online]
|
||||||
FORM_EDITABLE = %i[description tag_list active run_untagged locked]
|
FORM_EDITABLE = %i[description tag_list active run_untagged locked]
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ module Ci
|
||||||
# POST /builds/register
|
# POST /builds/register
|
||||||
post "register" do
|
post "register" do
|
||||||
authenticate_runner!
|
authenticate_runner!
|
||||||
update_runner_last_contact
|
update_runner_last_contact(save: false)
|
||||||
update_runner_info
|
update_runner_info
|
||||||
required_attributes! [:token]
|
required_attributes! [:token]
|
||||||
not_found! unless current_runner.active?
|
not_found! unless current_runner.active?
|
||||||
|
|
|
@ -3,7 +3,7 @@ module Ci
|
||||||
module Helpers
|
module Helpers
|
||||||
BUILD_TOKEN_HEADER = "HTTP_BUILD_TOKEN"
|
BUILD_TOKEN_HEADER = "HTTP_BUILD_TOKEN"
|
||||||
BUILD_TOKEN_PARAM = :token
|
BUILD_TOKEN_PARAM = :token
|
||||||
UPDATE_RUNNER_EVERY = 60
|
UPDATE_RUNNER_EVERY = 40 * 60
|
||||||
|
|
||||||
def authenticate_runners!
|
def authenticate_runners!
|
||||||
forbidden! unless runner_registration_token_valid?
|
forbidden! unless runner_registration_token_valid?
|
||||||
|
@ -22,11 +22,13 @@ module Ci
|
||||||
params[:token] == current_application_settings.runners_registration_token
|
params[:token] == current_application_settings.runners_registration_token
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_runner_last_contact
|
def update_runner_last_contact(save: true)
|
||||||
# Use a random threshold to prevent beating DB updates
|
# Use a random threshold to prevent beating DB updates
|
||||||
|
# it generates a distribution between: [40m, 80m]
|
||||||
contacted_at_max_age = UPDATE_RUNNER_EVERY + Random.rand(UPDATE_RUNNER_EVERY)
|
contacted_at_max_age = UPDATE_RUNNER_EVERY + Random.rand(UPDATE_RUNNER_EVERY)
|
||||||
if current_runner.contacted_at.nil? || Time.now - current_runner.contacted_at >= contacted_at_max_age
|
if current_runner.contacted_at.nil? || Time.now - current_runner.contacted_at >= contacted_at_max_age
|
||||||
current_runner.update_attributes(contacted_at: Time.now)
|
current_runner.contacted_at = Time.now
|
||||||
|
current_runner.save if current_runner.changed? && save
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue