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/doc
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-20 18:10:13 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-20 18:10:13 +0300
commite45c8a7e74d4c1a1f7e12504df3611f797620166 (patch)
treeabf7e30bdc0c5a5b998fab295c887db1dc6d9e48 /doc
parenta32e60a7ea976c65d0bcb8a9aed90e2b7ed56966 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'doc')
-rw-r--r--doc/.vale/gitlab/spelling-exceptions.txt3
-rw-r--r--doc/administration/clusters/kas.md2
-rw-r--r--doc/administration/geo/disaster_recovery/index.md6
-rw-r--r--doc/administration/geo/index.md2
-rw-r--r--doc/administration/geo/replication/troubleshooting.md5
-rw-r--r--doc/administration/operations/extra_sidekiq_processes.md2
-rw-r--r--doc/administration/pages/index.md8
-rw-r--r--doc/administration/reference_architectures/10k_users.md4
-rw-r--r--doc/administration/reference_architectures/25k_users.md2
-rw-r--r--doc/administration/reference_architectures/2k_users.md2
-rw-r--r--doc/administration/reference_architectures/3k_users.md6
-rw-r--r--doc/administration/reference_architectures/50k_users.md2
-rw-r--r--doc/administration/reference_architectures/5k_users.md2
-rw-r--r--doc/administration/terraform_state.md2
-rw-r--r--doc/api/packages/composer.md8
-rw-r--r--doc/architecture/blueprints/ci_scale/index.md10
-rw-r--r--doc/ci/environments/index.md2
-rw-r--r--doc/development/database/pagination_guidelines.md12
-rw-r--r--doc/development/i18n/translation.md4
-rw-r--r--doc/development/testing_guide/best_practices.md40
-rw-r--r--doc/raketasks/backup_restore.md6
-rw-r--r--doc/user/admin_area/settings/floc.md40
-rw-r--r--doc/user/admin_area/settings/index.md1
-rw-r--r--doc/user/clusters/applications.md3
-rw-r--r--doc/user/project/wiki/index.md36
25 files changed, 153 insertions, 57 deletions
diff --git a/doc/.vale/gitlab/spelling-exceptions.txt b/doc/.vale/gitlab/spelling-exceptions.txt
index 05d0e5d4b85..58a42871ae5 100644
--- a/doc/.vale/gitlab/spelling-exceptions.txt
+++ b/doc/.vale/gitlab/spelling-exceptions.txt
@@ -13,6 +13,7 @@ anonymization
anonymized
Ansible
Anthos
+Apdex
approvers
architected
architecting
@@ -281,6 +282,7 @@ jQuery
jsdom
Jsonnet
JupyterHub
+Kaminari
kanban
kanbans
kaniko
@@ -546,6 +548,7 @@ serializer
serializers
serializing
serverless
+severities
sharded
sharding
shfmt
diff --git a/doc/administration/clusters/kas.md b/doc/administration/clusters/kas.md
index 1b9638411de..8e5c162001e 100644
--- a/doc/administration/clusters/kas.md
+++ b/doc/administration/clusters/kas.md
@@ -127,5 +127,5 @@ time="2020-10-29T04:44:14Z" level=warning msg="Config: failed to fetch" agent_id
It means that the path to the configuration project is incorrect,
or the path to `config.yaml` inside the project is not valid.
-To fix this, ensure that the paths to the configuration repo and to the `config.yaml` file
+To fix this, ensure that the paths to the configuration repository and to the `config.yaml` file
are correct.
diff --git a/doc/administration/geo/disaster_recovery/index.md b/doc/administration/geo/disaster_recovery/index.md
index 7c6f4a32b57..b02dcf65645 100644
--- a/doc/administration/geo/disaster_recovery/index.md
+++ b/doc/administration/geo/disaster_recovery/index.md
@@ -537,13 +537,13 @@ Data that was created on the primary while the secondary was paused will be lost
1. Update the existing cluster configuration.
- You can retrieve the existing config with Helm:
+ You can retrieve the existing configuration with Helm:
```shell
helm --namespace gitlab get values gitlab-geo > gitlab.yaml
```
- The existing config will contain a section for Geo that should resemble:
+ The existing configuration will contain a section for Geo that should resemble:
```yaml
geo:
@@ -562,7 +562,7 @@ Data that was created on the primary while the secondary was paused will be lost
You can remove the entire `psql` section if the cluster will remain as a primary site, this refers to the tracking database and will be ignored whilst the cluster is acting as a primary site.
- Update the cluster with the new config:
+ Update the cluster with the new configuration:
```shell
helm upgrade --install --version <current Chart version> gitlab-geo gitlab/gitlab --namespace gitlab -f gitlab.yaml
diff --git a/doc/administration/geo/index.md b/doc/administration/geo/index.md
index 780e391973c..ba2f3797f26 100644
--- a/doc/administration/geo/index.md
+++ b/doc/administration/geo/index.md
@@ -196,7 +196,7 @@ This list of limitations only reflects the latest version of GitLab. If you are
- Object pools for forked project deduplication work only on the **primary** site, and are duplicated on the **secondary** site.
- GitLab Runners cannot register with a **secondary** site. Support for this is [planned for the future](https://gitlab.com/gitlab-org/gitlab/-/issues/3294).
- Configuring Geo **secondary** sites to [use high-availability configurations of PostgreSQL](https://gitlab.com/groups/gitlab-org/-/epics/2536) is currently in **alpha** support.
-- [Selective synchronization](replication/configuration.md#selective-synchronization) only limits what repositories are replicated. The entire PostgreSQL data is still replicated. Selective synchronization is not built to accomodate compliance / export control use cases.
+- [Selective synchronization](replication/configuration.md#selective-synchronization) only limits what repositories are replicated. The entire PostgreSQL data is still replicated. Selective synchronization is not built to accommodate compliance / export control use cases.
### Limitations on replication/verification
diff --git a/doc/administration/geo/replication/troubleshooting.md b/doc/administration/geo/replication/troubleshooting.md
index 6d990fd12ba..97a160fbc22 100644
--- a/doc/administration/geo/replication/troubleshooting.md
+++ b/doc/administration/geo/replication/troubleshooting.md
@@ -854,6 +854,11 @@ To resolve this issue:
the **primary** node using IPv4 in the `/etc/hosts` file. Alternatively, you should
[enable IPv6 on the **primary** node](https://docs.gitlab.com/omnibus/settings/nginx.html#setting-the-nginx-listen-address-or-addresses).
+### Geo Admin Area shows 'Unknown' for health status and 'Request failed with status code 401'
+
+If using a load balancer, ensure that the load balancer's URL is set as the `external_url` in the
+`/etc/gitlab/gitlab.rb` of the nodes behind the load balancer.
+
### GitLab Pages return 404 errors after promoting
This is due to [Pages data not being managed by Geo](datatypes.md#limitations-on-replicationverification).
diff --git a/doc/administration/operations/extra_sidekiq_processes.md b/doc/administration/operations/extra_sidekiq_processes.md
index 6b8d6f3bf1e..35632064743 100644
--- a/doc/administration/operations/extra_sidekiq_processes.md
+++ b/doc/administration/operations/extra_sidekiq_processes.md
@@ -147,7 +147,7 @@ attributes](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/workers/all_q
- `worker_name` - the worker name. The other attributes are typically more useful as
they are more general, but this is available in case a particular worker needs
to be selected.
-- `name` - the queue name. Similiarly, this is available in case a particular queue needs
+- `name` - the queue name. Similarly, this is available in case a particular queue needs
to be selected.
- `resource_boundary` - if the queue is bound by `cpu`, `memory`, or
`unknown`. For example, the `project_export` queue is memory bound as it has
diff --git a/doc/administration/pages/index.md b/doc/administration/pages/index.md
index c93ae90deb6..fbc3c1bf618 100644
--- a/doc/administration/pages/index.md
+++ b/doc/administration/pages/index.md
@@ -831,8 +831,8 @@ or persistent errors, or the Pages Daemon serving old content.
NOTE:
Expiry, interval and timeout flags use [Golang's duration formatting](https://golang.org/pkg/time/#ParseDuration).
A duration string is a possibly signed sequence of decimal numbers,
-each with optional fraction and a unit suffix, such as "300ms", "1.5h" or "2h45m".
-Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
+each with optional fraction and a unit suffix, such as `300ms`, `1.5h` or `2h45m`.
+Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`.
Examples:
@@ -938,7 +938,7 @@ In installations from source:
## ZIP storage
-In GitLab 14.0 the underlaying storage format of GitLab Pages is changing from
+In GitLab 14.0 the underlying storage format of GitLab Pages is changing from
files stored directly in disk to a single ZIP archive per project.
These ZIP archives can be stored either locally on disk storage or on the [object storage](#using-object-storage) if it is configured.
@@ -1210,7 +1210,7 @@ These are due to the Pages files not being among the
It is possible to copy the subfolders and files in the [Pages path](#change-storage-path)
to the new primary node to resolve this.
For example, you can adapt the `rsync` strategy from the
-[moving repositories documenation](../operations/moving_repositories.md).
+[moving repositories documentation](../operations/moving_repositories.md).
Alternatively, run the CI pipelines of those projects that contain a `pages` job again.
### Failed to connect to the internal GitLab API
diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md
index e4a699b962c..c9beee19fda 100644
--- a/doc/administration/reference_architectures/10k_users.md
+++ b/doc/administration/reference_architectures/10k_users.md
@@ -39,7 +39,7 @@ NOTE:
Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable
-third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work.
+third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml
@startuml 10k
@@ -2423,7 +2423,7 @@ NOTE:
Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable
-third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work.
+third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml
@startuml 10k
diff --git a/doc/administration/reference_architectures/25k_users.md b/doc/administration/reference_architectures/25k_users.md
index 129386d6ce5..1474d1b54e3 100644
--- a/doc/administration/reference_architectures/25k_users.md
+++ b/doc/administration/reference_architectures/25k_users.md
@@ -39,7 +39,7 @@ NOTE:
Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable
-third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work.
+third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml
@startuml 25k
diff --git a/doc/administration/reference_architectures/2k_users.md b/doc/administration/reference_architectures/2k_users.md
index 69e261cfbe6..b653a57deba 100644
--- a/doc/administration/reference_architectures/2k_users.md
+++ b/doc/administration/reference_architectures/2k_users.md
@@ -31,7 +31,7 @@ NOTE:
Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable
-third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work.
+third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml
@startuml 2k
diff --git a/doc/administration/reference_architectures/3k_users.md b/doc/administration/reference_architectures/3k_users.md
index d81f98a35d4..709420b9e24 100644
--- a/doc/administration/reference_architectures/3k_users.md
+++ b/doc/administration/reference_architectures/3k_users.md
@@ -46,7 +46,7 @@ NOTE:
Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable
-third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work.
+third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml
@startuml 3k
@@ -1213,7 +1213,7 @@ Praefect requires several secret tokens to secure communications across the Clus
Gitaly Cluster nodes are configured in Praefect via a `virtual storage`. Each storage contains
the details of each Gitaly node that makes up the cluster. Each storage is also given a name
-and this name is used in several areas of the config. In this guide, the name of the storage will be
+and this name is used in several areas of the configuration. In this guide, the name of the storage will be
`default`. Also, this guide is geared towards new installs, if upgrading an existing environment
to use Gitaly Cluster, you may need to use a different name.
Refer to the [Praefect documentation](../gitaly/praefect.md#praefect) for more info.
@@ -2074,7 +2074,7 @@ but with smaller performance requirements, several modifications can be consider
- PostgreSQL: Can be run on reputable Cloud PaaS solutions such as Google Cloud SQL or AWS RDS. In this setup, the PgBouncer and Consul nodes are no longer required:
- Consul may still be desired if [Prometheus](../monitoring/prometheus/index.md) auto discovery is a requirement, otherwise you would need to [manually add scrape configurations](../monitoring/prometheus/index.md#adding-custom-scrape-configurations) for all nodes.
- As Redis Sentinel runs on the same box as Consul in this architecture, it may need to be run on a separate box if Redis is still being run via Omnibus.
- - Redis: Can be run on reputable Cloud PaaS solutions such as Google Memorystore and AWS Elasticache. In this setup, the Redis Sentinel is no longer required.
+ - Redis: Can be run on reputable Cloud PaaS solutions such as Google Memorystore and AWS ElastiCache. In this setup, the Redis Sentinel is no longer required.
<div align="right">
<a type="button" class="btn btn-default" href="#setup-components">
diff --git a/doc/administration/reference_architectures/50k_users.md b/doc/administration/reference_architectures/50k_users.md
index 5cc463c953d..f492f82f902 100644
--- a/doc/administration/reference_architectures/50k_users.md
+++ b/doc/administration/reference_architectures/50k_users.md
@@ -39,7 +39,7 @@ NOTE:
Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable
-third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work.
+third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml
@startuml 50k
diff --git a/doc/administration/reference_architectures/5k_users.md b/doc/administration/reference_architectures/5k_users.md
index 792dd7020c7..36d8b102101 100644
--- a/doc/administration/reference_architectures/5k_users.md
+++ b/doc/administration/reference_architectures/5k_users.md
@@ -43,7 +43,7 @@ NOTE:
Components marked with * can be optionally run on reputable
third party external PaaS PostgreSQL solutions. Google Cloud SQL and AWS RDS are known to work.
Components marked with ** can be optionally run on reputable
-third party external PaaS Redis solutions. Google Memorystore and AWS Elasticache are known to work.
+third party external PaaS Redis solutions. Google Memorystore and AWS ElastiCache are known to work.
```plantuml
@startuml 5k
diff --git a/doc/administration/terraform_state.md b/doc/administration/terraform_state.md
index 898d98495d9..388ae74f207 100644
--- a/doc/administration/terraform_state.md
+++ b/doc/administration/terraform_state.md
@@ -23,7 +23,7 @@ Use [external object storage](https://docs.gitlab.com/charts/advanced/external-o
## Disabling Terraform state
To disable terraform state site-wide, follow the steps below.
-A GitLab administrator may want to disable Terraform state to reduce diskspace or if Terraform is not used in your instance.
+A GitLab administrator may want to disable Terraform state to reduce disk space or if Terraform is not used in your instance.
To do so, follow the steps below according to your installation's type.
**In Omnibus installations:**
diff --git a/doc/api/packages/composer.md b/doc/api/packages/composer.md
index ebf3ffba92f..5281744c430 100644
--- a/doc/api/packages/composer.md
+++ b/doc/api/packages/composer.md
@@ -71,7 +71,7 @@ Example response:
## V1 packages list
-Given the V1 provider sha, returns a list of packages within the repository. Using Composer V2 is
+Given the V1 provider SHA, returns a list of packages in the repository. Using Composer V2 is
recommended over V1.
```plaintext
@@ -81,7 +81,7 @@ GET group/:id/-/packages/composer/p/:sha
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | string | yes | The ID or full path of the group. |
-| `sha` | string | yes | The provider sha, provided by the Composer [base request](#base-repository-request). |
+| `sha` | string | yes | The provider SHA, provided by the Composer [base request](#base-repository-request). |
```shell
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/p/082df4a5035f8725a12i4a3d2da5e6aaa966d06843d0a5c6d499313810427bd6"
@@ -115,7 +115,7 @@ the symbol `%24` (see example below).
| -------------- | ------ | -------- | ----------- |
| `id` | string | yes | The ID or full path of the group. |
| `package_name` | string | yes | The name of the package. |
-| `sha` | string | yes | The sha digest of the package, provided by the [V1 packages list](#v1-packages-list). |
+| `sha` | string | yes | The SHA digest of the package, provided by the [V1 packages list](#v1-packages-list). |
```shell
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/my-org/my-composer-package%245c873497cdaa82eda35af5de24b789be92dfb6510baf117c42f03899c166b6e7"
@@ -272,7 +272,7 @@ GET projects/:id/packages/composer/archives/:package_name
| -------------- | ------ | -------- | ----------- |
| `id` | string | yes | The ID or full path of the group. |
| `package_name` | string | yes | The name of the package. |
-| `sha` | string | yes | The target sha of the requested package version. |
+| `sha` | string | yes | The target SHA of the requested package version. |
```shell
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab"
diff --git a/doc/architecture/blueprints/ci_scale/index.md b/doc/architecture/blueprints/ci_scale/index.md
index 99997e7b19b..6afa13bf207 100644
--- a/doc/architecture/blueprints/ci_scale/index.md
+++ b/doc/architecture/blueprints/ci_scale/index.md
@@ -28,7 +28,7 @@ store CI/CD data.
We expect to see 20M builds created daily on GitLab.com in the first half of
2024.
-![ci_builds cumulative with forecast](ci_builds_cumulative_forecast.png)
+![CI builds cumulative with forecast](ci_builds_cumulative_forecast.png)
## Goals
@@ -46,9 +46,9 @@ Historically, Rails used to use [integer](https://www.postgresql.org/docs/9.1/da
type when creating primary keys for a table. We did use the default when we
[created the `ci_builds` table in 2012](https://gitlab.com/gitlab-org/gitlab/-/blob/046b28312704f3131e72dcd2dbdacc5264d4aa62/db/ci/migrate/20121004165038_create_builds.rb).
[The behavior of Rails has changed](https://github.com/rails/rails/pull/26266)
-since the release of Rails 5. The framework is now using bigint type that is 8
+since the release of Rails 5. The framework is now using `bigint` type that is 8
bytes long, however we have not migrated primary keys for `ci_builds` table to
-bigint yet.
+`bigint` yet.
We will run out of the capacity of the integer type to store primary keys in
`ci_builds` table before December 2021. When it happens without a viable
@@ -89,7 +89,7 @@ Prophet](https://facebook.github.io/prophet/) shows that in the first half of
to around 2M we see created today, this is 10x growth our product might need to
sustain in upcoming years.
-![ci_builds daily forecast](ci_builds_daily_forecast.png)
+![CI builds daily forecast](ci_builds_daily_forecast.png)
### Queuing mechanisms are using the large table
@@ -101,7 +101,7 @@ want to process them.
This mechanism is very inefficient, and it has been causing problems on the
production environment frequently. This usually results in a significant drop
-of the CI/CD apdex score, and sometimes even causes a significant performance
+of the CI/CD Apdex score, and sometimes even causes a significant performance
degradation in the production environment.
There are multiple other strategies that can improve performance and
diff --git a/doc/ci/environments/index.md b/doc/ci/environments/index.md
index 06618a820db..8ed35bf8bfd 100644
--- a/doc/ci/environments/index.md
+++ b/doc/ci/environments/index.md
@@ -136,7 +136,7 @@ you can use tiers:
| Environment tier | Environment name examples |
|------------------|----------------------------------------------------|
| `production` | Production, Live |
-| `staging` | Staging, Model, Pre, Demo |
+| `staging` | Staging, Model, Demo |
| `testing` | Test, QC |
| `development` | Dev, [Review apps](../review_apps/index.md), Trunk |
| `other` | |
diff --git a/doc/development/database/pagination_guidelines.md b/doc/development/database/pagination_guidelines.md
index aa3915cd4b6..3308ebfcaae 100644
--- a/doc/development/database/pagination_guidelines.md
+++ b/doc/development/database/pagination_guidelines.md
@@ -41,7 +41,7 @@ With pagination, the data is split into equal pieces (pages). On the first visit
### Pick the right approach
-Let the database handle the pagination, filtering, and data retrieval. Implementing in-memory pagination on the backend (`paginate_array` from kaminari) or on the frontend (JavaScript) might work for a few hundreds of records. If application limits are not defined, things can get out of control quickly.
+Let the database handle the pagination, filtering, and data retrieval. Implementing in-memory pagination on the backend (`paginate_array` from Kaminari) or on the frontend (JavaScript) might work for a few hundreds of records. If application limits are not defined, things can get out of control quickly.
### Reduce complexity
@@ -78,7 +78,7 @@ Infinite scroll can use keyset pagination without affecting the user experience
### Offset pagination
-The most common way to paginate lists is using offset-based pagination (UI and REST API). It's backed by the popular [kaminari](https://github.com/kaminari/kaminari) Ruby gem, which provides convenient helper methods to implement pagination on ActiveRecord queries.
+The most common way to paginate lists is using offset-based pagination (UI and REST API). It's backed by the popular [Kaminari](https://github.com/kaminari/kaminari) Ruby gem, which provides convenient helper methods to implement pagination on ActiveRecord queries.
Offset-based pagination is leveraging the `LIMIT` and `OFFSET` SQL clauses to take out a specific slice from the table.
@@ -97,9 +97,9 @@ Notice that the query also orders the rows by the primary key (`id`). When pagin
Example pagination bar:
-![Page selector rendered by kaminari](../img/offset_pagination_ui_v13_11.jpg)
+![Page selector rendered by Kaminari](../img/offset_pagination_ui_v13_11.jpg)
-The kaminari gem renders a nice pagination bar on the UI with page numbers and optionally quick shortcuts the next, previous, first, and last page buttons. To render these buttons, kaminari needs to know the number of rows, and for that, a count query is executed.
+The Kaminari gem renders a nice pagination bar on the UI with page numbers and optionally quick shortcuts the next, previous, first, and last page buttons. To render these buttons, Kaminari needs to know the number of rows, and for that, a count query is executed.
```sql
SELECT COUNT(*) FROM issues WHERE project_id = 1
@@ -158,7 +158,7 @@ Here we're leveraging the ordered property of the b-tree database index. Values
Kaminari by default executes a count query to determine the number of pages for rendering the page links. Count queries can be quite expensive for a large table, in an unfortunate scenario the queries will simply time out.
-To work around this, we can run kaminari without invoking the count SQL query.
+To work around this, we can run Kaminari without invoking the count SQL query.
```ruby
Issue.where(project_id: 1).page(1).per(20).without_count
@@ -311,5 +311,5 @@ Using keyset pagination outside of GraphQL is not straightforward. We have the l
Keyset pagination provides stable performance regardless of the number of pages we moved forward. To achieve this performance, the paginated query needs an index that covers all the columns in the `ORDER BY` clause, similarly to the offset pagination.
### General performance guidelines
-
+
See the [pagination general performance guidelines page](pagination_performance_guidelines.md).
diff --git a/doc/development/i18n/translation.md b/doc/development/i18n/translation.md
index f3d02e180e7..e311df919b6 100644
--- a/doc/development/i18n/translation.md
+++ b/doc/development/i18n/translation.md
@@ -23,11 +23,11 @@ You may create a new account or use any of their supported sign in services.
GitLab is being translated into many languages.
1. Find the language that you want to contribute to, in our
- [GitLab Crowdin project](https://crowdin.com/project/gitlab-ee).
+ [GitLab CrowdIn project](https://crowdin.com/project/gitlab-ee).
- If the language that you're looking for is available, proceed
to the next step.
- If the language you are looking for is not available,
- [open an issue](https://gitlab.com/gitlab-org/gitlab/-/issues?scope=all&utf8=✓&state=all&label_name[]=Category%3AInternationalization). Notify our Crowdin
+ [open an issue](https://gitlab.com/gitlab-org/gitlab/-/issues?scope=all&utf8=✓&state=all&label_name[]=Category%3AInternationalization). Notify our CrowdIn
administrators by including `@gitlab-org/manage/import` in your issue.
- After the issue/Merge Request is complete, restart this procedure.
1. Next, you can view list of files and folders.
diff --git a/doc/development/testing_guide/best_practices.md b/doc/development/testing_guide/best_practices.md
index c3125f52cf2..41ec1fdfa02 100644
--- a/doc/development/testing_guide/best_practices.md
+++ b/doc/development/testing_guide/best_practices.md
@@ -851,6 +851,46 @@ using expectations, or dependency injection along with stubs, to avoid the need
for modifications. If you have no other choice, an `around` block like the global
variables example can be used, but avoid this if at all possible.
+#### Elasticsearch specs
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61171) in GitLab 14.0.
+
+Specs that require Elasticsearch must be marked with the `:elastic` trait. This
+creates and deletes indices between examples to ensure a clean index, so that there is no room
+for polluting the tests with nonessential data.
+Most tests for Elasticsearch logic relate to:
+
+- Creating data in Postgres and waiting for it to be indexed in Elasticsearch.
+- Searching for that data.
+- Ensuring that the test gives the expected result.
+
+There are some exceptions, such as checking for structural changes rather than individual records in an index.
+
+The `:elastic_with_delete_by_query` trait was added to reduce run time for pipelines by creating and deleting indices
+at the start and end of each context only. The [Elasticsearch DeleteByQuery API](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html)
+is used to delete data in all indices in between examples to ensure a clean index.
+
+Note that Elasticsearch indexing uses [`Gitlab::Redis::SharedState`](../../../ee/development/redis.md#gitlabrediscachesharedstatequeues).
+Therefore, it is recommended to use `:clean_gitlab_redis_shared_state` in conjunction with the Elasticsearch traits.
+
+Specs using Elasticsearch require that you:
+
+- Create data in Postgres and then index it into Elasticsearch.
+- Enable Application Settings for Elasticsearch (which is disabled by default).
+
+To do so, use:
+
+```ruby
+before do
+ stub_ee_application_setting(elasticsearch_search: true, elasticsearch_indexing: true)
+end
+```
+
+Additionally, you can use the `ensure_elasticsearch_index!` method to overcome the asynchronous nature of Elasticsearch.
+It uses the [Elasticsearch Refresh API](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html#refresh-api-desc)
+to make sure all operations performed on an index since the last refresh are available for search. This method is typically
+called after loading data into Postgres to ensure the data is indexed and searchable.
+
#### Test Snowplow events
WARNING:
diff --git a/doc/raketasks/backup_restore.md b/doc/raketasks/backup_restore.md
index 74e254d864e..fc1c7838fd5 100644
--- a/doc/raketasks/backup_restore.md
+++ b/doc/raketasks/backup_restore.md
@@ -63,6 +63,12 @@ including:
- Snippets
- Group wikis **(PREMIUM)**
+Backups do not include:
+
+- [Terraform state files](../administration/terraform_state.md)
+- [Package registry files](../administration/packages/index.md)
+- [Mattermost data](https://docs.mattermost.com/administration/config-settings.html#file-storage)
+
WARNING:
GitLab does not back up any configuration files, SSL certificates, or system
files. You are highly advised to read about [storing configuration files](#storing-configuration-files).
diff --git a/doc/user/admin_area/settings/floc.md b/doc/user/admin_area/settings/floc.md
new file mode 100644
index 00000000000..e1d10727341
--- /dev/null
+++ b/doc/user/admin_area/settings/floc.md
@@ -0,0 +1,40 @@
+---
+stage: none
+group: unassigned
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+---
+
+# Federated Learning of Cohorts (FLoC) **(FREE SELF)**
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60933) in GitLab Free 13.12.
+
+Federated Learning of Conhorts (FLoC) is a feature that the Chrome browser has
+rolled out, where users are categorized into different cohorts, so that
+advertisers can use this data to uniquely target and track users. For more
+information, visit the [FLoC repository](https://github.com/WICG/floc).
+
+To avoid users being tracked and categorized in any GitLab instance, FLoC is
+disabled by default by sending the following header:
+
+```plaintext
+Permissions-Policy: interest-cohort=()
+```
+
+To enable it:
+
+1. Go to the Admin Area (**{admin}**) and select **Settings > General**.
+1. Expand **Federated Learning of Cohorts**.
+1. Check the box.
+1. Click **Save changes**.
+
+<!-- ## Troubleshooting
+
+Include any troubleshooting steps that you can foresee. If you know beforehand what issues
+one might have when setting this up, or when something is changed, or on upgrading, it's
+important to describe those, too. Think of things that may go wrong and include them here.
+This is important to minimize requests for support, and to avoid doc comments with
+questions that you know someone might ask.
+
+Each scenario can be a third-level heading, e.g. `### Getting error message X`.
+If you have none to add when creating a doc, leave this section in place
+but commented out to help encourage others to add to it in the future. -->
diff --git a/doc/user/admin_area/settings/index.md b/doc/user/admin_area/settings/index.md
index a1f4c6a06e2..a66502d9466 100644
--- a/doc/user/admin_area/settings/index.md
+++ b/doc/user/admin_area/settings/index.md
@@ -28,6 +28,7 @@ Access the default page for admin area settings by navigating to **Admin Area >
| [External Authentication](external_authorization.md#configuration) | External Classification Policy Authorization |
| [Web terminal](../../../administration/integration/terminal.md#limiting-websocket-connection-time) | Set max session time for web terminal. |
| [Web IDE](../../project/web_ide/index.md#enabling-live-preview) | Manage Web IDE Features. |
+| [FLoC](floc.md) | Enable or disable [Federated Learning of Cohorts (FLoC)](https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts) tracking. |
## Integrations
diff --git a/doc/user/clusters/applications.md b/doc/user/clusters/applications.md
index 212823853e4..967d9b19709 100644
--- a/doc/user/clusters/applications.md
+++ b/doc/user/clusters/applications.md
@@ -25,6 +25,9 @@ learn how to proceed to keep your apps up and running:
- [One-click install method](#install-with-one-click-deprecated)
- [CI/CD template method](#install-using-gitlab-cicd-deprecated)
+NOTE:
+Despite being deprecated, the recommended way for installing GitLab integrated applications is by the GitLab CI/CD method presented below. We are working on a [cluster management project template](https://gitlab.com/gitlab-org/gitlab/-/issues/327908) with a simple upgrade path from the CI/CD based method.
+
## Install using GitLab CI/CD (DEPRECATED)
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/20822) in GitLab 12.6.
diff --git a/doc/user/project/wiki/index.md b/doc/user/project/wiki/index.md
index 22915efef94..51e306bf1fc 100644
--- a/doc/user/project/wiki/index.md
+++ b/doc/user/project/wiki/index.md
@@ -7,7 +7,7 @@ type: reference, how-to
# Wiki **(FREE)**
-If you don't want to keep your documentation in your repository, but you do want
+If you don't want to keep your documentation in your repository, but you want
to keep it in the same project as your code, you can use the wiki GitLab provides
in each GitLab project. Every wiki is a separate Git repository, so you can create
wiki pages in the web interface, or [locally using Git](#create-or-edit-wiki-pages-locally).
@@ -34,8 +34,8 @@ with sibling pages listed in alphabetical order. To view a list of all pages, se
When a wiki is created, it is empty. On your first visit, create the landing page
users see when viewing the wiki:
-1. Go to the page for your project or group.
-1. In the left sidebar, select **Wiki**, then **Create your first page**.
+1. Go to your project or group and select **Wiki**.
+1. Select **Create your first page**.
1. Select a **Format** for styling your text.
1. Add a welcome message in the **Content** section. You can always edit it later.
1. Add a **Commit message**. Git requires a commit message, so GitLab creates one
@@ -46,8 +46,7 @@ users see when viewing the wiki:
Users with Developer [permissions](../../permissions.md) can create new wiki pages:
-1. Go to the page for your project or group.
-1. In the left sidebar, select **Wiki**.
+1. Go to your project or group and select **Wiki**.
1. Select **New page** on this page, or any other wiki page.
1. Select a content format.
1. Add a title for your new page. Page titles use
@@ -111,8 +110,8 @@ may not be able to check out the wiki locally afterward.
You need Developer [permissions](../../permissions.md) or higher to edit a wiki page:
-1. Go to the page for your project or group.
-1. In the left sidebar, select **Wiki**, and go to the page you want to edit.
+1. Go to your project or group and select **Wiki**.
+1. Go to the page you want to edit.
1. Select the edit icon (**{pencil}**).
1. Edit the content.
1. Select **Save changes**.
@@ -126,8 +125,8 @@ For an example, read [Table of contents](../../markdown.md#table-of-contents).
You need Maintainer [permissions](../../permissions.md) or higher to delete a wiki page:
-1. Go to the page for your project or group.
-1. In the left sidebar, select **Wiki**, and go to the page you want to delete.
+1. Go to your project or group and select **Wiki**.
+1. Go to the page you want to delete.
1. Select **Delete page**.
1. Confirm the deletion.
@@ -135,8 +134,8 @@ You need Maintainer [permissions](../../permissions.md) or higher to delete a wi
You need Developer [permissions](../../permissions.md) or higher to move a wiki page:
-1. Go to the page for your project or group.
-1. In the left sidebar, select **Wiki**, and go to the page you want to move.
+1. Go to your project or group and select **Wiki**.
+1. Go to the page you want to move.
1. Select the edit icon (**{pencil}**).
1. Add the new path to the **Title** field. For example, if you have a wiki page
called `about` under `company` and you want to move it to the wiki's root,
@@ -164,8 +163,8 @@ From the history page you can see:
You can see the changes made in a version of a wiki page, similar to versioned diff file views:
-1. Go to the page for your project or group.
-1. In the left sidebar, select **Wiki**, and go to the wiki page you're interested in.
+1. Go to your project or group and select **Wiki**.
+1. Go to the wiki page you're interested in.
1. Select **Page history** to see all page versions.
1. Select the commit message in the **Changes** column for the version you're interested in.
@@ -192,8 +191,7 @@ You need Developer [permissions](../../permissions.md) or higher to customize th
navigation sidebar. This process creates a wiki page named `_sidebar` which fully
replaces the default sidebar navigation:
-1. Go to the page for your project or group.
-1. In the left sidebar, select **Wiki**.
+1. Go to your project or group and select **Wiki**.
1. In the top right corner of the page, select **Edit sidebar**.
1. When complete, select **Save changes**.
@@ -243,7 +241,7 @@ and above. Group wiki repositories can be moved using the
To add a link to an external wiki from a project's left sidebar:
-1. In your project, go to **Settings > Integrations**.
+1. Go to your project and select **Settings > Integrations**.
1. Select **External wiki**.
1. Add the URL to your external wiki.
1. (Optional) Select **Test settings** to verify the connection.
@@ -258,16 +256,16 @@ To hide the internal wiki from the sidebar, [disable the project's wiki](#disabl
To hide the link to an external wiki:
-1. In your project, go to **Settings > Integrations**.
+1. Go to your project and select **Settings > Integrations**.
1. Select **External wiki**.
-1. Unselect **Enable integration**.
+1. In the **Enable integration** section, clear the **Active** checkbox.
1. Select **Save changes**.
## Disable the project's wiki
To disable a project's internal wiki:
-1. In your project, go to **Settings > General**.
+1. Go to your project and select **Settings > General**.
1. Expand **Visibility, project features, permissions**.
1. Scroll down to find **Wiki** and toggle it off (in gray).
1. Select **Save changes**.