From 62046cc9eccc37b1d55b3e437c51589421d08eb5 Mon Sep 17 00:00:00 2001 From: Jan Renz Date: Mon, 23 Nov 2015 17:42:13 +0100 Subject: [PATCH 1/4] Enable ActiveRecord Mng --- config/application.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/application.rb b/config/application.rb index 744438a9..4b2a543a 100644 --- a/config/application.rb +++ b/config/application.rb @@ -33,6 +33,8 @@ module CodeOcean case (RUBY_ENGINE) when 'ruby' # ... + #this is enabled in prod for testing + config.middleware.use ActiveRecord::ConnectionAdapters::ConnectionManagement when 'jruby' # plattform specific java.lang.Class.for_name('javax.crypto.JceSecurity').get_declared_field('isRestricted').tap{|f| f.accessible = true; f.set nil, false} From d262e194c17cfdebec89999ff55a67c7d0e18edc Mon Sep 17 00:00:00 2001 From: Jan Renz Date: Mon, 23 Nov 2015 19:47:13 +0100 Subject: [PATCH 2/4] Update puma --- Gemfile | 2 +- Gemfile.lock | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Gemfile b/Gemfile index 3b1b2cd2..0b94f0ed 100644 --- a/Gemfile +++ b/Gemfile @@ -19,7 +19,7 @@ gem 'kramdown' gem 'newrelic_rpm' gem 'pg', platform: :ruby gem 'pry' -gem 'puma' +gem 'puma', '~> 2.15.3' gem 'pundit' gem 'rails', '~> 4.1.2' gem 'rails-i18n', '~> 4.0.0' diff --git a/Gemfile.lock b/Gemfile.lock index d27789ea..245de4e7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -185,13 +185,11 @@ GEM method_source (~> 0.8.1) slop (~> 3.4) spoon (~> 0.0) - puma (2.11.1) - rack (>= 1.1, < 2.0) - puma (2.11.1-java) - rack (>= 1.1, < 2.0) + puma (2.15.3) + puma (2.15.3-java) pundit (0.3.0) activesupport (>= 3.0.0) - rack (1.5.2) + rack (1.5.5) rack-test (0.6.3) rack (>= 1.0) rails (4.1.10) @@ -368,7 +366,7 @@ DEPENDENCIES nyan-cat-formatter pg pry - puma + puma (~> 2.15.3) pundit rails (~> 4.1.2) rails-i18n (~> 4.0.0) From c41a8d8d5ef159d492e632e9c141f8c8f7bec7f5 Mon Sep 17 00:00:00 2001 From: Jan Renz Date: Mon, 23 Nov 2015 20:13:59 +0100 Subject: [PATCH 3/4] Faster restore of containers after puma restart --- config/docker.yml.erb | 4 ++-- lib/docker_container_pool.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/docker.yml.erb b/config/docker.yml.erb index 9f916acc..5ac309e8 100644 --- a/config/docker.yml.erb +++ b/config/docker.yml.erb @@ -18,8 +18,8 @@ production: active: true refill: async: false - batch_size: 32 - interval: 30 + batch_size: 8 + interval: 15 timeout: 60 workspace_root: <%= Rails.root.join('tmp', 'files', Rails.env) %> ws_host: ws://localhost:4243 diff --git a/lib/docker_container_pool.rb b/lib/docker_container_pool.rb index d027076b..77167b72 100644 --- a/lib/docker_container_pool.rb +++ b/lib/docker_container_pool.rb @@ -96,7 +96,7 @@ class DockerContainerPool end def self.start_refill_task - @refill_task = Concurrent::TimerTask.new(execution_interval: config[:refill][:interval], run_now: false, timeout_interval: config[:refill][:timeout]) { refill } + @refill_task = Concurrent::TimerTask.new(execution_interval: config[:refill][:interval], run_now: true, timeout_interval: config[:refill][:timeout]) { refill } @refill_task.execute end end From ffdde1830b241ec8728ea4d2d3d135cd422182cd Mon Sep 17 00:00:00 2001 From: Jan Renz Date: Mon, 23 Nov 2015 20:20:34 +0100 Subject: [PATCH 4/4] Restore large envs first --- lib/docker_container_pool.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/docker_container_pool.rb b/lib/docker_container_pool.rb index 77167b72..18509669 100644 --- a/lib/docker_container_pool.rb +++ b/lib/docker_container_pool.rb @@ -71,7 +71,7 @@ class DockerContainerPool end def self.refill - ExecutionEnvironment.where('pool_size > 0').each do |execution_environment| + ExecutionEnvironment.where('pool_size > 0').order(pool_size: :desc).each do |execution_environment| if config[:refill][:async] Concurrent::Future.execute { refill_for_execution_environment(execution_environment) } else