summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/trace.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/ci/trace.rb')
-rw-r--r--lib/gitlab/ci/trace.rb28
1 files changed, 18 insertions, 10 deletions
diff --git a/lib/gitlab/ci/trace.rb b/lib/gitlab/ci/trace.rb
index c4757edf74e..84eb860a168 100644
--- a/lib/gitlab/ci/trace.rb
+++ b/lib/gitlab/ci/trace.rb
@@ -14,6 +14,8 @@ module Gitlab
UPDATE_FREQUENCY_DEFAULT = 60.seconds
UPDATE_FREQUENCY_WHEN_BEING_WATCHED = 3.seconds
+ LOAD_BALANCING_STICKING_NAMESPACE = 'ci/build/trace'
+
ArchiveError = Class.new(StandardError)
AlreadyArchivedError = Class.new(StandardError)
LockedError = Class.new(StandardError)
@@ -296,25 +298,31 @@ module Gitlab
read_trace_artifact(job) { job.job_artifacts_trace }
end
- ##
- # Overridden in EE
- #
- def destroy_stream(job)
+ def destroy_stream(build)
+ if consistent_archived_trace?(build)
+ ::Gitlab::Database::LoadBalancing::Sticking
+ .stick(LOAD_BALANCING_STICKING_NAMESPACE, build.id)
+ end
+
yield
end
- ##
- # Overriden in EE
- #
- def read_trace_artifact(job)
+ def read_trace_artifact(build)
+ if consistent_archived_trace?(build)
+ ::Gitlab::Database::LoadBalancing::Sticking
+ .unstick_or_continue_sticking(LOAD_BALANCING_STICKING_NAMESPACE, build.id)
+ end
+
yield
end
+ def consistent_archived_trace?(build)
+ ::Feature.enabled?(:gitlab_ci_archived_trace_consistent_reads, build.project, default_enabled: false)
+ end
+
def being_watched_cache_key
"gitlab:ci:trace:#{job.id}:watched"
end
end
end
end
-
-::Gitlab::Ci::Trace.prepend_mod_with('Gitlab::Ci::Trace')