From d16917261bb82ee84e97316091c15aa6c2ef6a84 Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Mon, 1 Nov 2021 09:48:16 +0100 Subject: [PATCH] Prevent inactivityTimeout from being smaller than permitted_execution_time --- lib/runner/strategy/docker_container_pool.rb | 6 ++++-- lib/runner/strategy/poseidon.rb | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/runner/strategy/docker_container_pool.rb b/lib/runner/strategy/docker_container_pool.rb index 5654b5c6..eea7c9cc 100644 --- a/lib/runner/strategy/docker_container_pool.rb +++ b/lib/runner/strategy/docker_container_pool.rb @@ -29,8 +29,9 @@ class Runner::Strategy::DockerContainerPool < Runner::Strategy def self.request_from_management(environment) url = "#{config[:url]}/docker_container_pool/get_container/#{environment.id}" + inactivity_timeout = [config[:unused_runner_expiration_time], environment.permitted_execution_time].max body = { - inactivity_timeout: config[:unused_runner_expiration_time].seconds, + inactivity_timeout: inactivity_timeout.to_i.seconds, } Rails.logger.debug { "#{Time.zone.now.getutc.inspect}: Requesting new runner at #{url}" } response = Faraday.post url, body @@ -191,8 +192,9 @@ class Runner::Strategy::DockerContainerPool < Runner::Strategy def reset_inactivity_timer url = "#{self.class.config[:url]}/docker_container_pool/reuse_container/#{container.id}" + inactivity_timeout = [self.class.config[:unused_runner_expiration_time], @execution_environment.permitted_execution_time].max body = { - inactivity_timeout: self.class.config[:unused_runner_expiration_time].seconds, + inactivity_timeout: inactivity_timeout.to_i.seconds, } Rails.logger.debug { "#{Time.zone.now.getutc.inspect}: Resetting inactivity timer at #{url}" } Faraday.post url, body diff --git a/lib/runner/strategy/poseidon.rb b/lib/runner/strategy/poseidon.rb index cabda9f5..c84365bf 100644 --- a/lib/runner/strategy/poseidon.rb +++ b/lib/runner/strategy/poseidon.rb @@ -33,9 +33,10 @@ class Runner::Strategy::Poseidon < Runner::Strategy def self.request_from_management(environment) url = "#{config[:url]}/runners" + inactivity_timeout = [config[:unused_runner_expiration_time], environment.permitted_execution_time].max body = { executionEnvironmentId: environment.id, - inactivityTimeout: config[:unused_runner_expiration_time].seconds, + inactivityTimeout: inactivity_timeout.to_i.seconds, } Rails.logger.debug { "#{Time.zone.now.getutc.inspect}: Requesting new runner at #{url}" } response = http_connection.post url, body.to_json