diff options
author | Kamil TrzciĆski <ayufan@ayufan.eu> | 2018-11-27 17:12:49 +0100 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2018-11-28 08:34:32 -0800 |
commit | dc962788fa7589e948479f609a6feb29404d217b (patch) | |
tree | 60f9cad6d77f2aa71de85a7c4f0efef4bce8d636 | |
parent | 56da230826f76f0c16fbb5b7de4ced28d8f5cdae (diff) | |
download | gitlab-ce-dc962788fa7589e948479f609a6feb29404d217b.tar.gz |
Add monkey patch to unicorn to fix eof? problem
Rack with Unicorn is unable to handle chunked requests due to private `eof?` method.
This exposes `eof?` not changing `rack` behavior.
Issue: https://gitlab.com/gitlab-org/gitlab-ee/issues/8539
-rw-r--r-- | Gemfile | 7 | ||||
-rw-r--r-- | Gemfile.lock | 1 | ||||
-rw-r--r-- | Gemfile.rails4.lock | 1 | ||||
-rw-r--r-- | changelogs/unreleased/unicorn-monkey-patch.yml | 5 | ||||
-rw-r--r-- | config.ru | 4 |
5 files changed, 18 insertions, 0 deletions
@@ -7,6 +7,11 @@ gem_versions = {} gem_versions['activerecord_sane_schema_dumper'] = rails5? ? '1.0' : '0.2' gem_versions['rails'] = rails5? ? '5.0.7' : '4.2.10' gem_versions['rails-i18n'] = rails5? ? '~> 5.1' : '~> 4.0.9' + +# The 2.0.6 version of rack requires monkeypatch to be present in +# `config.ru`. This can be removed once a new update for Rack +# is available that contains https://github.com/rack/rack/pull/1201. +gem_versions['rack'] = rails5? ? '2.0.6' : '1.6.11' # --- The end of special code for migrating to Rails 5.0 --- source 'https://rubygems.org' @@ -154,6 +159,8 @@ gem 'icalendar' gem 'diffy', '~> 3.1.0' # Application server +gem 'rack', gem_versions['rack'] + group :unicorn do gem 'unicorn', '~> 5.1.0' gem 'unicorn-worker-killer', '~> 0.4.4' diff --git a/Gemfile.lock b/Gemfile.lock index f622c6292b2..96b453344a1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1088,6 +1088,7 @@ DEPENDENCIES pry-rails (~> 0.3.4) puma (~> 3.12) puma_worker_killer + rack (= 2.0.6) rack-attack (~> 4.4.1) rack-cors (~> 1.0.0) rack-oauth2 (~> 1.2.1) diff --git a/Gemfile.rails4.lock b/Gemfile.rails4.lock index 2542e085815..1289a28b719 100644 --- a/Gemfile.rails4.lock +++ b/Gemfile.rails4.lock @@ -1079,6 +1079,7 @@ DEPENDENCIES pry-rails (~> 0.3.4) puma (~> 3.12) puma_worker_killer + rack (= 1.6.11) rack-attack (~> 4.4.1) rack-cors (~> 1.0.0) rack-oauth2 (~> 1.2.1) diff --git a/changelogs/unreleased/unicorn-monkey-patch.yml b/changelogs/unreleased/unicorn-monkey-patch.yml new file mode 100644 index 00000000000..6b0e00ca291 --- /dev/null +++ b/changelogs/unreleased/unicorn-monkey-patch.yml @@ -0,0 +1,5 @@ +--- +title: Add monkey patch to unicorn to fix eof? problem +merge_request: 23385 +author: +type: fixed diff --git a/config.ru b/config.ru index 405d01863ac..a5d055334dd 100644 --- a/config.ru +++ b/config.ru @@ -13,6 +13,10 @@ if defined?(Unicorn) # Max memory size (RSS) per worker use Unicorn::WorkerKiller::Oom, min, max end + + # Monkey patch for fixing Rack 2.0.6 bug: + # https://gitlab.com/gitlab-org/gitlab-ee/issues/8539 + Unicorn::StreamInput.send(:public, :eof?) # rubocop:disable GitlabSecurity/PublicSend end require ::File.expand_path('../config/environment', __FILE__) |