Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2022-07-11 15:08:34 +00:00
parent 8db5a83725
commit c10eac33ab
6 changed files with 13 additions and 73 deletions

View file

@ -83,3 +83,11 @@ export const billingPlanNames = {
[billingPlans.PREMIUM]: s__('BillingPlans|Premium'), [billingPlans.PREMIUM]: s__('BillingPlans|Premium'),
[billingPlans.ULTIMATE]: s__('BillingPlans|Ultimate'), [billingPlans.ULTIMATE]: s__('BillingPlans|Ultimate'),
}; };
const INTEGRATION_TYPE_SLACK = 'slack';
const INTEGRATION_TYPE_MATTERMOST = 'mattermost';
export const placeholderForType = {
[INTEGRATION_TYPE_SLACK]: __('#general, #development'),
[INTEGRATION_TYPE_MATTERMOST]: __('my-channel'),
};

View file

@ -1,17 +1,7 @@
<script> <script>
import { GlFormGroup, GlFormCheckbox, GlFormInput } from '@gitlab/ui'; import { GlFormGroup, GlFormCheckbox, GlFormInput } from '@gitlab/ui';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { __ } from '~/locale'; import { placeholderForType } from 'jh_else_ce/integrations/constants';
const typeWithPlaceholder = {
SLACK: 'slack',
MATTERMOST: 'mattermost',
};
const placeholderForType = {
[typeWithPlaceholder.SLACK]: __('#general, #development'),
[typeWithPlaceholder.MATTERMOST]: __('my-channel'),
};
export default { export default {
name: 'TriggerFields', name: 'TriggerFields',

View file

@ -14,17 +14,6 @@ class AuthorizedProjectsWorker
idempotent! idempotent!
loggable_arguments 1 # For the job waiter key loggable_arguments 1 # For the job waiter key
# This is a workaround for a Ruby 2.3.7 bug. rspec-mocks cannot restore the
# visibility of prepended modules. See https://github.com/rspec/rspec-mocks/issues/1231
# for more details.
if Rails.env.test?
def self.bulk_perform_and_wait(args_list, timeout: 10)
end
def self.bulk_perform_inline(args_list)
end
end
def perform(user_id) def perform(user_id)
user = User.find_by_id(user_id) user = User.find_by_id(user_id)

View file

@ -5,27 +5,13 @@ module WaitableWorker
class_methods do class_methods do
# Schedules multiple jobs and waits for them to be completed. # Schedules multiple jobs and waits for them to be completed.
def bulk_perform_and_wait(args_list, timeout: 10) def bulk_perform_and_wait(args_list)
# Short-circuit: it's more efficient to do small numbers of jobs inline # Short-circuit: it's more efficient to do small numbers of jobs inline
if args_list.size == 1 || (args_list.size <= 3 && !inline_refresh_only_for_single_element?) if args_list.size == 1 || (args_list.size <= 3 && !inline_refresh_only_for_single_element?)
return bulk_perform_inline(args_list) return bulk_perform_inline(args_list)
end end
# Don't wait if there's too many jobs to be waited for. Not including the bulk_perform_async(args_list)
# waiter allows them to be deduplicated and it skips waiting for jobs that
# are not likely to finish within the timeout. This assumes we can process
# 10 jobs per second:
# https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/205
return bulk_perform_async(args_list) if (args_list.length >= 10 * timeout) || async_only_refresh?
waiter = Gitlab::JobWaiter.new(args_list.size, worker_label: self.to_s)
# Point all the bulk jobs at the same JobWaiter. Converts, [[1], [2], [3]]
# into [[1, "key"], [2, "key"], [3, "key"]]
waiting_args_list = args_list.map { |args| [*args, waiter.key] }
bulk_perform_async(waiting_args_list)
waiter.wait(timeout)
end end
# Performs multiple jobs directly. Failed jobs will be put into sidekiq so # Performs multiple jobs directly. Failed jobs will be put into sidekiq so
@ -44,10 +30,6 @@ module WaitableWorker
bulk_perform_async(failed) if failed.present? bulk_perform_async(failed) if failed.present?
end end
def async_only_refresh?
Feature.enabled?(:async_only_project_authorizations_refresh)
end
def inline_refresh_only_for_single_element? def inline_refresh_only_for_single_element?
Feature.enabled?(:inline_project_authorizations_refresh_only_for_single_element) Feature.enabled?(:inline_project_authorizations_refresh_only_for_single_element)
end end

View file

@ -1,8 +0,0 @@
---
name: async_only_project_authorizations_refresh
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90495
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/365585
milestone: '15.2'
type: development
group: group::workspace
default_enabled: false

View file

@ -76,33 +76,12 @@ RSpec.describe WaitableWorker do
end end
context '>= 4 jobs' do context '>= 4 jobs' do
it 'runs jobs using sidekiq and no waiter key' do it 'runs jobs using sidekiq' do
arguments = 1.upto(5).map { |i| [i] } arguments = 1.upto(5).map { |i| [i] }
expect(worker).to receive(:bulk_perform_async).with(arguments) expect(worker).to receive(:bulk_perform_async).with(arguments)
worker.bulk_perform_and_wait(arguments, timeout: 2) worker.bulk_perform_and_wait(arguments)
end
it 'runs > 10 * timeout jobs using sidekiq and no waiter key' do
arguments = 1.upto(21).map { |i| [i] }
expect(worker).to receive(:bulk_perform_async).with(arguments)
worker.bulk_perform_and_wait(arguments, timeout: 2)
end
context 'when the feature flag `async_only_project_authorizations_refresh` is turned off' do
before do
stub_feature_flags(async_only_project_authorizations_refresh: false)
end
it 'runs > 3 jobs using sidekiq and a waiter key' do
expect(worker).to receive(:bulk_perform_async)
.with([[1, anything], [2, anything], [3, anything], [4, anything]])
worker.bulk_perform_and_wait([[1], [2], [3], [4]])
end
end end
end end
end end