diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-20 09:55:51 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-20 09:55:51 +0000 |
commit | e8d2c2579383897a1dd7f9debd359abe8ae8373d (patch) | |
tree | c42be41678c2586d49a75cabce89322082698334 /app/services/ci/append_build_trace_service.rb | |
parent | fc845b37ec3a90aaa719975f607740c22ba6a113 (diff) | |
download | gitlab-ce-e8d2c2579383897a1dd7f9debd359abe8ae8373d.tar.gz |
Add latest changes from gitlab-org/gitlab@14-1-stable-eev14.1.0-rc42
Diffstat (limited to 'app/services/ci/append_build_trace_service.rb')
-rw-r--r-- | app/services/ci/append_build_trace_service.rb | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/app/services/ci/append_build_trace_service.rb b/app/services/ci/append_build_trace_service.rb index 602f8c5030d..8200f9790ee 100644 --- a/app/services/ci/append_build_trace_service.rb +++ b/app/services/ci/append_build_trace_service.rb @@ -24,6 +24,12 @@ module Ci body_start = content_range[0].to_i body_end = body_start + body_data.bytesize + if trace_size_exceeded?(body_end) + build.drop(:trace_size_exceeded) + + return Result.new(status: 403) + end + stream_size = build.trace.append(body_data, body_start) unless stream_size == body_end @@ -37,6 +43,8 @@ module Ci private + delegate :project, to: :build + def stream_range params.fetch(:content_range) end @@ -61,5 +69,10 @@ module Ci ::Gitlab::ErrorTracking .log_exception(TraceRangeError.new, extra) end + + def trace_size_exceeded?(size) + Feature.enabled?(:ci_jobs_trace_size_limit, project, default_enabled: :yaml) && + project.actual_limits.exceeded?(:ci_jobs_trace_size_limit, size / 1.megabyte) + end end end |