diff options
20 files changed, 227 insertions, 172 deletions
diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index d486b12ca7b..b42b32ea44d 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -66,16 +66,8 @@ docs-lint links: - bundle exec nanoc # Check the internal links - bundle exec nanoc check internal_links - - bundle exec nanoc check internal_anchors - # Delete the redirect files, rebuild, and check internal links again, to see if we are linking to redirects. - # Don't delete the documentation/index.md, which is a false positive for the simple grep. - - grep -rl "redirect_to:" /tmp/gitlab-docs/content/ee/ | grep -v "development/documentation/index.md" | xargs rm -f - - bundle exec nanoc - - echo -e "\e[1;96mThe following test fails when a doc links to a redirect file." - - echo -e "\e[1;96mMake sure all links point to the correct page." - - bundle exec nanoc check internal_links # Check the internal anchor links - + - bundle exec nanoc check internal_anchors ui-docs-links lint: extends: diff --git a/GITLAB_ELASTICSEARCH_INDEXER_VERSION b/GITLAB_ELASTICSEARCH_INDEXER_VERSION index 834f2629538..c8e38b61405 100644 --- a/GITLAB_ELASTICSEARCH_INDEXER_VERSION +++ b/GITLAB_ELASTICSEARCH_INDEXER_VERSION @@ -1 +1 @@ -2.8.0 +2.9.0 diff --git a/app/serializers/group_child_entity.rb b/app/serializers/group_child_entity.rb index a7fe4d3f9b9..adbda790dee 100644 --- a/app/serializers/group_child_entity.rb +++ b/app/serializers/group_child_entity.rb @@ -20,7 +20,7 @@ class GroupChildEntity < Grape::Entity # We know `type` will be one either `project` or `group`. # The `edit_polymorphic_path` helper would try to call the path helper # with a plural: `edit_groups_path(instance)` or `edit_projects_path(instance)` - # while our methods are `edit_group_path` or `edit_group_path` + # while our methods are `edit_group_path` or `edit_project_path` public_send("edit_#{type}_path", instance) # rubocop:disable GitlabSecurity/PublicSend end diff --git a/changelogs/unreleased/5788-geo-automatic-recover-from-leader-change-in-primary-site-docs.yml b/changelogs/unreleased/5788-geo-automatic-recover-from-leader-change-in-primary-site-docs.yml new file mode 100644 index 00000000000..45ae309b686 --- /dev/null +++ b/changelogs/unreleased/5788-geo-automatic-recover-from-leader-change-in-primary-site-docs.yml @@ -0,0 +1,6 @@ +--- +title: Geo - Update Patroni replication docs to automatic recover from a leader change + on the primary site +merge_request: 53424 +author: +type: other diff --git a/doc/.vale/gitlab/spelling-exceptions.txt b/doc/.vale/gitlab/spelling-exceptions.txt index 29f7bce9a96..c6cf2e46480 100644 --- a/doc/.vale/gitlab/spelling-exceptions.txt +++ b/doc/.vale/gitlab/spelling-exceptions.txt @@ -9,6 +9,7 @@ allowlist allowlisted allowlisting allowlists +anonymization anonymized Ansible Anthos @@ -81,6 +82,7 @@ Caddy callstack callstacks Camo +canonicalized CentOS Certbot changeset @@ -359,6 +361,8 @@ Nanoc negatable Netlify Nokogiri +noteable +noteables npm nullability nullable @@ -689,6 +693,7 @@ unreplicated unresolve unresolved unresolving +unsanitized unschedule unscoped unshare @@ -736,6 +741,7 @@ WebdriverIO Webex webpack webserver +Webservice websocket websockets whitepaper diff --git a/doc/administration/geo/setup/database.md b/doc/administration/geo/setup/database.md index c9fd94bf2b2..1272e7d1419 100644 --- a/doc/administration/geo/setup/database.md +++ b/doc/administration/geo/setup/database.md @@ -474,31 +474,29 @@ information, see [High Availability with Omnibus GitLab](../../postgresql/replic Support for Patroni is intended to replace `repmgr` as a [highly available PostgreSQL solution](../../postgresql/replication_and_failover.md) on the primary node, but it can also be used for PostgreSQL HA on a secondary -node. +site. Starting with GitLab 13.5, Patroni is available for _experimental_ use with Geo -primary and secondary nodes. Due to its experimental nature, Patroni support is +primary and secondary sites. Due to its experimental nature, Patroni support is subject to change without notice. This experimental implementation has the following limitations: -- Whenever a new Leader is elected, the PgBouncer instance must be reconfigured - to point to the new Leader. -- Whenever a new Leader is elected on the primary node, the Standby Leader on - the secondary needs to be reconfigured to point to the new Leader. - Whenever `gitlab-ctl reconfigure` runs on a Patroni Leader instance, there's a chance the node will be demoted due to the required short-time restart. To avoid this, you can pause auto-failover by running `gitlab-ctl patroni pause`. After a reconfigure, it resumes on its own. -For instructions about how to set up Patroni on the primary node, see the +For instructions about how to set up Patroni on the primary site, see the [PostgreSQL replication and failover with Omnibus GitLab](../../postgresql/replication_and_failover.md#patroni) page. -If you are currently using `repmgr` on your Geo primary, see [these instructions](#migrating-from-repmgr-to-patroni) for migrating from `repmgr` to Patroni. +If you are currently using `repmgr` on your Geo primary site, see [these instructions](#migrating-from-repmgr-to-patroni) for migrating from `repmgr` to Patroni. -A production-ready and secure setup requires at least three Patroni instances on -the primary site, and a similar configuration on the secondary sites. Be sure to -use password credentials and other database best practices. +A production-ready and secure setup requires at least three Consul nodes, three +Patroni nodes, one internal load-balancing node on the primary site, and a similar +configuration for the secondary site. The internal load balancer provides a single +endpoint for connecting to the Patroni cluster's leader whenever a new leader is +elected. Be sure to use [password credentials](../..//postgresql/replication_and_failover.md#database-authorization-for-patroni) and other database best practices. Similar to `repmgr`, using Patroni on a secondary node is optional. @@ -555,7 +553,51 @@ Leader instance**: gitlab-ctl reconfigure ``` -### Step 2. Configure a Standby cluster on the secondary site +### Step 2. Configure the internal load balancer on the primary site + +To avoid reconfiguring the Standby Leader on the secondary site whenever a new +Leader is elected on the primary site, we'll need to set up a TCP internal load +balancer which will give a single endpoint for connecting to the Patroni +cluster's Leader. + +The Omnibus GitLab packages do not include a Load Balancer. Here's how you +could do it with [HAProxy](https://www.haproxy.org/). + +The following IPs and names will be used as an example: + +- `10.6.0.21`: Patroni 1 (`patroni1.internal`) +- `10.6.0.21`: Patroni 2 (`patroni2.internal`) +- `10.6.0.22`: Patroni 3 (`patroni3.internal`) + +```plaintext +global + log /dev/log local0 + log localhost local1 notice + log stdout format raw local0 + +defaults + log global + default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions + +frontend internal-postgresql-tcp-in + bind *:5000 + mode tcp + option tcplog + + default_backend postgresql + +backend postgresql + option httpchk + http-check expect status 200 + + server patroni1.internal 10.6.0.21:5432 maxconn 100 check port 8008 + server patroni2.internal 10.6.0.22:5432 maxconn 100 check port 8008 + server patroni3.internal 10.6.0.23.195:5432 maxconn 100 check port 8008 +``` + +Refer to your preferred Load Balancer's documentation for further guidance. + +### Step 3. Configure a Standby cluster on the secondary site NOTE: If you are converting a secondary site to a Patroni Cluster, you must start @@ -589,8 +631,8 @@ For each Patroni instance on the secondary site: patroni['enable'] = false patroni['standby_cluster']['enable'] = true - patroni['standby_cluster']['host'] = 'PATRONI_PRIMARY_LEADER_IP' # This needs to be changed anytime the primary Leader changes - patroni['standby_cluster']['port'] = 5432 + patroni['standby_cluster']['host'] = 'INTERNAL_LOAD_BALANCER_PRIMARY_IP' + patroni['standby_cluster']['port'] = INTERNAL_LOAD_BALANCER_PRIMARY_PORT patroni['standby_cluster']['primary_slot_name'] = 'geo_secondary' # Or the unique replication slot name you setup before patroni['replication_password'] = 'PLAIN_TEXT_POSTGRESQL_REPLICATION_PASSWORD' patroni['use_pg_rewind'] = true @@ -642,7 +684,8 @@ With Patroni it's now possible to support that. In order to migrate the existing 1. Make sure you have a Consul cluster setup on the secondary (similar to how you set it up on the primary). 1. [Configure a permanent replication slot](#step-1-configure-patroni-permanent-replication-slot-on-the-primary-site). -1. [Configure a Standby Cluster](#step-2-configure-a-standby-cluster-on-the-secondary-site) +1. [Configure the internal load balancer](#step-2-configure-the-internal-load-balancer-on-the-primary-site). +1. [Configure a Standby Cluster](#step-3-configure-a-standby-cluster-on-the-secondary-site) on that single node machine. You will end up with a "Standby Cluster" with a single node. That allows you to later on add additional Patroni nodes diff --git a/doc/architecture/blueprints/database_testing/index.md b/doc/architecture/blueprints/database_testing/index.md index ab4b3837c2f..a333ac12ef3 100644 --- a/doc/architecture/blueprints/database_testing/index.md +++ b/doc/architecture/blueprints/database_testing/index.md @@ -17,11 +17,11 @@ Developers are expected to test database migrations prior to deploying to any en The [code review phase](../../../development/database_review.md) involves Database Reviewers and Maintainers to manually check the migrations committed. This often involves knowing and spotting problematic patterns and their particular behavior on GitLab.com from experience. There is no large-scale environment available that allows us to test database migrations before they are being merged. -Testing in CI is done on a very small database. We mainly check forward/backward migration consistency, evaluate rubocop rules to detect well-known problematic behaviors (static code checking) and have a few other, rather technical checks in place (adding the right files etc). That is, we typically find code or other rather simple errors, but cannot surface any data related errors - which are also typically not covered by unit tests either. +Testing in CI is done on a very small database. We mainly check forward/backward migration consistency, evaluate Rubocop rules to detect well-known problematic behaviors (static code checking) and have a few other, rather technical checks in place (adding the right files etc). That is, we typically find code or other rather simple errors, but cannot surface any data related errors - which are also typically not covered by unit tests either. Once merged, migrations are being deployed to the staging environment. Its database size is less than 5% of the production database size as of January 2021 and its recent data distribution does not resemble the production site. Oftentimes, we see migrations succeed in staging but then fail in production due to query timeouts or other unexpected problems. Even if we caught problems in staging, this is still expensive to reconcile and ideally we want to catch those problems as early as possible in the development cycle. -Today, we have gained experience with working on a thin-cloned production database (more on this below) and already use it to provide developers with access to production query plans, automated query feedback and suggestions with optimizations. This is built around [Database Lab](https://gitlab.com/postgres-ai/database-lab) and [Joe](https://gitlab.com/postgres-ai/joe), both available through Slack (using chatops) and [postgres.ai](https://postgres.ai/). +Today, we have gained experience with working on a thin-cloned production database (more on this below) and already use it to provide developers with access to production query plans, automated query feedback and suggestions with optimizations. This is built around [Database Lab](https://gitlab.com/postgres-ai/database-lab) and [Joe](https://gitlab.com/postgres-ai/joe), both available through Slack (using ChatOps) and [postgres.ai](https://postgres.ai/). ## Vision @@ -97,7 +97,7 @@ The short-term goal is detailed in [this epic](https://gitlab.com/groups/gitlab- ### Mid-term - Improved feedback, query testing and background migration testing -Mid-term, we plan to expand the level of detail the testing pipeline reports back to the Merge Request and expand its scope to cover query testing, too. By doing so, we use our experience from database code reviews and using thin-clone technology and bring this back closer to the GitLab workflow. Instead of reaching out to different tools (postgres.ai, joe, Slack, plan visualizations etc.) we bring this back to GitLab and working directly on the Merge Request. +Mid-term, we plan to expand the level of detail the testing pipeline reports back to the Merge Request and expand its scope to cover query testing, too. By doing so, we use our experience from database code reviews and using thin-clone technology and bring this back closer to the GitLab workflow. Instead of reaching out to different tools (`postgres.ai`, `joe`, Slack, plan visualizations etc.) we bring this back to GitLab and working directly on the Merge Request. Secondly, we plan to cover background migrations testing, too. These are typically data migrations that are scheduled to run over a long period of time. The success of both the scheduling phase and the job execution phase typically depends a lot on data distribution - which only surfaces when running these migrations on actual production data. In order to become confident about a background migration, we plan to provide the following feedback: @@ -122,10 +122,10 @@ An alternative approach we have discussed and abandoned is to "scrub" and anonym ## Who -This effort is owned and driven by the [GitLab Database Team](https://about.gitlab.com/handbook/engineering/development/enablement/database/) with support from the [GitLab.com Reliability Datastores](https://about.gitlab.com/handbook/engineering/infrastructure/team/reliability/datastores/) team. - <!-- vale gitlab.Spelling = NO --> +This effort is owned and driven by the [GitLab Database Team](https://about.gitlab.com/handbook/engineering/development/enablement/database/) with support from the [GitLab.com Reliability Datastores](https://about.gitlab.com/handbook/engineering/infrastructure/team/reliability/datastores/) team. + | Role | Who |------------------------------|-------------------------| | Author | Andreas Brandl | diff --git a/doc/development/testing_guide/frontend_testing.md b/doc/development/testing_guide/frontend_testing.md index 7e7f62e41dd..a738ee9839e 100644 --- a/doc/development/testing_guide/frontend_testing.md +++ b/doc/development/testing_guide/frontend_testing.md @@ -548,8 +548,12 @@ In order to ensure that a clean wrapper object and DOM are being used in each te }); ``` +<!-- vale gitlab.Spelling = NO --> + See also the [Vue Test Utils documentation on `destroy`](https://vue-test-utils.vuejs.org/api/wrapper/#destroy). +<!-- vale gitlab.Spelling = YES --> + ### Jest best practices > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/34209) in GitLab 13.2. @@ -646,7 +650,7 @@ The latter is useful when you have `setInterval` in the code. **Remember:** our Non-determinism is the breeding ground for flaky and brittle specs. Such specs end up breaking the CI pipeline, interrupting the work flow of other contributors. -1. Make sure your test subject's collaborators (e.g., axios, apollo, lodash helpers) and test environment (e.g., Date) behave consistently across systems and over time. +1. Make sure your test subject's collaborators (e.g., Axios, apollo, Lodash helpers) and test environment (e.g., Date) behave consistently across systems and over time. 1. Make sure tests are focused and not doing "extra work" (e.g., needlessly creating the test subject more than once in an individual test) ### Faking `Date` for determinism @@ -807,7 +811,7 @@ yarn karma -f 'spec/javascripts/ide/**/file_spec.js' ## Frontend test fixtures Frontend fixtures are files containing responses from backend controllers. These responses can be either HTML -generated from haml templates or JSON payloads. Frontend tests that rely on these responses are +generated from HAML templates or JSON payloads. Frontend tests that rely on these responses are often using fixtures to validate correct integration with the backend code. ### Generate fixtures @@ -1042,7 +1046,7 @@ import _Thing from '~/feature/path/to/thing.vue'; NOTE: Do not disregard test timeouts. This could be a sign that there's actually a production problem. Use this opportunity to analyze the production webpack bundles and -chunks and confirm that there is not a production issue with the async imports. +chunks and confirm that there is not a production issue with the asynchronous imports. ## Overview of Frontend Testing Levels @@ -1092,9 +1096,13 @@ Check an example in [`spec/frontend/ide/stores/actions_spec.js`](https://gitlab. ### Wait until Axios requests finish +<!-- vale gitlab.Spelling = NO --> + The Axios Utils mock module located in `spec/frontend/mocks/ce/lib/utils/axios_utils.js` contains two helper methods for Jest tests that spawn HTTP requests. These are very useful if you don't have a handle to the request's Promise, for example when a Vue component does a request as part of its life cycle. +<!-- vale gitlab.Spelling = YES --> + - `waitFor(url, callback)`: Runs `callback` after a request to `url` finishes (either successfully or unsuccessfully). - `waitForAll(callback)`: Runs `callback` once all pending requests have finished. If no requests are pending, runs `callback` on the next tick. diff --git a/doc/development/transient/prevention-patterns.md b/doc/development/transient/prevention-patterns.md index 7231562415b..0a466a85445 100644 --- a/doc/development/transient/prevention-patterns.md +++ b/doc/development/transient/prevention-patterns.md @@ -25,7 +25,7 @@ If your feature requires data from both, ensure that the two have finished loadi ### Simulate slower connections when testing manually -Add a network condition template to your browser's dev tools to enable you to toggle between a slow and a fast connection. +Add a network condition template to your browser's developer tools to enable you to toggle between a slow and a fast connection. **Example:** @@ -40,7 +40,7 @@ When setting event listeners, if not possible to use event delegation, ensure al Including when that expanded content is: -- **Invisible** (`display: none;`). Some JavaScript requires the element to be visible to work properly (eg.: when taking measurements). +- **Invisible** (`display: none;`). Some JavaScript requires the element to be visible to work properly, such as when taking measurements. - **Dynamic content** (AJAX/DOM manipulation). ### Using assertions to detect transient bugs caused by unmet conditions diff --git a/doc/integration/elasticsearch.md b/doc/integration/elasticsearch.md index e540bc7d424..d217d472bd2 100644 --- a/doc/integration/elasticsearch.md +++ b/doc/integration/elasticsearch.md @@ -305,7 +305,7 @@ and Elasticsearch index alias feature to perform the operation. We set up an ind `primary` index which is used by GitLab for reads/writes. When reindexing process starts, we temporarily pause the writes to the `primary` index. Then, we create another index and invoke the Reindex API which migrates the index data onto the new index. Once the reindexing job is complete, we switch to the new index by connecting the -index alias to it which becomes the new `primary` index. At the end, we unpause the writes and normal operation resumes. +index alias to it which becomes the new `primary` index. At the end, we resume the writes and normal operation resumes. ### Trigger the reindex via the Advanced Search administration diff --git a/doc/topics/cron/index.md b/doc/topics/cron/index.md index 5abcc5e1eb1..88f8bd1858f 100644 --- a/doc/topics/cron/index.md +++ b/doc/topics/cron/index.md @@ -64,6 +64,6 @@ More examples of how to write a cron schedule can be found at ## How GitLab parses cron syntax strings -GitLab uses [fugit](https://github.com/floraison/fugit) to parse cron syntax +GitLab uses [`fugit`](https://github.com/floraison/fugit) to parse cron syntax strings on the server and [cron-validate](https://github.com/Airfooox/cron-validate) to validate cron syntax in the browser. diff --git a/doc/user/application_security/dependency_scanning/index.md b/doc/user/application_security/dependency_scanning/index.md index 277b20fb37b..22f42298889 100644 --- a/doc/user/application_security/dependency_scanning/index.md +++ b/doc/user/application_security/dependency_scanning/index.md @@ -65,7 +65,7 @@ The following languages and dependency managers are supported: | [Golang](https://golang.org/) | Go | `go.sum` | [Gemnasium](https://gitlab.com/gitlab-org/security-products/gemnasium) | | [Gradle](https://gradle.org/), [Maven](https://maven.apache.org/) | Java | `build.gradle`, `build.gradle.kts`, `pom.xml` | [Gemnasium](https://gitlab.com/gitlab-org/security-products/gemnasium) | | [npm](https://www.npmjs.com/), [yarn](https://classic.yarnpkg.com/en/) 1.x | JavaScript | `package-lock.json`, `npm-shrinkwrap.json`, `yarn.lock` | [Gemnasium](https://gitlab.com/gitlab-org/security-products/gemnasium) | -| [npm](https://www.npmjs.com/), [yarn](https://classic.yarnpkg.com/en/) 1.x | JavaScript | `package.json` | [Retire.js](https://retirejs.github.io/retire.js/) | +| [npm](https://www.npmjs.com/) (7 and earlier), [yarn](https://classic.yarnpkg.com/en/) 1.x | JavaScript | `package.json` | [Retire.js](https://retirejs.github.io/retire.js/) | | [NuGet](https://www.nuget.org/) 4.9+ | .NET, C# | [`packages.lock.json`](https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#enabling-lock-file) | [Gemnasium](https://gitlab.com/gitlab-org/security-products/gemnasium) | | [`setuptools`](https://setuptools.readthedocs.io/en/latest/), [pip](https://pip.pypa.io/en/stable/), [Pipenv](https://pipenv.pypa.io/en/latest/) (*1*) | Python | `setup.py`, `requirements.txt`, `requirements.pip`, `requires.txt`, `Pipfile`, `Pipfile.lock` | [Gemnasium](https://gitlab.com/gitlab-org/security-products/gemnasium) | | [sbt](https://www.scala-sbt.org/) 1.2 and below ([Ivy](http://ant.apache.org/ivy/)) | Scala | `build.sbt` | [Gemnasium](https://gitlab.com/gitlab-org/security-products/gemnasium) | diff --git a/lib/gitlab/usage_data_counters/known_events/code_review_events.yml b/lib/gitlab/usage_data_counters/known_events/code_review_events.yml new file mode 100644 index 00000000000..b6aa4b5ec3a --- /dev/null +++ b/lib/gitlab/usage_data_counters/known_events/code_review_events.yml @@ -0,0 +1,126 @@ +--- +- name: i_code_review_mr_diffs + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_mr_diffs +- name: i_code_review_user_single_file_diffs + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_single_file_diffs +- name: i_code_review_mr_single_file_diffs + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_mr_single_file_diffs +- name: i_code_review_user_create_mr + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_create_mr +- name: i_code_review_user_close_mr + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_close_mr +- name: i_code_review_user_reopen_mr + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_reopen_mr +- name: i_code_review_user_approve_mr + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_approve_mr +- name: i_code_review_user_unapprove_mr + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_unapprove_mr +- name: i_code_review_user_resolve_thread + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_resolve_thread +- name: i_code_review_user_unresolve_thread + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_unresolve_thread +- name: i_code_review_edit_mr_title + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_edit_mr_title +- name: i_code_review_edit_mr_desc + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_edit_mr_desc +- name: i_code_review_user_merge_mr + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_merge_mr +- name: i_code_review_user_create_mr_comment + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_create_mr_comment +- name: i_code_review_user_edit_mr_comment + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_edit_mr_comment +- name: i_code_review_user_remove_mr_comment + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_remove_mr_comment +- name: i_code_review_user_create_review_note + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_create_review_note +- name: i_code_review_user_publish_review + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_publish_review +- name: i_code_review_user_create_multiline_mr_comment + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_create_multiline_mr_comment +- name: i_code_review_user_edit_multiline_mr_comment + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_edit_multiline_mr_comment +- name: i_code_review_user_remove_multiline_mr_comment + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_remove_multiline_mr_comment +- name: i_code_review_user_add_suggestion + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_add_suggestion +- name: i_code_review_user_apply_suggestion + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_apply_suggestion +- name: i_code_review_user_assigned + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_assigned +- name: i_code_review_user_review_requested + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_review_requested diff --git a/lib/gitlab/usage_data_counters/known_events/common.yml b/lib/gitlab/usage_data_counters/known_events/common.yml index 5cf61acee9e..cd64beea769 100644 --- a/lib/gitlab/usage_data_counters/known_events/common.yml +++ b/lib/gitlab/usage_data_counters/known_events/common.yml @@ -455,132 +455,6 @@ redis_slot: snippets aggregation: weekly feature_flag: usage_data_i_snippets_show -# Merge request counters -- name: i_code_review_mr_diffs - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_mr_diffs -- name: i_code_review_user_single_file_diffs - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_single_file_diffs -- name: i_code_review_mr_single_file_diffs - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_mr_single_file_diffs -- name: i_code_review_user_create_mr - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_create_mr -- name: i_code_review_user_close_mr - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_close_mr -- name: i_code_review_user_reopen_mr - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_reopen_mr -- name: i_code_review_user_approve_mr - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_approve_mr -- name: i_code_review_user_unapprove_mr - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_unapprove_mr -- name: i_code_review_user_resolve_thread - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_resolve_thread -- name: i_code_review_user_unresolve_thread - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_unresolve_thread -- name: i_code_review_edit_mr_title - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_edit_mr_title -- name: i_code_review_edit_mr_desc - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_edit_mr_desc -- name: i_code_review_user_merge_mr - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_merge_mr -- name: i_code_review_user_create_mr_comment - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_create_mr_comment -- name: i_code_review_user_edit_mr_comment - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_edit_mr_comment -- name: i_code_review_user_remove_mr_comment - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_remove_mr_comment -- name: i_code_review_user_create_review_note - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_create_review_note -- name: i_code_review_user_publish_review - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_publish_review -- name: i_code_review_user_create_multiline_mr_comment - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_create_multiline_mr_comment -- name: i_code_review_user_edit_multiline_mr_comment - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_edit_multiline_mr_comment -- name: i_code_review_user_remove_multiline_mr_comment - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_remove_multiline_mr_comment -- name: i_code_review_user_add_suggestion - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_add_suggestion -- name: i_code_review_user_apply_suggestion - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_apply_suggestion -- name: i_code_review_user_assigned - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_assigned -- name: i_code_review_user_review_requested - redis_slot: code_review - category: code_review - aggregation: weekly - feature_flag: usage_data_i_code_review_user_review_requested # Terraform - name: p_terraform_state_api_unique_users category: terraform diff --git a/qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb index 624f8d20b62..9b2540f67c7 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb @@ -3,7 +3,7 @@ module QA RSpec.describe 'Manage', :smoke do describe 'basic user login' do - it 'user logs in using basic credentials and logs out', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/424' do + it 'user logs in using basic credentials and logs out', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1690' do Flow::Login.sign_in Page::Main::Menu.perform do |menu| diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/dashboard_images_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/dashboard_images_spec.rb index aaf0c51a2db..f2822e3d368 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/project/dashboard_images_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/project/dashboard_images_spec.rb @@ -41,7 +41,7 @@ module QA end end - context 'when logged in as a new user', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/465' do + context 'when logged in as a new user', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1693' do it_behaves_like 'loads all images' do let(:new_user) { @new_user } end diff --git a/qa/qa/specs/features/browser_ui/3_create/design_management/add_design_content_spec.rb b/qa/qa/specs/features/browser_ui/3_create/design_management/add_design_content_spec.rb index 051e8fcecbe..2e48899742b 100644 --- a/qa/qa/specs/features/browser_ui/3_create/design_management/add_design_content_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/design_management/add_design_content_spec.rb @@ -12,7 +12,7 @@ module QA Flow::Login.sign_in end - it 'user adds a design and annotates it', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/955' do + it 'user adds a design and annotates it', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1692' do issue.visit! Page::Project::Issue::Show.perform do |issue| diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb index 5b1c15016bf..d11afde5648 100644 --- a/qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb @@ -15,7 +15,7 @@ module QA merge_request.visit! end - it 'views the merge request email patches', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/416' do + it 'views the merge request email patches', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1689' do Page::MergeRequest::Show.perform(&:view_email_patches) expect(page.text).to start_with('From') diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/add_list_delete_branches_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/add_list_delete_branches_spec.rb index 8df68e0f53b..d400876c838 100644 --- a/qa/qa/specs/features/browser_ui/3_create/repository/add_list_delete_branches_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/repository/add_list_delete_branches_spec.rb @@ -59,7 +59,7 @@ module QA project.visit! end - it 'lists branches correctly after CRUD operations', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/413' do + it 'lists branches correctly after CRUD operations', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1688' do Page::Project::Menu.perform(&:go_to_repository_branches) expect(page).to have_content(master_branch) diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/ssh_key_support_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/ssh_key_support_spec.rb index 158bd19704e..a90bb920107 100644 --- a/qa/qa/specs/features/browser_ui/3_create/repository/ssh_key_support_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/repository/ssh_key_support_spec.rb @@ -9,7 +9,7 @@ module QA Flow::Login.sign_in end - it 'user can add an SSH key', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/929' do + it 'user can add an SSH key', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1685' do key = Resource::SSHKey.fabricate_via_browser_ui! do |resource| resource.title = key_title end @@ -20,7 +20,7 @@ module QA # Note this context ensures that the example it contains is executed after the example above. Be aware of the order of execution if you add new examples in either context. context 'after adding an ssh key' do - it 'can delete an ssh key', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/930' do + it 'can delete an ssh key', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1686' do Page::Main::Menu.perform(&:click_edit_profile_link) Page::Profile::Menu.perform(&:click_ssh_keys) Page::Profile::SSHKeys.perform do |ssh_keys| |