Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/middleware')
-rw-r--r--lib/gitlab/middleware/multipart.rb1
-rw-r--r--lib/gitlab/middleware/speedscope.rb18
2 files changed, 16 insertions, 3 deletions
diff --git a/lib/gitlab/middleware/multipart.rb b/lib/gitlab/middleware/multipart.rb
index 49be3ffc839..a047015e54f 100644
--- a/lib/gitlab/middleware/multipart.rb
+++ b/lib/gitlab/middleware/multipart.rb
@@ -158,6 +158,7 @@ module Gitlab
::Gitlab.config.uploads.storage_path,
::JobArtifactUploader.workhorse_upload_path,
::LfsObjectUploader.workhorse_upload_path,
+ ::DependencyProxy::FileUploader.workhorse_upload_path,
File.join(Rails.root, 'public/uploads/tmp')
] + package_allowed_paths
end
diff --git a/lib/gitlab/middleware/speedscope.rb b/lib/gitlab/middleware/speedscope.rb
index 74f334d9ab3..6992ac9b720 100644
--- a/lib/gitlab/middleware/speedscope.rb
+++ b/lib/gitlab/middleware/speedscope.rb
@@ -19,11 +19,12 @@ module Gitlab
require 'stackprof'
begin
+ mode = stackprof_mode(request)
flamegraph = ::StackProf.run(
- mode: :wall,
+ mode: mode,
raw: true,
aggregate: false,
- interval: ::Gitlab::StackProf::DEFAULT_INTERVAL_US
+ interval: ::Gitlab::StackProf.interval(mode)
) do
_, _, body = @app.call(env)
end
@@ -64,7 +65,7 @@ module Gitlab
var iframe = document.createElement('IFRAME');
iframe.setAttribute('id', 'speedscope-iframe');
document.body.appendChild(iframe);
- var iframeUrl = '#{speedscope_path}#profileURL=' + objUrl + '&title=' + 'Flamegraph for #{CGI.escape(path)}';
+ var iframeUrl = '#{speedscope_path}#profileURL=' + objUrl + '&title=' + 'Flamegraph for #{CGI.escape(path)} in #{stackprof_mode(request)} mode';
iframe.setAttribute('src', iframeUrl);
</script>
</body>
@@ -73,6 +74,17 @@ module Gitlab
[200, headers, [html]]
end
+
+ def stackprof_mode(request)
+ case request.params['stackprof_mode']&.to_sym
+ when :cpu
+ :cpu
+ when :object
+ :object
+ else
+ :wall
+ end
+ end
end
end
end