Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2024-01-16 09:08:05 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2024-01-16 09:08:05 +0300
commit2bc11b8442e9f68800cfed57f9abad3f2dfc0b78 (patch)
tree373aa469b310bbd2f30dfa60ebdc2c6e18c4e4e9 /app
parent21de0d5578ba4b6e4f7ad0667ecdaaf0810f4235 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/commons/vue.js2
-rw-r--r--app/assets/javascripts/diffs/components/app.vue10
-rw-r--r--app/assets/javascripts/diffs/components/diff_file_header.vue15
-rw-r--r--app/assets/javascripts/diffs/index.js1
-rw-r--r--app/assets/javascripts/import/constants.js6
-rw-r--r--app/workers/all_queues.yml9
-rw-r--r--app/workers/concerns/worker_attributes.rb7
-rw-r--r--app/workers/concurrency_limit/resume_worker.rb64
8 files changed, 84 insertions, 30 deletions
diff --git a/app/assets/javascripts/commons/vue.js b/app/assets/javascripts/commons/vue.js
index 09d2e065e58..cd24a503631 100644
--- a/app/assets/javascripts/commons/vue.js
+++ b/app/assets/javascripts/commons/vue.js
@@ -9,4 +9,4 @@ if (process.env.NODE_ENV !== 'production') {
Vue.use(GlFeatureFlagsPlugin);
Vue.use(Translate);
-Vue.config.ignoredElements = ['gl-emoji', 'copy-code'];
+Vue.config.ignoredElements = ['gl-emoji'];
diff --git a/app/assets/javascripts/diffs/components/app.vue b/app/assets/javascripts/diffs/components/app.vue
index 698fd3909ed..978e6731e9d 100644
--- a/app/assets/javascripts/diffs/components/app.vue
+++ b/app/assets/javascripts/diffs/components/app.vue
@@ -85,8 +85,6 @@ export default {
GlPagination,
GlSprintf,
GlAlert,
- GenerateTestFileDrawer: () =>
- import('ee_component/ai/components/generate_test_file_drawer.vue'),
},
mixins: [glFeatureFlagsMixin()],
alerts: {
@@ -240,7 +238,6 @@ export default {
'showWhitespace',
'targetBranchName',
'branchName',
- 'generateTestFilePath',
]),
...mapGetters('diffs', [
'whichCollapsedTypes',
@@ -443,7 +440,6 @@ export default {
'navigateToDiffFileIndex',
'setFileByFile',
'disableVirtualScroller',
- 'setGenerateTestFilePath',
'fetchPinnedFile',
]),
...mapActions('findingsDrawer', ['setDrawer']),
@@ -818,11 +814,5 @@ export default {
</div>
</div>
</div>
- <generate-test-file-drawer
- v-if="getNoteableData.id"
- :resource-id="resourceId"
- :file-path="generateTestFilePath"
- @close="() => setGenerateTestFilePath('')"
- />
</div>
</template>
diff --git a/app/assets/javascripts/diffs/components/diff_file_header.vue b/app/assets/javascripts/diffs/components/diff_file_header.vue
index 97db0fc1c24..3dd52777267 100644
--- a/app/assets/javascripts/diffs/components/diff_file_header.vue
+++ b/app/assets/javascripts/diffs/components/diff_file_header.vue
@@ -54,11 +54,6 @@ export default {
compareButtonLabel: __('Compare submodule commit revisions'),
fileModeTooltip: __('File permissions'),
},
- inject: {
- showGenerateTestFileButton: {
- default: false,
- },
- },
props: {
discussionPath: {
type: String,
@@ -225,7 +220,6 @@ export default {
'reviewFile',
'setFileCollapsedByUser',
'setFileForcedOpen',
- 'setGenerateTestFilePath',
'toggleFileCommentForm',
'unpinFile',
]),
@@ -470,15 +464,6 @@ export default {
{{ __('Open in Web IDE') }}
</gl-dropdown-item>
<gl-dropdown-item
- v-if="showGenerateTestFileButton"
- @click="setGenerateTestFilePath(diffFile.new_path)"
- >
- <span class="gl-display-flex gl-justify-content-space-between gl-align-items-center">
- {{ __('Suggest test cases') }}
- <gl-icon name="tanuki-ai" class="gl-text-purple-600 gl-mr-n3" />
- </span>
- </gl-dropdown-item>
- <gl-dropdown-item
v-if="diffFile.replaced_view_path"
ref="replacedFileButton"
:href="diffFile.replaced_view_path"
diff --git a/app/assets/javascripts/diffs/index.js b/app/assets/javascripts/diffs/index.js
index b219b5499c9..303f010e56f 100644
--- a/app/assets/javascripts/diffs/index.js
+++ b/app/assets/javascripts/diffs/index.js
@@ -28,7 +28,6 @@ export default function initDiffsApp(store = notesStore) {
apolloProvider,
provide: {
newCommentTemplatePath: dataset.newCommentTemplatePath,
- showGenerateTestFileButton: parseBoolean(dataset.showGenerateTestFileButton),
},
data() {
return {
diff --git a/app/assets/javascripts/import/constants.js b/app/assets/javascripts/import/constants.js
index cbb01d0bbf1..c7917334ffd 100644
--- a/app/assets/javascripts/import/constants.js
+++ b/app/assets/javascripts/import/constants.js
@@ -19,14 +19,14 @@ export const BULK_IMPORT_STATIC_ITEMS = {
const STATISTIC_ITEMS = {
diff_note: __('Diff notes'),
issue: __('Issues'),
- issue_attachment: s__('GithubImporter|Issue links'),
+ issue_attachment: s__('GithubImporter|Issue attachments'),
issue_event: __('Issue events'),
label: __('Labels'),
lfs_object: __('LFS objects'),
merge_request_attachment: s__('GithubImporter|PR attachments'),
milestone: __('Milestones'),
note: __('Notes'),
- note_attachment: s__('GithubImporter|Note links'),
+ note_attachment: s__('GithubImporter|Note attachments'),
protected_branch: __('Protected branches'),
collaborator: s__('GithubImporter|Collaborators'),
pull_request: s__('GithubImporter|Pull requests'),
@@ -34,7 +34,7 @@ const STATISTIC_ITEMS = {
pull_request_review: s__('GithubImporter|PR reviews'),
pull_request_review_request: s__('GithubImporter|PR reviewers'),
release: __('Releases'),
- release_attachment: s__('GithubImporter|Release links'),
+ release_attachment: s__('GithubImporter|Release attachments'),
};
// support both camel case and snake case versions
diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml
index dfad9f7f673..0f13af61e3d 100644
--- a/app/workers/all_queues.yml
+++ b/app/workers/all_queues.yml
@@ -363,6 +363,15 @@
:weight: 1
:idempotent: true
:tags: []
+- :name: cronjob:concurrency_limit_resume
+ :worker_name: ConcurrencyLimit::ResumeWorker
+ :feature_category: :global_search
+ :has_external_dependencies: false
+ :urgency: :low
+ :resource_boundary: :unknown
+ :weight: 1
+ :idempotent: true
+ :tags: []
- :name: cronjob:container_expiration_policy
:worker_name: ContainerExpirationPolicyWorker
:feature_category: :container_registry
diff --git a/app/workers/concerns/worker_attributes.rb b/app/workers/concerns/worker_attributes.rb
index 28c82a5a38e..a1c5039dc22 100644
--- a/app/workers/concerns/worker_attributes.rb
+++ b/app/workers/concerns/worker_attributes.rb
@@ -159,6 +159,13 @@ module WorkerAttributes
::Gitlab::SidekiqMiddleware::PauseControl::WorkersMap.strategy_for(worker: self)
end
+ def concurrency_limit(max_jobs)
+ ::Gitlab::SidekiqMiddleware::ConcurrencyLimit::WorkersMap.set_limit_for(
+ worker: self,
+ max_jobs: max_jobs
+ )
+ end
+
def get_weight
get_class_attribute(:weight) ||
NAMESPACE_WEIGHTS[queue_namespace] ||
diff --git a/app/workers/concurrency_limit/resume_worker.rb b/app/workers/concurrency_limit/resume_worker.rb
new file mode 100644
index 00000000000..e88277dc581
--- /dev/null
+++ b/app/workers/concurrency_limit/resume_worker.rb
@@ -0,0 +1,64 @@
+# frozen_string_literal: true
+
+module ConcurrencyLimit
+ class ResumeWorker
+ include ApplicationWorker
+ include CronjobQueue # rubocop:disable Scalability/CronWorkerContext -- There is no onward scheduling and this cron handles work from across the
+ # application, so there's no useful context to add.
+
+ DEFAULT_LIMIT = 1_000
+ RESCHEDULE_DELAY = 1.second
+
+ feature_category :global_search
+ data_consistency :sticky
+ idempotent!
+ urgency :low
+
+ def perform
+ reschedule_job = false
+
+ workers.each do |worker|
+ next unless jobs_in_the_queue?(worker)
+
+ reschedule_job = true
+
+ limit = ::Gitlab::SidekiqMiddleware::ConcurrencyLimit::WorkersMap.limit_for(worker: worker)&.call
+
+ processing_limit = if limit
+ current = current_concurrency(worker: worker)
+ limit - current
+ else
+ DEFAULT_LIMIT
+ end
+
+ next unless processing_limit > 0
+
+ resume_processing!(worker, limit: processing_limit)
+ end
+
+ self.class.perform_in(RESCHEDULE_DELAY) if reschedule_job
+ end
+
+ private
+
+ def current_concurrency(worker:)
+ @current_concurrency ||= ::Gitlab::SidekiqMiddleware::ConcurrencyLimit::WorkersConcurrency.workers(
+ skip_cache: true
+ )
+
+ @current_concurrency[worker.name].to_i
+ end
+
+ def jobs_in_the_queue?(worker)
+ Gitlab::SidekiqMiddleware::ConcurrencyLimit::ConcurrencyLimitService.has_jobs_in_queue?(worker.name)
+ end
+
+ def resume_processing!(worker, limit:)
+ Gitlab::SidekiqMiddleware::ConcurrencyLimit::ConcurrencyLimitService.resume_processing!(worker.name, limit: limit)
+ end
+
+ def workers
+ Gitlab::SidekiqMiddleware::ConcurrencyLimit::WorkersMap.workers
+ end
+ end
+end