Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2021-09-02 00:10:56 +00:00
parent 58c1969d4a
commit 61a1ecc5e9
10 changed files with 71 additions and 9 deletions

View File

@ -372,7 +372,7 @@ GEM
faraday_middleware
multi_json
fast_blank (1.0.0)
fast_gettext (1.6.0)
fast_gettext (2.1.0)
ffaker (2.10.0)
ffi (1.15.3)
ffi-compiler (1.0.1)

View File

@ -0,0 +1,21 @@
# frozen_string_literal: true
class AddStateToMember < ActiveRecord::Migration[6.1]
include Gitlab::Database::MigrationHelpers
def up
unless column_exists?(:members, :state)
with_lock_retries do
add_column :members, :state, :integer, limit: 2, default: 0
end
end
end
def down
if column_exists?(:members, :state)
with_lock_retries do
remove_column :members, :state
end
end
end
end

View File

@ -0,0 +1 @@
54f7c66eed745b62d0b53a407a96721f90392ab7f800db9c8a2607f22974ef3c

View File

@ -14873,7 +14873,8 @@ CREATE TABLE members (
requested_at timestamp without time zone,
expires_at date,
ldap boolean DEFAULT false NOT NULL,
override boolean DEFAULT false NOT NULL
override boolean DEFAULT false NOT NULL,
state smallint DEFAULT 0
);
CREATE SEQUENCE members_id_seq

View File

@ -333,6 +333,9 @@ excluded_attributes:
project_members:
- :source_id
- :invite_email_success
- :state
group_members:
- :state
metrics:
- :merge_request_id
- :pipeline_id

View File

@ -57,6 +57,11 @@ module Gitlab
worker_queues = SidekiqConfig::CliMethods.worker_queues(@rails_path)
queue_groups = argv.map do |queues_or_query_string|
if queues_or_query_string =~ /[\r\n]/
raise CommandError,
'The queue arguments cannot contain newlines'
end
next worker_queues if queues_or_query_string == SidekiqConfig::WorkerMatcher::WILDCARD_MATCH
# When using the queue query syntax, we treat each queue group

View File

@ -1,11 +1,14 @@
# frozen_string_literal: true
require 'spec_helper'
require 'fast_spec_helper'
require 'shellwords'
require 'rspec-parameterized'
RSpec.describe 'bin/sidekiq-cluster' do
RSpec.describe 'bin/sidekiq-cluster', :aggregate_failures do
using RSpec::Parameterized::TableSyntax
let(:root) { File.expand_path('../..', __dir__) }
context 'when selecting some queues and excluding others' do
where(:args, :included, :excluded) do
%w[--negate cronjob] | '-qdefault,1' | '-qcronjob,1'
@ -13,10 +16,10 @@ RSpec.describe 'bin/sidekiq-cluster' do
end
with_them do
it 'runs successfully', :aggregate_failures do
it 'runs successfully' do
cmd = %w[bin/sidekiq-cluster --dryrun] + args
output, status = Gitlab::Popen.popen(cmd, Rails.root.to_s)
output, status = Gitlab::Popen.popen(cmd, root)
expect(status).to be(0)
expect(output).to include('bundle exec sidekiq')
@ -31,10 +34,10 @@ RSpec.describe 'bin/sidekiq-cluster' do
%w[*],
%w[--queue-selector *]
].each do |args|
it "runs successfully with `#{args}`", :aggregate_failures do
it "runs successfully with `#{args}`" do
cmd = %w[bin/sidekiq-cluster --dryrun] + args
output, status = Gitlab::Popen.popen(cmd, Rails.root.to_s)
output, status = Gitlab::Popen.popen(cmd, root)
expect(status).to be(0)
expect(output).to include('bundle exec sidekiq')
@ -43,4 +46,20 @@ RSpec.describe 'bin/sidekiq-cluster' do
end
end
end
context 'when arguments contain newlines' do
it 'raises an error' do
[
["default\n"],
["defaul\nt"]
].each do |args|
cmd = %w[bin/sidekiq-cluster --dryrun] + args
output, status = Gitlab::Popen.popen(cmd, root)
expect(status).to be(1)
expect(output).to include('cannot contain newlines')
end
end
end
end

View File

@ -48,6 +48,18 @@ RSpec.describe Gitlab::SidekiqCluster::CLI do
cli.run(%w(*))
end
it 'raises an error when the arguments contain newlines' do
invalid_arguments = [
["foo\n"],
["foo\r"],
%W[foo b\nar]
]
invalid_arguments.each do |arguments|
expect { cli.run(arguments) }.to raise_error(described_class::CommandError)
end
end
context 'with --negate flag' do
it 'starts Sidekiq workers for all queues in all_queues.yml except the ones in argv' do
expect(Gitlab::SidekiqConfig::CliMethods).to receive(:worker_queues).and_return(['baz'])

View File

@ -81,7 +81,7 @@ end
Gitlab::Database.singleton_class.prepend(
Database::PreventCrossJoins::GitlabDatabaseMixin)
ALLOW_LIST = Set.new(YAML.load_file(Rails.root.join('.cross-join-allowlist.yml'))).freeze
ALLOW_LIST = Set.new(YAML.load_file(File.join(__dir__, 'cross-join-allowlist.yml'))).freeze
RSpec.configure do |config|
config.include(::Database::PreventCrossJoins::SpecHelpers)