From 0720b9ce0059feca284404e6fc1ede0cba542fe3 Mon Sep 17 00:00:00 2001 From: Ahmad Sherif Date: Mon, 1 Aug 2016 16:55:50 +0200 Subject: [PATCH] Catch what warden might throw when profiling requests to re-throw it Closes #20488 --- CHANGELOG | 1 + lib/gitlab/request_profiler/middleware.rb | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3b61e52b2fc..0cff6857c2c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -44,6 +44,7 @@ v 8.11.0 (unreleased) - Reduce number of queries made for merge_requests/:id/diffs - Sensible state specific default sort order for issues and merge requests !5453 (tomb0y) - Fix RequestProfiler::Middleware error when code is reloaded in development + - Catch what warden might throw when profiling requests to re-throw it v 8.10.3 (unreleased) - Fix importer for GitHub Pull Requests when a branch was removed diff --git a/lib/gitlab/request_profiler/middleware.rb b/lib/gitlab/request_profiler/middleware.rb index 0c54f2dd71f..4e787dc0656 100644 --- a/lib/gitlab/request_profiler/middleware.rb +++ b/lib/gitlab/request_profiler/middleware.rb @@ -29,7 +29,9 @@ module Gitlab def call_with_profiling(env) ret = nil result = RubyProf::Profile.profile do - ret = @app.call(env) + ret = catch(:warden) do + @app.call(env) + end end printer = RubyProf::CallStackPrinter.new(result) @@ -41,7 +43,11 @@ module Gitlab printer.print(file) end - ret + if ret.is_a?(Array) + ret + else + throw(:warden, ret) + end end end end