Disable DCP if other strategy class is chosen

This commit is contained in:
Sebastian Serth
2021-09-19 12:26:29 +02:00
parent 4ad898ad8b
commit fd9e243064
3 changed files with 11 additions and 6 deletions

View File

@ -13,14 +13,14 @@ div.mb-4
= "CodeOcean Release:"
pre = Sentry.configuration.release
- if DockerContainerPool.config[:active]
- if DockerContainerPool.active?
div.mb-4
= "DockerContainerPool Release:"
pre = DockerContainerPool.dump_info['release']
h2 Docker
- if DockerContainerPool.config[:active]
- if DockerContainerPool.active?
h3 = t('.current')
.table-responsive
table.table

View File

@ -230,7 +230,7 @@ class DockerClient
Rails.logger.info("destroying container #{container}")
# Checks only if container assignment is not nil and not whether the container itself is still present.
if container && !DockerContainerPool.config[:active]
if container && !DockerContainerPool.active?
container.kill
container.port_bindings.each_value {|port| PortPool.release(port) }
begin
@ -355,7 +355,7 @@ container_execution_time: nil}
exit_thread_if_alive
@socket.close
# if we use pooling and recylce the containers, put it back. otherwise, destroy it.
if DockerContainerPool.config[:active] && RECYCLE_CONTAINERS
if DockerContainerPool.active? && RECYCLE_CONTAINERS
self.class.return_container(container,
@execution_environment)
else
@ -493,7 +493,7 @@ container_execution_time: nil}
end
# if we use pooling and recylce the containers, put it back. otherwise, destroy it.
if DockerContainerPool.config[:active] && RECYCLE_CONTAINERS
if DockerContainerPool.active? && RECYCLE_CONTAINERS
self.class.return_container(container, @execution_environment)
else
self.class.destroy_container(container)

View File

@ -9,6 +9,11 @@ require 'concurrent/timer_task'
# dump_info and quantities are still in use.
class DockerContainerPool
def self.active?
# TODO: Refactor config and merge with code_ocean.yml
config[:active] && Runner.management_active? && Runner.strategy_class == Runner::Strategy::DockerContainerPool
end
def self.config
# TODO: Why erb?
@config ||= CodeOcean::Config.new(:docker).read(erb: true)[:pool]
@ -39,7 +44,7 @@ class DockerContainerPool
def self.get_container(execution_environment)
# if pooling is active, do pooling, otherwise just create an container and return it
if config[:active]
if active?
begin
container_id = JSON.parse(Faraday.get("#{config[:location]}/docker_container_pool/get_container/#{execution_environment.id}").body)['id']
Docker::Container.get(container_id) if container_id.present?