summaryrefslogtreecommitdiff
path: root/lib/gitlab
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2018-02-07 22:44:05 +0800
committerLin Jen-Shin <godfat@godfat.org>2018-02-07 22:56:07 +0800
commit31f1ec59a7cf7517cd5935ef3af540aceba07bb3 (patch)
tree86b8e98063147beb2fda41b6007fa315b880a096 /lib/gitlab
parentbbfce29ba8d75df5344dae34dc472dfb3b3acf4b (diff)
downloadgitlab-ce-31f1ec59a7cf7517cd5935ef3af540aceba07bb3.tar.gz
Release the entire env
Diffstat (limited to 'lib/gitlab')
-rw-r--r--lib/gitlab/middleware/release_controller.rb9
-rw-r--r--lib/gitlab/middleware/release_env.rb14
2 files changed, 14 insertions, 9 deletions
diff --git a/lib/gitlab/middleware/release_controller.rb b/lib/gitlab/middleware/release_controller.rb
deleted file mode 100644
index a21d718d51c..00000000000
--- a/lib/gitlab/middleware/release_controller.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module Gitlab
- module Middleware
- ReleaseController = Struct.new(:app) do
- def call(env)
- app.call(env).tap { env.delete('action_controller.instance') }
- end
- end
- end
-end
diff --git a/lib/gitlab/middleware/release_env.rb b/lib/gitlab/middleware/release_env.rb
new file mode 100644
index 00000000000..f8d0a135965
--- /dev/null
+++ b/lib/gitlab/middleware/release_env.rb
@@ -0,0 +1,14 @@
+module Gitlab
+ module Middleware
+ # Some of middleware would hold env for no good reason even after the
+ # request had already been processed, and we could not garbage collect
+ # them due to this. Put this middleware as the first middleware so that
+ # it would clear the env after the request is done, allowing GC gets a
+ # chance to release memory for the last request.
+ ReleaseEnv = Struct.new(:app) do
+ def call(env)
+ app.call(env).tap { env.clear }
+ end
+ end
+ end
+end