Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2022-09-22 21:10:24 +00:00
parent 1862f4a83e
commit aaedbff77d
18 changed files with 60 additions and 45 deletions

View File

@ -1,7 +1,7 @@
#import "~/graphql_shared/fragments/user.fragment.graphql" #import "~/graphql_shared/fragments/user.fragment.graphql"
#import "~/graphql_shared/fragments/user_availability.fragment.graphql" #import "~/graphql_shared/fragments/user_availability.fragment.graphql"
query issueParticipants($fullPath: ID!, $iid: String!) { query issueParticipants($fullPath: ID!, $iid: String!, $getStatus: Boolean = false) {
workspace: project(fullPath: $fullPath) { workspace: project(fullPath: $fullPath) {
id id
issuable: issue(iid: $iid) { issuable: issue(iid: $iid) {
@ -9,7 +9,7 @@ query issueParticipants($fullPath: ID!, $iid: String!) {
participants { participants {
nodes { nodes {
...User ...User
...UserAvailability ...UserAvailability @include(if: $getStatus)
} }
} }
} }

View File

@ -1,7 +1,7 @@
#import "~/graphql_shared/fragments/user.fragment.graphql" #import "~/graphql_shared/fragments/user.fragment.graphql"
#import "~/graphql_shared/fragments/user_availability.fragment.graphql" #import "~/graphql_shared/fragments/user_availability.fragment.graphql"
query getMrParticipants($fullPath: ID!, $iid: String!) { query getMrParticipants($fullPath: ID!, $iid: String!, $getStatus: Boolean = false) {
workspace: project(fullPath: $fullPath) { workspace: project(fullPath: $fullPath) {
id id
issuable: mergeRequest(iid: $iid) { issuable: mergeRequest(iid: $iid) {
@ -9,7 +9,7 @@ query getMrParticipants($fullPath: ID!, $iid: String!) {
participants { participants {
nodes { nodes {
...User ...User
...UserAvailability ...UserAvailability @include(if: $getStatus)
} }
} }
} }

View File

@ -103,6 +103,7 @@ export default {
return { return {
iid: this.iid, iid: this.iid,
fullPath: this.fullPath, fullPath: this.fullPath,
getStatus: true,
}; };
}, },
update(data) { update(data) {

View File

@ -134,7 +134,7 @@ module Projects
destroy_ci_records! destroy_ci_records!
destroy_mr_diff_relations! destroy_mr_diff_relations!
destroy_merge_request_diffs! if ::Feature.enabled?(:extract_mr_diff_deletions) destroy_merge_request_diffs!
# Rails attempts to load all related records into memory before # Rails attempts to load all related records into memory before
# destroying: https://github.com/rails/rails/issues/22510 # destroying: https://github.com/rails/rails/issues/22510

View File

@ -1,8 +0,0 @@
---
name: extract_mr_diff_deletions
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96455
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372060
milestone: '15.4'
type: development
group: group::source code
default_enabled: false

View File

@ -0,0 +1,7 @@
# frozen_string_literal: true
class AddRejectNonDcoCommitsToPushRules < Gitlab::Database::Migration[2.0]
def change
add_column :push_rules, :reject_non_dco_commits, :boolean
end
end

View File

@ -0,0 +1,19 @@
# frozen_string_literal: true
class PrepareAsyncTrigramIndexForVulnerabilityReadsContainerImages < Gitlab::Database::Migration[2.0]
disable_ddl_transaction!
INDEX_NAME = 'index_vulnerability_reads_on_location_image_trigram'
REPORT_TYPES = { container_scanning: 2, cluster_image_scanning: 7 }.freeze
def up
prepare_async_index :vulnerability_reads, :location_image,
name: INDEX_NAME,
using: :gin, opclass: { location_image: :gin_trgm_ops },
where: "report_type = ANY (ARRAY[#{REPORT_TYPES.values.join(', ')}]) AND location_image IS NOT NULL"
end
def down
unprepare_async_index :vulnerability_reads, :location_image, name: INDEX_NAME
end
end

View File

@ -0,0 +1 @@
766866e84cdafce6506f18e574e1cfb760a581fa7464ce7e29c31d9778c687c0

View File

@ -0,0 +1 @@
9686a948e67f25d64f66187db27699b838b2caef11f27884dd6e868e4bcf7d47

View File

@ -20511,7 +20511,8 @@ CREATE TABLE push_rules (
reject_unsigned_commits boolean, reject_unsigned_commits boolean,
commit_committer_check boolean, commit_committer_check boolean,
regexp_uses_re2 boolean DEFAULT true, regexp_uses_re2 boolean DEFAULT true,
commit_message_negative_regex character varying commit_message_negative_regex character varying,
reject_non_dco_commits boolean
); );
CREATE SEQUENCE push_rules_id_seq CREATE SEQUENCE push_rules_id_seq

View File

@ -426,7 +426,7 @@ the three characters, such as `my-package`, `my_package`, and `my....package`.
## Troubleshooting ## Troubleshooting
To improve performance, PyPI caches files related to a package. Note that PyPI doesn't remove data by To improve performance, the pip command caches files related to a package. Note that pip doesn't remove data by
itself. The cache grows as new packages are installed. If you encounter issues, clear the cache with itself. The cache grows as new packages are installed. If you encounter issues, clear the cache with
this command: this command:

View File

@ -14,8 +14,13 @@ module Gitlab
# The maximum number of SQL queries that can be executed in a request. For # The maximum number of SQL queries that can be executed in a request. For
# the sake of keeping things simple we hardcode this value here, it's not # the sake of keeping things simple we hardcode this value here, it's not
# supposed to be changed very often anyway. # supposed to be changed very often anyway.
THRESHOLD = 100 def self.threshold
LOG_THRESHOLD = THRESHOLD * 1.5 100
end
def self.log_threshold
threshold * 1.5
end
# Error that is raised whenever exceeding the maximum number of queries. # Error that is raised whenever exceeding the maximum number of queries.
ThresholdExceededError = Class.new(StandardError) ThresholdExceededError = Class.new(StandardError)
@ -76,7 +81,7 @@ module Gitlab
end end
def executed_sql(sql) def executed_sql(sql)
return if @count > LOG_THRESHOLD || ignorable?(sql) return if @count > self.class.log_threshold || ignorable?(sql)
@sql_executed << sql @sql_executed << sql
end end
@ -86,15 +91,15 @@ module Gitlab
end end
def threshold_exceeded? def threshold_exceeded?
count > THRESHOLD count > self.class.threshold
end end
def error_message def error_message
header = 'Too many SQL queries were executed' header = 'Too many SQL queries were executed'
header = "#{header} in #{action}" if action header = "#{header} in #{action}" if action
msg = "a maximum of #{THRESHOLD} is allowed but #{count} SQL queries were executed" msg = "a maximum of #{self.class.threshold} is allowed but #{count} SQL queries were executed"
log = @sql_executed.each_with_index.map { |sql, i| "#{i}: #{sql}" }.join("\n").presence log = @sql_executed.each_with_index.map { |sql, i| "#{i}: #{sql}" }.join("\n").presence
ellipsis = '...' if @count > LOG_THRESHOLD ellipsis = '...' if @count > self.class.log_threshold
["#{header}: #{msg}", log, ellipsis].compact.join("\n") ["#{header}: #{msg}", log, ellipsis].compact.join("\n")
end end
@ -105,3 +110,5 @@ module Gitlab
end end
end end
end end
Gitlab::QueryLimiting::Transaction.prepend_mod

View File

@ -8,7 +8,7 @@ RSpec.describe 'Projects > Settings > User transfers a project', :js do
let(:group) { create(:group) } let(:group) { create(:group) }
before do before do
stub_const('Gitlab::QueryLimiting::Transaction::THRESHOLD', 120) allow(Gitlab::QueryLimiting::Transaction).to receive(:threshold).and_return(120)
group.add_owner(user) group.add_owner(user)
sign_in(user) sign_in(user)

View File

@ -52,7 +52,7 @@ RSpec.describe Gitlab::QueryLimiting::Transaction do
context 'when the query threshold is exceeded' do context 'when the query threshold is exceeded' do
let(:transaction) do let(:transaction) do
trans = described_class.new trans = described_class.new
trans.count = described_class::THRESHOLD + 1 trans.count = described_class.threshold + 1
trans trans
end end
@ -120,7 +120,7 @@ RSpec.describe Gitlab::QueryLimiting::Transaction do
it 'returns true when the threshold is exceeded' do it 'returns true when the threshold is exceeded' do
transaction = described_class.new transaction = described_class.new
transaction.count = described_class::THRESHOLD + 1 transaction.count = described_class.threshold + 1
expect(transaction.threshold_exceeded?).to eq(true) expect(transaction.threshold_exceeded?).to eq(true)
end end
@ -129,7 +129,7 @@ RSpec.describe Gitlab::QueryLimiting::Transaction do
describe '#error_message' do describe '#error_message' do
it 'returns the error message to display when the threshold is exceeded' do it 'returns the error message to display when the threshold is exceeded' do
transaction = described_class.new transaction = described_class.new
transaction.count = max = described_class::THRESHOLD transaction.count = max = described_class.threshold
expect(transaction.error_message).to eq( expect(transaction.error_message).to eq(
"Too many SQL queries were executed: a maximum of #{max} " \ "Too many SQL queries were executed: a maximum of #{max} " \
@ -139,7 +139,7 @@ RSpec.describe Gitlab::QueryLimiting::Transaction do
it 'includes a list of executed queries' do it 'includes a list of executed queries' do
transaction = described_class.new transaction = described_class.new
transaction.count = max = described_class::THRESHOLD transaction.count = max = described_class.threshold
%w[foo bar baz].each { |sql| transaction.executed_sql(sql) } %w[foo bar baz].each { |sql| transaction.executed_sql(sql) }
message = transaction.error_message message = transaction.error_message
@ -154,7 +154,7 @@ RSpec.describe Gitlab::QueryLimiting::Transaction do
it 'indicates if the log is truncated' do it 'indicates if the log is truncated' do
transaction = described_class.new transaction = described_class.new
transaction.count = described_class::THRESHOLD * 2 transaction.count = described_class.threshold * 2
message = transaction.error_message message = transaction.error_message
@ -163,7 +163,7 @@ RSpec.describe Gitlab::QueryLimiting::Transaction do
it 'includes the action name in the error message when present' do it 'includes the action name in the error message when present' do
transaction = described_class.new transaction = described_class.new
transaction.count = max = described_class::THRESHOLD transaction.count = max = described_class.threshold
transaction.action = 'UsersController#show' transaction.action = 'UsersController#show'
expect(transaction.error_message).to eq( expect(transaction.error_message).to eq(

View File

@ -1033,7 +1033,7 @@ RSpec.describe API::Internal::Base do
context 'git push' do context 'git push' do
before do before do
stub_const('Gitlab::QueryLimiting::Transaction::THRESHOLD', 120) allow(Gitlab::QueryLimiting::Transaction).to receive(:threshold).and_return(120)
end end
subject { push_with_path(key, full_path: path, changes: '_any') } subject { push_with_path(key, full_path: path, changes: '_any') }

View File

@ -146,20 +146,6 @@ RSpec.describe Projects::DestroyService, :aggregate_failures, :event_store_publi
expect { destroy_project(project, user, {}) }.to change(MergeRequestDiff, :count).by(-1) expect { destroy_project(project, user, {}) }.to change(MergeRequestDiff, :count).by(-1)
expect { another_project_mr.reload }.not_to raise_error expect { another_project_mr.reload }.not_to raise_error
end end
context 'when extract_mr_diff_deletions feature flag is disabled' do
before do
stub_feature_flags(extract_mr_diff_deletions: false)
end
it 'also deletes merge request diffs' do
merge_request_diffs = merge_request.merge_request_diffs
expect(merge_request_diffs.size).to eq(1)
expect { destroy_project(project, user, {}) }.to change(MergeRequestDiff, :count).by(-1)
expect { another_project_mr.reload }.not_to raise_error
end
end
end end
it_behaves_like 'deleting the project' it_behaves_like 'deleting the project'

View File

@ -717,7 +717,7 @@ module GraphqlHelpers
end end
def allow_high_graphql_transaction_threshold def allow_high_graphql_transaction_threshold
stub_const("Gitlab::QueryLimiting::Transaction::THRESHOLD", 1000) allow(Gitlab::QueryLimiting::Transaction).to receive(:threshold).and_return(1000)
end end
def allow_high_graphql_query_size def allow_high_graphql_query_size

View File

@ -20,7 +20,7 @@ RSpec.shared_examples 'issuable update endpoint' do
end end
it 'updates the issuable with labels param as array' do it 'updates the issuable with labels param as array' do
stub_const("Gitlab::QueryLimiting::Transaction::THRESHOLD", 110) allow(Gitlab::QueryLimiting::Transaction).to receive(:threshold).and_return(110)
params = { labels: ['label1', 'label2', 'foo, bar', '&,?'] } params = { labels: ['label1', 'label2', 'foo, bar', '&,?'] }