diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-22 06:09:46 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-22 06:09:46 +0000 |
commit | b06ba604b8d1b40758ebbda5008fe3294d0f2a2a (patch) | |
tree | 4da549dc17b5ab32bb47076299b45fec74866563 | |
parent | 34daf3bdb3c68289eb2eedfb78cd4deb816047fd (diff) | |
download | gitlab-ce-b06ba604b8d1b40758ebbda5008fe3294d0f2a2a.tar.gz |
Add latest changes from gitlab-org/gitlab@master
32 files changed, 302 insertions, 368 deletions
diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 3017301fdeb..02e450f7691 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -3c8e91098f09d1f896d4ca9f4e74b3faa1768bbf +5091c327992b8c85dcc859788c4cafb83a13f9f3 diff --git a/app/assets/javascripts/issues/show/components/incidents/incident_tabs.vue b/app/assets/javascripts/issues/show/components/incidents/incident_tabs.vue index 997fadec602..755287bf8a1 100644 --- a/app/assets/javascripts/issues/show/components/incidents/incident_tabs.vue +++ b/app/assets/javascripts/issues/show/components/incidents/incident_tabs.vue @@ -35,7 +35,7 @@ export default { IncidentMetricTab: () => import('ee_component/issues/show/components/incidents/incident_metric_tab.vue'), }, - inject: ['fullPath', 'iid', 'uploadMetricsFeatureAvailable'], + inject: ['fullPath', 'iid', 'hasLinkedAlerts', 'uploadMetricsFeatureAvailable'], i18n: incidentTabsI18n, apollo: { alert: { @@ -72,7 +72,7 @@ export default { if (this.uploadMetricsFeatureAvailable) { availableTabs.push(TAB_NAMES.METRICS); } - if (this.alert) { + if (this.hasLinkedAlerts) { availableTabs.push(TAB_NAMES.ALERTS); } @@ -153,7 +153,7 @@ export default { <incident-metric-tab /> </gl-tab> <gl-tab - v-if="alert" + v-if="hasLinkedAlerts" class="alert-management-details" :title="$options.i18n.alertsTitle" data-testid="alert-details-tab" diff --git a/app/assets/javascripts/issues/show/index.js b/app/assets/javascripts/issues/show/index.js index b89ee3cf22e..52ed8bbc798 100644 --- a/app/assets/javascripts/issues/show/index.js +++ b/app/assets/javascripts/issues/show/index.js @@ -39,6 +39,7 @@ export function initIncidentApp(issueData = {}, store) { projectNamespace, projectPath, projectId, + hasLinkedAlerts, slaFeatureAvailable, uploadMetricsFeatureAvailable, state, @@ -60,6 +61,7 @@ export function initIncidentApp(issueData = {}, store) { iid, issuableId, projectId, + hasLinkedAlerts: parseBoolean(hasLinkedAlerts), slaFeatureAvailable: parseBoolean(slaFeatureAvailable), uploadMetricsFeatureAvailable: parseBoolean(uploadMetricsFeatureAvailable), contentEditorOnIssues: gon.features.contentEditorOnIssues, diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb index 50696c7b5e1..4ba0eead599 100644 --- a/app/models/concerns/issuable.rb +++ b/app/models/concerns/issuable.rb @@ -658,6 +658,10 @@ module Issuable { name: name, subject: self } end + + def supports_health_status? + false + end end Issuable.prepend_mod_with('Issuable') diff --git a/app/views/notify/new_review_email.text.erb b/app/views/notify/new_review_email.text.erb index 7bf878aefd0..69cb33b05df 100644 --- a/app/views/notify/new_review_email.text.erb +++ b/app/views/notify/new_review_email.text.erb @@ -4,7 +4,6 @@ -- <% @notes.each_with_index do |note, index| %> - <!-- Get preloaded note discussion--> <% discussion = @discussions[note.discussion_id] if note.part_of_discussion?%> <% target_url = project_merge_request_url(@project, @merge_request, anchor: "note_#{note.id}") %> <%= render 'note_email', note: note, diff_limit: 3, target_url: target_url, discussion: discussion, author: @author %> diff --git a/config/feature_flags/development/improved_spread_parallel_import.yml b/config/feature_flags/development/improved_spread_parallel_import.yml deleted file mode 100644 index a1d7caf12b0..00000000000 --- a/config/feature_flags/development/improved_spread_parallel_import.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: improved_spread_parallel_import -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109264 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/388665 -milestone: '15.9' -type: development -group: group::import -default_enabled: true diff --git a/db/structure.sql b/db/structure.sql index 6c15719abf1..a732006ceb8 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -543,13 +543,6 @@ CREATE TABLE batched_background_migration_job_transition_logs ( ) PARTITION BY RANGE (created_at); -CREATE TABLE p_ci_runner_machine_builds ( - partition_id bigint NOT NULL, - build_id bigint NOT NULL, - runner_machine_id bigint NOT NULL -) -PARTITION BY LIST (partition_id); - CREATE TABLE incident_management_pending_alert_escalations ( id bigint NOT NULL, rule_id bigint NOT NULL, @@ -11221,8 +11214,8 @@ CREATE TABLE appearances ( email_header_and_footer_enabled boolean DEFAULT false NOT NULL, profile_image_guidelines text, profile_image_guidelines_html text, - pwa_icon text, pwa_short_name text, + pwa_icon text, pwa_name text, pwa_description text, CONSTRAINT appearances_profile_image_guidelines CHECK ((char_length(profile_image_guidelines) <= 4096)), @@ -11718,12 +11711,13 @@ CREATE TABLE application_settings ( encrypted_telesign_customer_xid_iv bytea, encrypted_telesign_api_key bytea, encrypted_telesign_api_key_iv bytea, - max_terraform_state_size_bytes integer DEFAULT 0 NOT NULL, disable_personal_access_tokens boolean DEFAULT false NOT NULL, + max_terraform_state_size_bytes integer DEFAULT 0 NOT NULL, bulk_import_enabled boolean DEFAULT false NOT NULL, allow_runner_registration_token boolean DEFAULT true NOT NULL, user_defaults_to_private_profile boolean DEFAULT false NOT NULL, allow_possible_spam boolean DEFAULT false NOT NULL, + default_syntax_highlighting_theme integer DEFAULT 1 NOT NULL, encrypted_product_analytics_clickhouse_connection_string bytea, encrypted_product_analytics_clickhouse_connection_string_iv bytea, search_max_shard_size_gb integer DEFAULT 50 NOT NULL, @@ -11732,9 +11726,8 @@ CREATE TABLE application_settings ( deactivation_email_additional_text text, jira_connect_public_key_storage_enabled boolean DEFAULT false NOT NULL, git_rate_limit_users_alertlist integer[] DEFAULT '{}'::integer[] NOT NULL, - security_policy_global_group_approvers_enabled boolean DEFAULT true NOT NULL, allow_deploy_tokens_and_keys_with_external_authn boolean DEFAULT false NOT NULL, - default_syntax_highlighting_theme integer DEFAULT 1 NOT NULL, + security_policy_global_group_approvers_enabled boolean DEFAULT true NOT NULL, CONSTRAINT app_settings_container_reg_cleanup_tags_max_list_size_positive CHECK ((container_registry_cleanup_tags_service_max_list_size >= 0)), CONSTRAINT app_settings_container_registry_pre_import_tags_rate_positive CHECK ((container_registry_pre_import_tags_rate >= (0)::numeric)), CONSTRAINT app_settings_dep_proxy_ttl_policies_worker_capacity_positive CHECK ((dependency_proxy_ttl_group_policy_worker_capacity >= 0)), @@ -18978,6 +18971,13 @@ CREATE SEQUENCE operations_user_lists_id_seq ALTER SEQUENCE operations_user_lists_id_seq OWNED BY operations_user_lists.id; +CREATE TABLE p_ci_runner_machine_builds ( + partition_id bigint NOT NULL, + build_id bigint NOT NULL, + runner_machine_id bigint NOT NULL +) +PARTITION BY LIST (partition_id); + CREATE TABLE packages_build_infos ( id bigint NOT NULL, package_id integer NOT NULL, diff --git a/doc/administration/sidekiq/extra_sidekiq_routing.md b/doc/administration/sidekiq/extra_sidekiq_routing.md deleted file mode 100644 index d1d65498fcc..00000000000 --- a/doc/administration/sidekiq/extra_sidekiq_routing.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -redirect_to: 'processing_specific_job_classes.md#routing-rules' -remove_date: '2023-02-01' ---- - -This document was moved to [another location](processing_specific_job_classes.md#routing-rules). - -<!-- This redirect file can be deleted after <2023-02-01>. --> -<!-- Redirects that point to other docs in the same project expire in three months. --> -<!-- Redirects that point to docs in a different project or site (link is not relative and starts with `https:`) expire in one year. --> -<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html --> diff --git a/doc/api/feature_flag_specs.md b/doc/api/feature_flag_specs.md deleted file mode 100644 index 960d00278d6..00000000000 --- a/doc/api/feature_flag_specs.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -stage: Release -group: Release -info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments -remove_date: '2023-02-14' -redirect_to: 'feature_flags.md' ---- - -# Feature Flag Specs API (removed) **(PREMIUM)** - -> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9566) in GitLab 12.5. - -This API was removed in [GitLab 14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/213369). -Use [the new API](feature_flags.md) instead. diff --git a/doc/development/directory_structure.md b/doc/development/directory_structure.md deleted file mode 100644 index 34ee86d9ee5..00000000000 --- a/doc/development/directory_structure.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -redirect_to: 'software_design.md' -remove_date: '2023-01-24' ---- - -This document was moved to [another location](software_design.md) - -<!-- This redirect file can be deleted after <2023-01-24>. --> -<!-- Redirects that point to other docs in the same project expire in three months. --> -<!-- Redirects that point to docs in a different project or site (link is not relative and starts with `https:`) expire in one year. --> -<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html --> diff --git a/doc/development/feature_development.md b/doc/development/feature_development.md index 141b24161b4..e24f105250f 100644 --- a/doc/development/feature_development.md +++ b/doc/development/feature_development.md @@ -127,7 +127,6 @@ See [database guidelines](database/index.md). - [Security Scanners](integrations/secure.md) - [Secure Partner Integration](integrations/secure_partner_integration.md) - [How to run Jenkins in development environment](integrations/jenkins.md) -- [How to run local CodeSandbox integration for Web IDE Live Preview](integrations/codesandbox.md) The following integration guides are internal. Some integrations require access to administrative accounts of third-party services and are available only for GitLab team members to contribute to: diff --git a/doc/development/integrations/codesandbox.md b/doc/development/integrations/codesandbox.md deleted file mode 100644 index 0254f0fc995..00000000000 --- a/doc/development/integrations/codesandbox.md +++ /dev/null @@ -1,156 +0,0 @@ ---- -stage: none -group: Development -info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments -remove_date: '2023-02-01' -redirect_to: 'index.md' ---- - -# Set up local CodeSandbox development environment (removed) - -WARNING: -This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108627) in GitLab 15.8 -and is planned for removal in 15.9. This change is a breaking change. - -This guide walks through setting up a local [CodeSandbox repository](https://github.com/codesandbox/codesandbox-client) and integrating it with a local GitLab instance. CodeSandbox -is used to power the Web IDE [Live Preview feature](../../user/project/web_ide/index.md#live-preview-removed). Having a local CodeSandbox setup is useful for debugging upstream issues or -creating upstream contributions like [this one](https://github.com/codesandbox/codesandbox-client/pull/5137). - -## Initial setup - -Before using CodeSandbox with your local GitLab instance, you must: - -1. Enable HTTPS on your GDK. CodeSandbox uses Service Workers that require `https`. - Follow the GDK [NGINX configuration instructions](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/doc/howto/nginx.md) to enable HTTPS for GDK. -1. Clone the [`codesandbox-client` project](https://github.com/codesandbox/codesandbox-client) - locally. If you plan on contributing upstream, you might want to fork and clone first. -1. Optional. Use correct `python` and `nodejs` versions. Otherwise, `yarn` may fail to - install or build some packages. If you're using `asdf` you can run the following commands: - - ```shell - asdf local nodejs 10.14.2 - asdf local python 2.7.18 - ``` - -1. Run the following commands in the `codesandbox-client` project checkout: - - ```shell - # This might be necessary for the `prepublishOnly` job that is run later - yarn global add lerna - - # Install packages - yarn - ``` - - You can run `yarn build:clean` to clean up the build assets. - -## Use local GitLab instance with local CodeSandbox - -GitLab integrates with two parts of CodeSandbox: - -- An npm package called `smooshpack` (called `sandpack` in the `codesandbox-client` project). - This exposes an entrypoint for us to kick off CodeSandbox's bundler. -- A server that houses CodeSandbox assets for bundling and previewing. This is hosted - on a separate server for security. - -Each time you want to run GitLab and CodeSandbox together, you need to perform the -steps in the following sections. - -### Use local `smooshpack` for GitLab - -GitLab usually satisfies its `smooshpack` dependency with a remote module, but we want -to use a locally-built module. To build and use a local `smooshpack` module: - -1. In the `codesandbox-client` project directory, run: - - ```shell - cd standalone-packages/sandpack - yarn link - - # (Optional) you might want to start a development build - yarn run start - ``` - - Now, in the GitLab project, you can run `yarn link "smooshpack"`. `yarn` looks - for `smooshpack` **on disk** as opposed to the one hosted remotely. - -1. In the `gitlab` project directory, run: - - ```shell - # Remove and reinstall node_modules just to be safe - rm -rf node_modules - yarn install - - # Use the "smooshpack" package on disk - yarn link "smooshpack" - ``` - -### Fix possible GDK webpack problem - -`webpack` in GDK can fail to find packages inside a linked package. This step can help -you avoid `webpack` breaking with messages saying that it can't resolve packages from -`smooshpack/dist/sandpack.es5.js`. - -In the `codesandbox-client` project directory, run: - -```shell -cd standalone-packages - -mkdir node_modules -ln -s $PATH_TO_LOCAL_GITLAB/node_modules/core-js ./node_modules/core-js -``` - -### Start building CodeSandbox app assets - -In the `codesandbox-client` project directory: - -```shell -cd packages/app - -yarn start:sandpack-sandbox -``` - -### Create HTTPS proxy for CodeSandbox `sandpack` assets - -Because we need `https`, we need to create a proxy to the webpack server. We can use -[`http-server`](https://www.npmjs.com/package/http-server), which can do this proxying -out of the box: - -```shell -npx http-server --proxy http://localhost:3000 -S -C $PATH_TO_CERT_PEM -K $PATH_TO_KEY_PEM -p 8044 -d false -``` - -### Update `bundler_url` setting in GitLab (removed) - -WARNING: -This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108627) in GitLab 15.8 -and is planned for removal in 15.9. This change is a breaking change. - -We need to update our `application_setting_implementation.rb` to point to the server that hosts the -CodeSandbox `sandpack` assets. For instance, if these assets are hosted by a server at `https://sandpack.local:8044`: - -```patch -diff --git a/app/models/application_setting_implementation.rb b/app/models/application_setting_implementation.rb -index 6eed627b502..1824669e881 100644 ---- a/app/models/application_setting_implementation.rb -+++ b/app/models/application_setting_implementation.rb -@@ -391,7 +391,7 @@ def static_objects_external_storage_enabled? - # This will eventually be configurable - # https://gitlab.com/gitlab-org/gitlab/-/issues/208161 - def web_ide_clientside_preview_bundler_url -- 'https://sandbox-prod.gitlab-static.net' -+ 'https://sandpack.local:8044' - end - - private - -``` - -NOTE: -You can apply this patch by copying it to your clipboard and running `pbpaste | git apply`. - -You may want to restart the GitLab Rails server after making this change: - -```shell -gdk restart rails-web -``` diff --git a/doc/operations/feature_flags.md b/doc/operations/feature_flags.md index 4da7a57d327..797e5df6a8c 100644 --- a/doc/operations/feature_flags.md +++ b/doc/operations/feature_flags.md @@ -295,7 +295,6 @@ Unleash currently [offers many SDKs for various languages and frameworks](https: For API content, see: - [Feature flags API](../api/feature_flags.md) -- [Feature flag specs API](../api/feature_flag_specs.md) (Deprecated and [scheduled for removal](https://gitlab.com/gitlab-org/gitlab/-/issues/213369) in GitLab 14.0.) - [Feature flag user lists API](../api/feature_flag_user_lists.md) ### Golang application example diff --git a/doc/topics/git/index.md b/doc/topics/git/index.md index b47a34fa7b2..328ea7f8a1c 100644 --- a/doc/topics/git/index.md +++ b/doc/topics/git/index.md @@ -65,7 +65,6 @@ You can do many Git tasks from the command line: - [Git add](git_add.md). - [Git log](git_log.md). - [Git stash](stash.md). -- [Merge conflicts](merge_conflicts.md). - [Rollback commits](rollback_commits.md). - [Subtree](subtree.md). - [Unstage](unstage.md). diff --git a/doc/topics/git/merge_conflicts.md b/doc/topics/git/merge_conflicts.md deleted file mode 100644 index ea37afe1b31..00000000000 --- a/doc/topics/git/merge_conflicts.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -redirect_to: '../../user/project/merge_requests/conflicts.md#resolve-conflicts-from-the-command-line' -remove_date: '2023-02-01' ---- - -This document was moved to [another location](../../user/project/merge_requests/conflicts.md#resolve-conflicts-from-the-command-line). - -<!-- This redirect file can be deleted after <2023-02-01>. --> -<!-- Redirects that point to other docs in the same project expire in three months. --> -<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. --> -<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html --> diff --git a/doc/update/index.md b/doc/update/index.md index 77c19097aed..18f409dc922 100644 --- a/doc/update/index.md +++ b/doc/update/index.md @@ -620,7 +620,9 @@ and [Helm Chart deployments](https://docs.gitlab.com/charts/). They come with ap ### 15.5.3 -- GitLab 15.4.0 introduced a default [Sidekiq routing rule](../administration/sidekiq/extra_sidekiq_routing.md) that routes all jobs to the `default` queue. For instances using [queue selectors](../administration/sidekiq/processing_specific_job_classes.md#queue-selectors), this will cause [performance problems](https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1991) as some Sidekiq processes will be idle. +- GitLab 15.4.0 introduced a default [Sidekiq routing rule](../administration/sidekiq/processing_specific_job_classes.md#routing-rules) that routes all jobs + to the `default` queue. For instances using [queue selectors](../administration/sidekiq/processing_specific_job_classes.md#queue-selectors), this causes + [performance problems](https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1991) as some Sidekiq processes are idle. - The default routing rule has been reverted in 15.5.4, so upgrading to that version or later will return to the previous behavior. - If a GitLab instance now listens only to the `default` queue (which is not currently recommended), it will be required to add this routing rule back in `/etc/gitlab/gitlab.rb`: @@ -632,7 +634,7 @@ and [Helm Chart deployments](https://docs.gitlab.com/charts/). They come with ap ### 15.5.2 -- GitLab 15.4.0 introduced a default [Sidekiq routing rule](../administration/sidekiq/extra_sidekiq_routing.md) that routes all jobs to the `default` queue. For instances using [queue selectors](../administration/sidekiq/processing_specific_job_classes.md#queue-selectors), this will cause [performance problems](https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1991) as some Sidekiq processes will be idle. +- GitLab 15.4.0 introduced a default Sidekiq routing rule that routes all jobs to the `default` queue. For instances using [queue selectors](../administration/sidekiq/processing_specific_job_classes.md#queue-selectors), this will cause [performance problems](https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1991) as some Sidekiq processes will be idle. - The default routing rule has been reverted in 15.5.4, so upgrading to that version or later will return to the previous behavior. - If a GitLab instance now listens only to the `default` queue (which is not currently recommended), it will be required to add this routing rule back in `/etc/gitlab/gitlab.rb`: @@ -644,7 +646,7 @@ and [Helm Chart deployments](https://docs.gitlab.com/charts/). They come with ap ### 15.5.1 -- GitLab 15.4.0 introduced a default [Sidekiq routing rule](../administration/sidekiq/extra_sidekiq_routing.md) that routes all jobs to the `default` queue. For instances using [queue selectors](../administration/sidekiq/processing_specific_job_classes.md#queue-selectors), this will cause [performance problems](https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1991) as some Sidekiq processes will be idle. +- GitLab 15.4.0 introduced a default Sidekiq routing rule that routes all jobs to the `default` queue. For instances using [queue selectors](../administration/sidekiq/processing_specific_job_classes.md#queue-selectors), this will cause [performance problems](https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1991) as some Sidekiq processes will be idle. - The default routing rule has been reverted in 15.5.4, so upgrading to that version or later will return to the previous behavior. - If a GitLab instance now listens only to the `default` queue (which is not currently recommended), it will be required to add this routing rule back in `/etc/gitlab/gitlab.rb`: @@ -656,7 +658,7 @@ and [Helm Chart deployments](https://docs.gitlab.com/charts/). They come with ap ### 15.5.0 -- GitLab 15.4.0 introduced a default [Sidekiq routing rule](../administration/sidekiq/extra_sidekiq_routing.md) that routes all jobs to the `default` queue. For instances using [queue selectors](../administration/sidekiq/processing_specific_job_classes.md#queue-selectors), this will cause [performance problems](https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1991) as some Sidekiq processes will be idle. +- GitLab 15.4.0 introduced a default Sidekiq routing rule that routes all jobs to the `default` queue. For instances using [queue selectors](../administration/sidekiq/processing_specific_job_classes.md#queue-selectors), this will cause [performance problems](https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1991) as some Sidekiq processes will be idle. - The default routing rule has been reverted in 15.5.4, so upgrading to that version or later will return to the previous behavior. - If a GitLab instance now listens only to the `default` queue (which is not currently recommended), it will be required to add this routing rule back in `/etc/gitlab/gitlab.rb`: @@ -707,7 +709,7 @@ and [Helm Chart deployments](https://docs.gitlab.com/charts/). They come with ap - GitLab 15.4.0 includes a [batched background migration](background_migrations.md#batched-background-migrations) to [remove incorrect values from `expire_at` in `ci_job_artifacts` table](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89318). This migration might take hours or days to complete on larger GitLab instances. - By default, Gitaly and Praefect nodes use the time server at `pool.ntp.org`. If your instance can not connect to `pool.ntp.org`, [configure the `NTP_HOST` variable](../administration/gitaly/praefect.md#customize-time-server-setting). -- GitLab 15.4.0 introduced a default [Sidekiq routing rule](../administration/sidekiq/extra_sidekiq_routing.md) that routes all jobs to the `default` queue. For instances using [queue selectors](../administration/sidekiq/processing_specific_job_classes.md#queue-selectors), this will cause [performance problems](https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1991) as some Sidekiq processes will be idle. +- GitLab 15.4.0 introduced a default Sidekiq routing rule that routes all jobs to the `default` queue. For instances using [queue selectors](../administration/sidekiq/processing_specific_job_classes.md#queue-selectors), this will cause [performance problems](https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1991) as some Sidekiq processes will be idle. - The default routing rule has been reverted in 15.4.5, so upgrading to that version or later will return to the previous behavior. - If a GitLab instance now listens only to the `default` queue (which is not currently recommended), it will be required to add this routing rule back in `/etc/gitlab/gitlab.rb`: diff --git a/doc/user/markdown.md b/doc/user/markdown.md index eaceeccc148..0b358db97eb 100644 --- a/doc/user/markdown.md +++ b/doc/user/markdown.md @@ -605,6 +605,19 @@ at the end of the reference. For example, a reference like `#123+` is rendered a URL references like `https://gitlab.com/gitlab-org/gitlab/-/issues/1234+` are also expanded. +### Show the issue or merge request summary in the reference + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/386937) in GitLab 15.10. + +To include an extended summary in the rendered link of an issue or merge request, add a `+s` +at the end of the reference. Summary includes information about **assignees**, **milestone** +and **health status** of referenced item. + +For example, a reference like `#123+s` is rendered as +`The issue title (#123) • First Assignee, Second Assignee+ • v15.10 • Needs attention`. + +URL references like `https://gitlab.com/gitlab-org/gitlab/-/issues/1234+s` are also expanded. + ### Embedding metrics in GitLab Flavored Markdown Metric charts can be embedded in GitLab Flavored Markdown. Read diff --git a/doc/user/search/global_search/advanced_search_syntax.md b/doc/user/search/global_search/advanced_search_syntax.md deleted file mode 100644 index c34c5c0c8fc..00000000000 --- a/doc/user/search/global_search/advanced_search_syntax.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -redirect_to: '../advanced_search.md' -remove_date: '2023-02-02' ---- - -This document was moved to [another location](../advanced_search.md). - -<!-- This redirect file can be deleted after <2023-02-02>. --> -<!-- Redirects that point to other docs in the same project expire in three months. --> -<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. --> -<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html --> diff --git a/lib/banzai/filter/issuable_reference_expansion_filter.rb b/lib/banzai/filter/issuable_reference_expansion_filter.rb index 6822e36c9be..8fe1c90b314 100644 --- a/lib/banzai/filter/issuable_reference_expansion_filter.rb +++ b/lib/banzai/filter/issuable_reference_expansion_filter.rb @@ -10,13 +10,17 @@ module Banzai class IssuableReferenceExpansionFilter < HTML::Pipeline::Filter include Gitlab::Utils::StrongMemoize + NUMBER_OF_SUMMARY_ASSIGNEES = 2 VISIBLE_STATES = %w(closed merged).freeze + EXTENDED_FORMAT_XPATH = Gitlab::Utils::Nokogiri.css_to_xpath('a[data-reference-format="+s"]') def call return doc unless context[:issuable_reference_expansion_enabled] - context = RenderContext.new(project, current_user) - extractor = Banzai::IssuableExtractor.new(context) + options = { extended_preload: doc.xpath(EXTENDED_FORMAT_XPATH).present? } + extractor_context = RenderContext.new(project, current_user, options: options) + + extractor = Banzai::IssuableExtractor.new(extractor_context) issuables = extractor.extract([doc]) issuables.each do |node, issuable| @@ -26,6 +30,9 @@ module Banzai case node.attr('data-reference-format') when '+' expand_reference_with_title_and_state(node, issuable) + when '+s' + expand_reference_with_title_and_state(node, issuable) + expand_reference_with_summary(node, issuable) else expand_reference_with_state(node, issuable) end @@ -43,11 +50,41 @@ module Banzai node.content += ')' end + # rubocop:disable Style/AsciiComments + # Example: Issue Title (#123 - closed) assignee name 1, assignee name 2+ • v15.9 • On track + def expand_reference_with_summary(node, issuable) + summary = [] + + summary << assignees_text(issuable) if issuable.supports_assignee? + summary << milestone_text(issuable.milestone) if issuable.supports_milestone? + summary << health_status_text(issuable.health_status) if issuable.supports_health_status? + + node.content = [node.content, *summary].compact_blank.join(' • ') + end + # rubocop:enable Style/AsciiComments + # Example: #123 (closed) def expand_reference_with_state(node, issuable) node.content += " (#{issuable_state_text(issuable)})" end + def assignees_text(issuable) + assignee_names = issuable.assignees.first(NUMBER_OF_SUMMARY_ASSIGNEES + 1).map(&:sanitize_name) + + return _('Unassigned') if assignee_names.empty? + + "#{assignee_names.first(NUMBER_OF_SUMMARY_ASSIGNEES).to_sentence(two_words_connector: ', ')}" \ + "#{assignee_names.size > NUMBER_OF_SUMMARY_ASSIGNEES ? '+' : ''}" + end + + def milestone_text(milestone) + milestone&.title + end + + def health_status_text(health_status) + health_status&.humanize + end + def issuable_state_text(issuable) moved_issue?(issuable) ? s_("IssuableStatus|moved") : issuable.state end diff --git a/lib/banzai/filter/reference_redactor_filter.rb b/lib/banzai/filter/reference_redactor_filter.rb index 485d3fd5fc7..9fae46a24a9 100644 --- a/lib/banzai/filter/reference_redactor_filter.rb +++ b/lib/banzai/filter/reference_redactor_filter.rb @@ -10,9 +10,9 @@ module Banzai class ReferenceRedactorFilter < HTML::Pipeline::Filter def call unless context[:skip_redaction] - context = RenderContext.new(project, current_user) + redactor_context = RenderContext.new(project, current_user) - ReferenceRedactor.new(context).redact([doc]) + ReferenceRedactor.new(redactor_context).redact([doc]) end doc diff --git a/lib/banzai/reference_parser/issue_parser.rb b/lib/banzai/reference_parser/issue_parser.rb index 6b1491cc56b..ecf77191c13 100644 --- a/lib/banzai/reference_parser/issue_parser.rb +++ b/lib/banzai/reference_parser/issue_parser.rb @@ -57,18 +57,21 @@ module Banzai end def records_for_nodes(nodes) + node_includes = [ + :author, + :assignees, + { + # These associations are primarily used for checking permissions. + # Eager loading these ensures we don't end up running dozens of + # queries in this process. + project: [:namespace, :project_feature, :route] + } + ] + node_includes << :milestone if context.options[:extended_preload] + @issues_for_nodes ||= grouped_objects_for_nodes( nodes, - Issue.all.includes( - :author, - :assignees, - { - # These associations are primarily used for checking permissions. - # Eager loading these ensures we don't end up running dozens of - # queries in this process. - project: [:namespace, :project_feature, :route] - } - ), + Issue.all.includes(node_includes), self.class.data_attribute ) end diff --git a/lib/banzai/reference_parser/merge_request_parser.rb b/lib/banzai/reference_parser/merge_request_parser.rb index 3e28f06b783..2bd06e79e96 100644 --- a/lib/banzai/reference_parser/merge_request_parser.rb +++ b/lib/banzai/reference_parser/merge_request_parser.rb @@ -19,17 +19,21 @@ module Banzai end def records_for_nodes(nodes) + node_includes = [ + :author, + :assignees, + { + # These associations are primarily used for checking permissions. + # Eager loading these ensures we don't end up running dozens of + # queries in this process. + target_project: [{ namespace: :route }, :project_feature, :route] + } + ] + node_includes << :milestone if context.options[:extended_preload] + @merge_requests_for_nodes ||= grouped_objects_for_nodes( nodes, - MergeRequest.includes( - :author, - :assignees, - { - # These associations are primarily used for checking permissions. - # Eager loading these ensures we don't end up running dozens of - # queries in this process. - target_project: [{ namespace: :route }, :project_feature, :route] - }), + MergeRequest.includes(node_includes), self.class.data_attribute ) end diff --git a/lib/banzai/render_context.rb b/lib/banzai/render_context.rb index e30fc9f469b..a69732a26e2 100644 --- a/lib/banzai/render_context.rb +++ b/lib/banzai/render_context.rb @@ -4,13 +4,14 @@ module Banzai # Object storing the current user, project, and other details used when # parsing Markdown references. class RenderContext - attr_reader :current_user + attr_reader :current_user, :options # default_project - The default project to use for all documents, if any. # current_user - The user viewing the document, if any. - def initialize(default_project = nil, current_user = nil) + def initialize(default_project = nil, current_user = nil, options: {}) @current_user = current_user @projects = Hash.new(default_project) + @options = options end # Associates an HTML document with a Project. diff --git a/lib/gitlab/github_import/parallel_scheduling.rb b/lib/gitlab/github_import/parallel_scheduling.rb index 4b54a77983d..f8d8e4c1e8d 100644 --- a/lib/gitlab/github_import/parallel_scheduling.rb +++ b/lib/gitlab/github_import/parallel_scheduling.rb @@ -85,14 +85,10 @@ module Gitlab def parallel_import raise 'Batch settings must be defined for parallel import' if parallel_import_batch.blank? - if Feature.enabled?(:improved_spread_parallel_import) - improved_spread_parallel_import - else - spread_parallel_import - end + spread_parallel_import end - def improved_spread_parallel_import + def spread_parallel_import enqueued_job_counter = 0 each_object_to_import do |object| @@ -108,33 +104,6 @@ module Gitlab job_waiter end - def spread_parallel_import - waiter = JobWaiter.new - - import_arguments = [] - - each_object_to_import do |object| - repr = object_representation(object) - - import_arguments << [project.id, repr.to_hash, waiter.key] - - waiter.jobs_remaining += 1 - end - - # rubocop:disable Scalability/BulkPerformWithContext - Gitlab::ApplicationContext.with_context(project: project) do - sidekiq_worker_class.bulk_perform_in( - 1.second, - import_arguments, - batch_size: parallel_import_batch[:size], - batch_delay: parallel_import_batch[:delay] - ) - end - # rubocop:enable Scalability/BulkPerformWithContext - - waiter - end - # The method that will be called for traversing through all the objects to # import, yielding them to the supplied block. def each_object_to_import diff --git a/lib/gitlab/regex.rb b/lib/gitlab/regex.rb index e76056709e9..4d15ac99277 100644 --- a/lib/gitlab/regex.rb +++ b/lib/gitlab/regex.rb @@ -548,11 +548,11 @@ module Gitlab end def issue - @issue ||= /(?<issue>\d+)(?<format>\+)?(?=\W|\z)/ + @issue ||= /(?<issue>\d+)(?<format>\+s{,1})?(?=\W|\z)/ end def merge_request - @merge_request ||= /(?<merge_request>\d+)(?<format>\+)?/ + @merge_request ||= /(?<merge_request>\d+)(?<format>\+s{,1})?/ end def base64_regex diff --git a/spec/frontend/issues/show/components/incidents/incident_tabs_spec.js b/spec/frontend/issues/show/components/incidents/incident_tabs_spec.js index 33a3a6eddfc..380b4b92f2e 100644 --- a/spec/frontend/issues/show/components/incidents/incident_tabs_spec.js +++ b/spec/frontend/issues/show/components/incidents/incident_tabs_spec.js @@ -33,7 +33,13 @@ const defaultMocks = { describe('Incident Tabs component', () => { let wrapper; - const mountComponent = ({ data = {}, options = {}, mount = shallowMountExtended } = {}) => { + const mountComponent = ({ + data = {}, + options = {}, + mount = shallowMountExtended, + hasLinkedAlerts = false, + mocks = {}, + } = {}) => { wrapper = mount( IncidentTabs, merge( @@ -54,11 +60,12 @@ describe('Incident Tabs component', () => { slaFeatureAvailable: true, canUpdate: true, canUpdateTimelineEvent: true, + hasLinkedAlerts, }, data() { return { alert: mockAlert, ...data }; }, - mocks: defaultMocks, + mocks: { ...defaultMocks, ...mocks }, }, options, ), @@ -102,11 +109,13 @@ describe('Incident Tabs component', () => { }); it('renders the alert details tab', () => { + mountComponent({ hasLinkedAlerts: true }); expect(findAlertDetailsTab().exists()).toBe(true); expect(findAlertDetailsTab().attributes('title')).toBe('Alert details'); }); it('renders the alert details table with the correct props', () => { + mountComponent({ hasLinkedAlerts: true }); const alert = { iid: mockAlert.iid }; expect(findAlertDetailsComponent().props('alert')).toMatchObject(alert); diff --git a/spec/lib/banzai/filter/issuable_reference_expansion_filter_spec.rb b/spec/lib/banzai/filter/issuable_reference_expansion_filter_spec.rb index 1fdb29b688e..cc3918b9678 100644 --- a/spec/lib/banzai/filter/issuable_reference_expansion_filter_spec.rb +++ b/spec/lib/banzai/filter/issuable_reference_expansion_filter_spec.rb @@ -162,6 +162,54 @@ RSpec.describe Banzai::Filter::IssuableReferenceExpansionFilter, feature_categor expect(doc.css('a').last.text).to eq("#{issue.title} (#{issue.to_reference} - closed)") end + + it 'shows title for references with +s' do + issue = create_issue(:opened, title: 'Some issue') + link = create_link(issue.to_reference, issue: issue.id, reference_type: 'issue', reference_format: '+s') + doc = filter(link, context) + + expect(doc.css('a').last.text).to eq("#{issue.title} (#{issue.to_reference}) • Unassigned") + end + + context 'when extended summary props are present' do + let_it_be(:milestone) { create(:milestone, project: project) } + let_it_be(:assignees) { create_list(:user, 3) } + let_it_be(:issue) { create_issue(:opened, title: 'Some issue', milestone: milestone, assignees: assignees) } + let_it_be(:link) do + create_link(issue.to_reference, issue: issue.id, reference_type: 'issue', reference_format: '+s') + end + + it 'shows extended summary for references with +s' do + doc = filter(link, context) + + expect(doc.css('a').last.text).to eq( + "#{issue.title} (#{issue.to_reference}) • #{assignees[0].name}, #{assignees[1].name}+ • #{milestone.title}" + ) + end + + describe 'checking N+1' do + let_it_be(:milestone2) { create(:milestone, project: project) } + let_it_be(:assignees2) { create_list(:user, 3) } + + it 'does not have N+1 for extended summary', :use_sql_query_cache do + issue2 = create_issue(:opened, title: 'Another issue', milestone: milestone2, assignees: assignees2) + link2 = create_link(issue2.to_reference, issue: issue2.id, reference_type: 'issue', reference_format: '+s') + + # warm up + filter(link, context) + + control_count = ActiveRecord::QueryRecorder.new(skip_cached: false) do + filter(link, context) + end.count + + expect(control_count).to eq 9 + + expect do + filter("#{link} #{link2}", context) + end.not_to exceed_all_query_limit(control_count) + end + end + end end context 'for merge request references' do @@ -235,5 +283,80 @@ RSpec.describe Banzai::Filter::IssuableReferenceExpansionFilter, feature_categor expect(doc.css('a').last.text).to eq("#{merge_request.title} (#{merge_request.to_reference})") end + + it 'shows title for references with +s' do + merge_request = create_merge_request(:opened, title: 'Some merge request') + + link = create_link( + merge_request.to_reference, + merge_request: merge_request.id, + reference_type: 'merge_request', + reference_format: '+s' + ) + + doc = filter(link, context) + + expect(doc.css('a').last.text).to eq("#{merge_request.title} (#{merge_request.to_reference}) • Unassigned") + end + + context 'when extended summary props are present' do + let_it_be(:milestone) { create(:milestone, project: project) } + let_it_be(:assignees) { create_list(:user, 2) } + let_it_be(:merge_request) do + create_merge_request(:opened, title: 'Some merge request', milestone: milestone, assignees: assignees) + end + + let_it_be(:link) do + create_link( + merge_request.to_reference, + merge_request: merge_request.id, + reference_type: 'merge_request', + reference_format: '+s' + ) + end + + it 'shows extended summary for references with +s' do + doc = filter(link, context) + + expect(doc.css('a').last.text).to eq( + "#{merge_request.title} (#{merge_request.to_reference}) • #{assignees[0].name}, #{assignees[1].name} • " \ + "#{milestone.title}" + ) + end + + describe 'checking N+1' do + let_it_be(:milestone2) { create(:milestone, project: project) } + let_it_be(:assignees2) { create_list(:user, 3) } + + it 'does not have N+1 for extended summary', :use_sql_query_cache do + merge_request2 = create_merge_request( + :closed, + title: 'Some merge request', + milestone: milestone2, + assignees: assignees2 + ) + + link2 = create_link( + merge_request2.to_reference, + merge_request: merge_request2.id, + reference_type: 'merge_request', + reference_format: '+s' + ) + + # warm up + filter(link, context) + + control_count = ActiveRecord::QueryRecorder.new(skip_cached: false) do + filter(link, context) + end.count + + expect(control_count).to eq 10 + + expect do + filter("#{link} #{link2}", context) + end.not_to exceed_all_query_limit(control_count) + end + end + end end end diff --git a/spec/lib/banzai/filter/references/issue_reference_filter_spec.rb b/spec/lib/banzai/filter/references/issue_reference_filter_spec.rb index d8a97c6c3dc..aadd726ac40 100644 --- a/spec/lib/banzai/filter/references/issue_reference_filter_spec.rb +++ b/spec/lib/banzai/filter/references/issue_reference_filter_spec.rb @@ -150,6 +150,15 @@ RSpec.describe Banzai::Filter::References::IssueReferenceFilter, feature_categor expect(link.attr('href')).to eq(issue_url) end + it 'includes a data-reference-format attribute for extended summary URL references' do + doc = reference_filter("Issue #{issue_url}+s") + link = doc.css('a').first + + expect(link).to have_attribute('data-reference-format') + expect(link.attr('data-reference-format')).to eq('+s') + expect(link.attr('href')).to eq(issue_url) + end + it 'supports an :only_path context' do doc = reference_filter("Issue #{written_reference}", only_path: true) link = doc.css('a').first.attr('href') diff --git a/spec/lib/banzai/filter/references/merge_request_reference_filter_spec.rb b/spec/lib/banzai/filter/references/merge_request_reference_filter_spec.rb index 9853d6f4093..156455221cf 100644 --- a/spec/lib/banzai/filter/references/merge_request_reference_filter_spec.rb +++ b/spec/lib/banzai/filter/references/merge_request_reference_filter_spec.rb @@ -128,6 +128,15 @@ RSpec.describe Banzai::Filter::References::MergeRequestReferenceFilter, feature_ expect(link.attr('href')).to eq(merge_request_url) end + it 'includes a data-reference-format attribute for extended summary URL references' do + doc = reference_filter("Merge #{merge_request_url}+s") + link = doc.css('a').first + + expect(link).to have_attribute('data-reference-format') + expect(link.attr('data-reference-format')).to eq('+s') + expect(link.attr('href')).to eq(merge_request_url) + end + it 'supports an :only_path context' do doc = reference_filter("Merge #{reference}", only_path: true) link = doc.css('a').first.attr('href') diff --git a/spec/lib/gitlab/github_import/parallel_scheduling_spec.rb b/spec/lib/gitlab/github_import/parallel_scheduling_spec.rb index c351ead91eb..9de39a3ff7e 100644 --- a/spec/lib/gitlab/github_import/parallel_scheduling_spec.rb +++ b/spec/lib/gitlab/github_import/parallel_scheduling_spec.rb @@ -289,77 +289,52 @@ RSpec.describe Gitlab::GithubImport::ParallelScheduling, feature_category: :impo .and_return({ title: 'One' }, { title: 'Two' }, { title: 'Three' }) end - context 'with multiple objects' do - before do - stub_feature_flags(improved_spread_parallel_import: false) - - expect(importer).to receive(:each_object_to_import).and_yield(object).and_yield(object).and_yield(object) - end - - it 'imports data in parallel batches with delays' do - expect(worker_class).to receive(:bulk_perform_in) - .with(1.second, [ - [project.id, { title: 'One' }, an_instance_of(String)], - [project.id, { title: 'Two' }, an_instance_of(String)], - [project.id, { title: 'Three' }, an_instance_of(String)] - ], batch_size: batch_size, batch_delay: batch_delay) - - importer.parallel_import - end + it 'imports data in parallel with delays respecting parallel_import_batch definition and return job waiter' do + allow(::Gitlab::JobWaiter).to receive(:generate_key).and_return('waiter-key') + allow(importer).to receive(:parallel_import_batch).and_return({ size: 2, delay: 1.minute }) + + expect(importer).to receive(:each_object_to_import) + .and_yield(object).and_yield(object).and_yield(object) + expect(worker_class).to receive(:perform_in) + .with(1.second, project.id, { title: 'One' }, 'waiter-key').ordered + expect(worker_class).to receive(:perform_in) + .with(1.second, project.id, { title: 'Two' }, 'waiter-key').ordered + expect(worker_class).to receive(:perform_in) + .with(1.minute + 1.second, project.id, { title: 'Three' }, 'waiter-key').ordered + + job_waiter = importer.parallel_import + + expect(job_waiter.key).to eq('waiter-key') + expect(job_waiter.jobs_remaining).to eq(3) end - context 'when the feature flag `improved_spread_parallel_import` is enabled' do + context 'when job restarts due to API rate limit or Sidekiq interruption' do before do - stub_feature_flags(improved_spread_parallel_import: true) + cache_key = format(described_class::JOB_WAITER_CACHE_KEY, + project: project.id, collection: importer.collection_method) + Gitlab::Cache::Import::Caching.write(cache_key, 'waiter-key') + + cache_key = format(described_class::JOB_WAITER_REMAINING_CACHE_KEY, + project: project.id, collection: importer.collection_method) + Gitlab::Cache::Import::Caching.write(cache_key, 3) end - it 'imports data in parallel with delays respecting parallel_import_batch definition and return job waiter' do - allow(::Gitlab::JobWaiter).to receive(:generate_key).and_return('waiter-key') - allow(importer).to receive(:parallel_import_batch).and_return({ size: 2, delay: 1.minute }) + it "restores job waiter's key and jobs_remaining" do + allow(importer).to receive(:parallel_import_batch).and_return({ size: 1, delay: 1.minute }) + + expect(importer).to receive(:each_object_to_import).and_yield(object).and_yield(object).and_yield(object) - expect(importer).to receive(:each_object_to_import) - .and_yield(object).and_yield(object).and_yield(object) expect(worker_class).to receive(:perform_in) .with(1.second, project.id, { title: 'One' }, 'waiter-key').ordered expect(worker_class).to receive(:perform_in) - .with(1.second, project.id, { title: 'Two' }, 'waiter-key').ordered + .with(1.minute + 1.second, project.id, { title: 'Two' }, 'waiter-key').ordered expect(worker_class).to receive(:perform_in) - .with(1.minute + 1.second, project.id, { title: 'Three' }, 'waiter-key').ordered + .with(2.minutes + 1.second, project.id, { title: 'Three' }, 'waiter-key').ordered job_waiter = importer.parallel_import expect(job_waiter.key).to eq('waiter-key') - expect(job_waiter.jobs_remaining).to eq(3) - end - - context 'when job restarts due to API rate limit or Sidekiq interruption' do - before do - cache_key = format(described_class::JOB_WAITER_CACHE_KEY, - project: project.id, collection: importer.collection_method) - Gitlab::Cache::Import::Caching.write(cache_key, 'waiter-key') - - cache_key = format(described_class::JOB_WAITER_REMAINING_CACHE_KEY, - project: project.id, collection: importer.collection_method) - Gitlab::Cache::Import::Caching.write(cache_key, 3) - end - - it "restores job waiter's key and jobs_remaining" do - allow(importer).to receive(:parallel_import_batch).and_return({ size: 1, delay: 1.minute }) - - expect(importer).to receive(:each_object_to_import).and_yield(object).and_yield(object).and_yield(object) - - expect(worker_class).to receive(:perform_in) - .with(1.second, project.id, { title: 'One' }, 'waiter-key').ordered - expect(worker_class).to receive(:perform_in) - .with(1.minute + 1.second, project.id, { title: 'Two' }, 'waiter-key').ordered - expect(worker_class).to receive(:perform_in) - .with(2.minutes + 1.second, project.id, { title: 'Three' }, 'waiter-key').ordered - - job_waiter = importer.parallel_import - - expect(job_waiter.key).to eq('waiter-key') - expect(job_waiter.jobs_remaining).to eq(6) - end + expect(job_waiter.jobs_remaining).to eq(6) end end end diff --git a/workhorse/go.mod b/workhorse/go.mod index e3402ce5ab0..87e8a844d5c 100644 --- a/workhorse/go.mod +++ b/workhorse/go.mod @@ -7,7 +7,7 @@ require ( github.com/BurntSushi/toml v1.2.1 github.com/FZambia/sentinel v1.1.1 github.com/alecthomas/chroma/v2 v2.5.0 - github.com/aws/aws-sdk-go v1.44.200 + github.com/aws/aws-sdk-go v1.44.201 github.com/disintegration/imaging v1.6.2 github.com/getsentry/raven-go v0.2.0 github.com/golang-jwt/jwt/v4 v4.5.0 diff --git a/workhorse/go.sum b/workhorse/go.sum index 50dfb0e000c..e68da6ed585 100644 --- a/workhorse/go.sum +++ b/workhorse/go.sum @@ -544,8 +544,8 @@ github.com/aws/aws-sdk-go v1.43.11/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4 github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.128/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.151/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go v1.44.200 h1:JcFf/BnOaMWe9ObjaklgbbF0bGXI4XbYJwYn2eFNVyQ= -github.com/aws/aws-sdk-go v1.44.200/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.201 h1:gKtyFyiVGh/uTW7sCQaoyU6XCUsnI8+WWKmbEaABCfw= +github.com/aws/aws-sdk-go v1.44.201/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.17.1 h1:02c72fDJr87N8RAC2s3Qu0YuvMRZKNZJ9F+lAehCazk= github.com/aws/aws-sdk-go-v2 v1.17.1/go.mod h1:JLnGeGONAyi2lWXI1p0PCIOIy333JMVK1U7Hf0aRFLw= |