From fdcd423dfea2a6a0c468f2cf0c52a28775e478a1 Mon Sep 17 00:00:00 2001
From: Niko Smeds <nikosmeds@gmail.com>
Date: Mon, 8 Nov 2021 15:05:15 -0800
Subject: [PATCH 01/31] Increase time range for PrometheusHAGroupCrashlooping
 alert

Signed-off-by: Niko Smeds <nikosmeds@gmail.com>
---
 documentation/prometheus-mixin/alerts.libsonnet | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/documentation/prometheus-mixin/alerts.libsonnet b/documentation/prometheus-mixin/alerts.libsonnet
index baf2f2f0fd..7fec72b99a 100644
--- a/documentation/prometheus-mixin/alerts.libsonnet
+++ b/documentation/prometheus-mixin/alerts.libsonnet
@@ -391,7 +391,7 @@
                 and
                   ( 
                     count by (%(prometheusHAGroupLabels)s) (
-                      changes(process_start_time_seconds{%(prometheusSelector)s}[30m]) > 1
+                      changes(process_start_time_seconds{%(prometheusSelector)s}[1h]) > 1
                     ) 
                     / 
                     count by (%(prometheusHAGroupLabels)s) (
@@ -403,7 +403,7 @@
               or
               (
                 count by (%(prometheusHAGroupLabels)s) (
-                  changes(process_start_time_seconds{%(prometheusSelector)s}[30m]) > 4
+                  changes(process_start_time_seconds{%(prometheusSelector)s}[1h]) > 4
                 )
               /
                 count by (%(prometheusHAGroupLabels)s) (
@@ -418,7 +418,7 @@
             },
             annotations: {
               summary: 'More than half of the Prometheus instances within the same HA group are crashlooping.',
-              description: '{{ $value | humanizePercentage }} of Prometheus instances within the %(prometheusHAGroupName)s HA group have had at least 5 total restarts or 2 unclean restarts in the last 30m.' % $._config,
+              description: '{{ $value | humanizePercentage }} of Prometheus instances within the %(prometheusHAGroupName)s HA group have had at least 5 total restarts or 2 unclean restarts in the last 1h.' % $._config,
             },
           },
         ],

From 0bc2cbdd7d431a9880284ea14890b4d2d6b9d89b Mon Sep 17 00:00:00 2001
From: Niko Smeds <nikosmeds@gmail.com>
Date: Wed, 17 Nov 2021 15:09:47 -0800
Subject: [PATCH 02/31] Leave time range for clean restarts as-is

Signed-off-by: Niko Smeds <nikosmeds@gmail.com>
---
 documentation/prometheus-mixin/alerts.libsonnet | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/documentation/prometheus-mixin/alerts.libsonnet b/documentation/prometheus-mixin/alerts.libsonnet
index 7fec72b99a..77e0f6ce9a 100644
--- a/documentation/prometheus-mixin/alerts.libsonnet
+++ b/documentation/prometheus-mixin/alerts.libsonnet
@@ -403,7 +403,7 @@
               or
               (
                 count by (%(prometheusHAGroupLabels)s) (
-                  changes(process_start_time_seconds{%(prometheusSelector)s}[1h]) > 4
+                  changes(process_start_time_seconds{%(prometheusSelector)s}[30m]) > 4
                 )
               /
                 count by (%(prometheusHAGroupLabels)s) (
@@ -418,7 +418,7 @@
             },
             annotations: {
               summary: 'More than half of the Prometheus instances within the same HA group are crashlooping.',
-              description: '{{ $value | humanizePercentage }} of Prometheus instances within the %(prometheusHAGroupName)s HA group have had at least 5 total restarts or 2 unclean restarts in the last 1h.' % $._config,
+              description: '{{ $value | humanizePercentage }} of Prometheus instances within the %(prometheusHAGroupName)s HA group have had at least 5 recent total restarts or 2 recent unclean restarts.' % $._config,
             },
           },
         ],

From 53ca693f9e47adc33aba71a4fd2f4948655bb90e Mon Sep 17 00:00:00 2001
From: Niko Smeds <nikosmeds@gmail.com>
Date: Thu, 18 Nov 2021 11:28:38 -0800
Subject: [PATCH 03/31] Be specific

Signed-off-by: Niko Smeds <nikosmeds@gmail.com>
---
 documentation/prometheus-mixin/alerts.libsonnet | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/documentation/prometheus-mixin/alerts.libsonnet b/documentation/prometheus-mixin/alerts.libsonnet
index 77e0f6ce9a..0f9b4b3d62 100644
--- a/documentation/prometheus-mixin/alerts.libsonnet
+++ b/documentation/prometheus-mixin/alerts.libsonnet
@@ -418,7 +418,7 @@
             },
             annotations: {
               summary: 'More than half of the Prometheus instances within the same HA group are crashlooping.',
-              description: '{{ $value | humanizePercentage }} of Prometheus instances within the %(prometheusHAGroupName)s HA group have had at least 5 recent total restarts or 2 recent unclean restarts.' % $._config,
+              description: '{{ $value | humanizePercentage }} of Prometheus instances within the %(prometheusHAGroupName)s HA group have had at least 5 total restarts in the last 30m or 2 unclean restarts in the last 1h.' % $._config,
             },
           },
         ],

From 39cc75741f4c783299e1490688ef89d3ee5a8d6c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 19 Nov 2021 12:14:02 +0100
Subject: [PATCH 04/31] build(deps): bump k8s.io/api from 0.22.3 to 0.22.4
 (#9819)

Bumps [k8s.io/api](https://github.com/kubernetes/api) from 0.22.3 to 0.22.4.
- [Release notes](https://github.com/kubernetes/api/releases)
- [Commits](https://github.com/kubernetes/api/compare/v0.22.3...v0.22.4)

---
updated-dependencies:
- dependency-name: k8s.io/api
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 go.mod | 4 ++--
 go.sum | 9 ++++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/go.mod b/go.mod
index 6413d2ada4..a95a4b8204 100644
--- a/go.mod
+++ b/go.mod
@@ -71,8 +71,8 @@ require (
 	gopkg.in/alecthomas/kingpin.v2 v2.2.6
 	gopkg.in/yaml.v2 v2.4.0
 	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
-	k8s.io/api v0.22.3
-	k8s.io/apimachinery v0.22.3
+	k8s.io/api v0.22.4
+	k8s.io/apimachinery v0.22.4
 	k8s.io/client-go v0.22.3
 	k8s.io/klog v1.0.0
 	k8s.io/klog/v2 v2.20.0
diff --git a/go.sum b/go.sum
index c1e15b89b8..50d00858b3 100644
--- a/go.sum
+++ b/go.sum
@@ -2006,14 +2006,16 @@ k8s.io/api v0.17.5/go.mod h1:0zV5/ungglgy2Rlm3QK8fbxkXVs+BSJWpJP/+8gUVLY=
 k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo=
 k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ=
 k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8=
-k8s.io/api v0.22.3 h1:wOoES2GoSkUsdped2RB4zYypPqWtvprGoKCENTOOjP4=
 k8s.io/api v0.22.3/go.mod h1:azgiXFiXqiWyLCfI62/eYBOu19rj2LKmIhFPP4+33fs=
+k8s.io/api v0.22.4 h1:UvyHW0ezB2oIgHAxlYoo6UJQObYXU7awuNarwoHEOjw=
+k8s.io/api v0.22.4/go.mod h1:Rgs+9gIGYC5laXQSZZ9JqT5NevNgoGiOdVWi1BAB3qk=
 k8s.io/apimachinery v0.17.5/go.mod h1:ioIo1G/a+uONV7Tv+ZmCbMG1/a3kVw5YcDdncd8ugQ0=
 k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
 k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
 k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc=
-k8s.io/apimachinery v0.22.3 h1:mrvBG5CZnEfwgpVqWcrRKvdsYECTrhAR6cApAgdsflk=
 k8s.io/apimachinery v0.22.3/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0=
+k8s.io/apimachinery v0.22.4 h1:9uwcvPpukBw/Ri0EUmWz+49cnFtaoiyEhQTK+xOe7Ck=
+k8s.io/apimachinery v0.22.4/go.mod h1:yU6oA6Gnax9RrxGzVvPFFJ+mpnW6PBSqp0sx0I0HHW0=
 k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU=
 k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM=
 k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q=
@@ -2034,8 +2036,9 @@ k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8
 k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
 k8s.io/kube-openapi v0.0.0-20200316234421-82d701f24f9d/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU=
 k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM=
-k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e h1:KLHHjkdQFomZy8+06csTWZ0m1343QqxZhR2LJ1OxCYM=
 k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
+k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c h1:jvamsI1tn9V0S8jicyX82qaFC0H/NKxv2e5mbqsgR80=
+k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
 k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk=
 k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
 k8s.io/utils v0.0.0-20200414100711-2df71ebbae66/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=

From 2cd1669d36bc595a0e641286982a3fdc7564683d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 19 Nov 2021 12:18:52 +0100
Subject: [PATCH 05/31] build(deps-dev): bump @types/jest from 27.0.2 to 27.0.3
 in /web/ui (#9821)

Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 27.0.2 to 27.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

---
updated-dependencies:
- dependency-name: "@types/jest"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 web/ui/package-lock.json      | 16 ++++++++--------
 web/ui/react-app/package.json |  2 +-
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json
index 8905a70bad..9756fb2409 100644
--- a/web/ui/package-lock.json
+++ b/web/ui/package-lock.json
@@ -1698,9 +1698,9 @@
       }
     },
     "node_modules/@types/jest": {
-      "version": "27.0.2",
-      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz",
-      "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==",
+      "version": "27.0.3",
+      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz",
+      "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==",
       "dev": true,
       "dependencies": {
         "jest-diff": "^27.0.0",
@@ -7115,7 +7115,7 @@
         "@testing-library/react-hooks": "^7.0.1",
         "@types/enzyme": "^3.10.10",
         "@types/flot": "0.0.32",
-        "@types/jest": "^27.0.2",
+        "@types/jest": "^27.0.3",
         "@types/jquery": "^3.5.8",
         "@types/node": "^16.11.7",
         "@types/react": "^17.0.35",
@@ -27742,9 +27742,9 @@
       }
     },
     "@types/jest": {
-      "version": "27.0.2",
-      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz",
-      "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==",
+      "version": "27.0.3",
+      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz",
+      "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==",
       "dev": true,
       "requires": {
         "jest-diff": "^27.0.0",
@@ -29602,7 +29602,7 @@
         "@testing-library/react-hooks": "^7.0.1",
         "@types/enzyme": "^3.10.10",
         "@types/flot": "0.0.32",
-        "@types/jest": "^27.0.2",
+        "@types/jest": "^27.0.3",
         "@types/jquery": "^3.5.8",
         "@types/node": "^16.11.7",
         "@types/react": "^17.0.35",
diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json
index 794e340b2f..38ef8bb935 100644
--- a/web/ui/react-app/package.json
+++ b/web/ui/react-app/package.json
@@ -67,7 +67,7 @@
     "@testing-library/react-hooks": "^7.0.1",
     "@types/enzyme": "^3.10.10",
     "@types/flot": "0.0.32",
-    "@types/jest": "^27.0.2",
+    "@types/jest": "^27.0.3",
     "@types/jquery": "^3.5.8",
     "@types/node": "^16.11.7",
     "@types/react": "^17.0.35",

From 0bfc542a43ae4c8b6ec0b057776100b6fcf99461 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 19 Nov 2021 12:19:06 +0100
Subject: [PATCH 06/31] build(deps): bump github.com/aws/aws-sdk-go from 1.42.6
 to 1.42.8 (#9820)

Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.42.6 to 1.42.8.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Changelog](https://github.com/aws/aws-sdk-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.42.6...v1.42.8)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 go.mod | 2 +-
 go.sum | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/go.mod b/go.mod
index a95a4b8204..9e19f4b1dd 100644
--- a/go.mod
+++ b/go.mod
@@ -9,7 +9,7 @@ require (
 	github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
 	github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
 	github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a
-	github.com/aws/aws-sdk-go v1.42.6
+	github.com/aws/aws-sdk-go v1.42.8
 	github.com/cespare/xxhash/v2 v2.1.2
 	github.com/containerd/containerd v1.5.7 // indirect
 	github.com/dennwc/varint v1.0.0
diff --git a/go.sum b/go.sum
index 50d00858b3..bb5839fc77 100644
--- a/go.sum
+++ b/go.sum
@@ -187,8 +187,8 @@ github.com/aws/aws-sdk-go v1.30.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZve
 github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48=
 github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
 github.com/aws/aws-sdk-go v1.40.11/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
-github.com/aws/aws-sdk-go v1.42.6 h1:CiJmv8Fdc7wLZhfWy1ZA9TNoOQrFtUC0mhpgyJTaKOs=
-github.com/aws/aws-sdk-go v1.42.6/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
+github.com/aws/aws-sdk-go v1.42.8 h1:Tj2RP4Fas1mYchwbmw0qWLJIEATAseyp5iTa1D+LWYQ=
+github.com/aws/aws-sdk-go v1.42.8/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
 github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
 github.com/benbjohnson/immutable v0.2.1/go.mod h1:uc6OHo6PN2++n98KHLxW8ef4W42ylHiQSENghE1ezxI=
 github.com/benbjohnson/tmpl v1.0.0/go.mod h1:igT620JFIi44B6awvU9IsDhR77IXWtFigTLil/RPdps=

From 692a54649ed7b5958f180852cc218aede3a35e83 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 19 Nov 2021 12:54:33 +0100
Subject: [PATCH 07/31] build(deps): bump @fortawesome/react-fontawesome from
 0.1.15 to 0.1.16 in /web/ui (#9812)

* build(deps): bump @fortawesome/react-fontawesome in /web/ui

Bumps [@fortawesome/react-fontawesome](https://github.com/FortAwesome/react-fontawesome) from 0.1.15 to 0.1.16.
- [Release notes](https://github.com/FortAwesome/react-fontawesome/releases)
- [Changelog](https://github.com/FortAwesome/react-fontawesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/react-fontawesome/compare/0.1.15...0.1.16)

---
updated-dependencies:
- dependency-name: "@fortawesome/react-fontawesome"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* update package-lock.json

Signed-off-by: Augustin Husson <husson.augustin@gmail.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Augustin Husson <husson.augustin@gmail.com>
---
 web/ui/package-lock.json      | 103 ++++++++++++++++++----------------
 web/ui/react-app/package.json |   2 +-
 2 files changed, 57 insertions(+), 48 deletions(-)

diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json
index 9756fb2409..ac60bc6381 100644
--- a/web/ui/package-lock.json
+++ b/web/ui/package-lock.json
@@ -1406,6 +1406,39 @@
         "node": "^10.12.0 || >=12.0.0"
       }
     },
+    "node_modules/@fortawesome/fontawesome-common-types": {
+      "version": "0.2.36",
+      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz",
+      "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==",
+      "hasInstallScript": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@fortawesome/fontawesome-svg-core": {
+      "version": "1.2.36",
+      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz",
+      "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==",
+      "hasInstallScript": true,
+      "dependencies": {
+        "@fortawesome/fontawesome-common-types": "^0.2.36"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@fortawesome/react-fontawesome": {
+      "version": "0.1.16",
+      "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.16.tgz",
+      "integrity": "sha512-aLmzDwC9rEOAJv2UJdMns89VZR5Ry4IHu5dQQh24Z/lWKEm44lfQr1UNalZlkUaQN8d155tNh+CS7ntntj1VMA==",
+      "dependencies": {
+        "prop-types": "^15.7.2"
+      },
+      "peerDependencies": {
+        "@fortawesome/fontawesome-svg-core": "~1 || >=1.3.0-beta1",
+        "react": ">=16.x"
+      }
+    },
     "node_modules/@humanwhocodes/config-array": {
       "version": "0.5.0",
       "dev": true,
@@ -7087,7 +7120,7 @@
         "@forevolve/bootstrap-dark": "^1.0.0",
         "@fortawesome/fontawesome-svg-core": "^1.2.14",
         "@fortawesome/free-solid-svg-icons": "^5.7.1",
-        "@fortawesome/react-fontawesome": "^0.1.4",
+        "@fortawesome/react-fontawesome": "^0.1.16",
         "@nexucis/fuzzy": "^0.3.0",
         "bootstrap": "^5.1.3",
         "codemirror-promql": "0.18.0",
@@ -8523,25 +8556,6 @@
         "popper.js": "^1.16.1"
       }
     },
-    "react-app/node_modules/@fortawesome/fontawesome-common-types": {
-      "version": "0.2.36",
-      "hasInstallScript": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "react-app/node_modules/@fortawesome/fontawesome-svg-core": {
-      "version": "1.2.36",
-      "hasInstallScript": true,
-      "license": "MIT",
-      "dependencies": {
-        "@fortawesome/fontawesome-common-types": "^0.2.36"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "react-app/node_modules/@fortawesome/free-solid-svg-icons": {
       "version": "5.15.4",
       "hasInstallScript": true,
@@ -8553,17 +8567,6 @@
         "node": ">=6"
       }
     },
-    "react-app/node_modules/@fortawesome/react-fontawesome": {
-      "version": "0.1.15",
-      "license": "MIT",
-      "dependencies": {
-        "prop-types": "^15.7.2"
-      },
-      "peerDependencies": {
-        "@fortawesome/fontawesome-svg-core": "^1.2.32",
-        "react": ">=16.x"
-      }
-    },
     "react-app/node_modules/@gar/promisify": {
       "version": "1.1.2",
       "dev": true,
@@ -27524,6 +27527,27 @@
         "strip-json-comments": "^3.1.1"
       }
     },
+    "@fortawesome/fontawesome-common-types": {
+      "version": "0.2.36",
+      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz",
+      "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg=="
+    },
+    "@fortawesome/fontawesome-svg-core": {
+      "version": "1.2.36",
+      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz",
+      "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==",
+      "requires": {
+        "@fortawesome/fontawesome-common-types": "^0.2.36"
+      }
+    },
+    "@fortawesome/react-fontawesome": {
+      "version": "0.1.16",
+      "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.16.tgz",
+      "integrity": "sha512-aLmzDwC9rEOAJv2UJdMns89VZR5Ry4IHu5dQQh24Z/lWKEm44lfQr1UNalZlkUaQN8d155tNh+CS7ntntj1VMA==",
+      "requires": {
+        "prop-types": "^15.7.2"
+      }
+    },
     "@humanwhocodes/config-array": {
       "version": "0.5.0",
       "dev": true,
@@ -29597,7 +29621,7 @@
         "@forevolve/bootstrap-dark": "^1.0.0",
         "@fortawesome/fontawesome-svg-core": "^1.2.14",
         "@fortawesome/free-solid-svg-icons": "^5.7.1",
-        "@fortawesome/react-fontawesome": "^0.1.4",
+        "@fortawesome/react-fontawesome": "^0.1.16",
         "@nexucis/fuzzy": "^0.3.0",
         "@testing-library/react-hooks": "^7.0.1",
         "@types/enzyme": "^3.10.10",
@@ -30471,27 +30495,12 @@
             "popper.js": "^1.16.1"
           }
         },
-        "@fortawesome/fontawesome-common-types": {
-          "version": "0.2.36"
-        },
-        "@fortawesome/fontawesome-svg-core": {
-          "version": "1.2.36",
-          "requires": {
-            "@fortawesome/fontawesome-common-types": "^0.2.36"
-          }
-        },
         "@fortawesome/free-solid-svg-icons": {
           "version": "5.15.4",
           "requires": {
             "@fortawesome/fontawesome-common-types": "^0.2.36"
           }
         },
-        "@fortawesome/react-fontawesome": {
-          "version": "0.1.15",
-          "requires": {
-            "prop-types": "^15.7.2"
-          }
-        },
         "@gar/promisify": {
           "version": "1.1.2",
           "dev": true
diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json
index 38ef8bb935..4b5224800c 100644
--- a/web/ui/react-app/package.json
+++ b/web/ui/react-app/package.json
@@ -18,7 +18,7 @@
     "@forevolve/bootstrap-dark": "^1.0.0",
     "@fortawesome/fontawesome-svg-core": "^1.2.14",
     "@fortawesome/free-solid-svg-icons": "^5.7.1",
-    "@fortawesome/react-fontawesome": "^0.1.4",
+    "@fortawesome/react-fontawesome": "^0.1.16",
     "@nexucis/fuzzy": "^0.3.0",
     "bootstrap": "^5.1.3",
     "codemirror-promql": "0.18.0",

From 128ab7a3760392d71bb4f2b874149512bba6d1a1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 19 Nov 2021 13:33:26 +0100
Subject: [PATCH 08/31] build(deps): bump k8s.io/client-go from 0.22.3 to
 0.22.4 (#9818)

Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.22.3 to 0.22.4.
- [Release notes](https://github.com/kubernetes/client-go/releases)
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.22.3...v0.22.4)

---
updated-dependencies:
- dependency-name: k8s.io/client-go
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 go.mod | 2 +-
 go.sum | 7 ++-----
 2 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/go.mod b/go.mod
index 9e19f4b1dd..cc4a10dda6 100644
--- a/go.mod
+++ b/go.mod
@@ -73,7 +73,7 @@ require (
 	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
 	k8s.io/api v0.22.4
 	k8s.io/apimachinery v0.22.4
-	k8s.io/client-go v0.22.3
+	k8s.io/client-go v0.22.4
 	k8s.io/klog v1.0.0
 	k8s.io/klog/v2 v2.20.0
 )
diff --git a/go.sum b/go.sum
index bb5839fc77..279d965895 100644
--- a/go.sum
+++ b/go.sum
@@ -2006,14 +2006,12 @@ k8s.io/api v0.17.5/go.mod h1:0zV5/ungglgy2Rlm3QK8fbxkXVs+BSJWpJP/+8gUVLY=
 k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo=
 k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ=
 k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8=
-k8s.io/api v0.22.3/go.mod h1:azgiXFiXqiWyLCfI62/eYBOu19rj2LKmIhFPP4+33fs=
 k8s.io/api v0.22.4 h1:UvyHW0ezB2oIgHAxlYoo6UJQObYXU7awuNarwoHEOjw=
 k8s.io/api v0.22.4/go.mod h1:Rgs+9gIGYC5laXQSZZ9JqT5NevNgoGiOdVWi1BAB3qk=
 k8s.io/apimachinery v0.17.5/go.mod h1:ioIo1G/a+uONV7Tv+ZmCbMG1/a3kVw5YcDdncd8ugQ0=
 k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
 k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
 k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc=
-k8s.io/apimachinery v0.22.3/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0=
 k8s.io/apimachinery v0.22.4 h1:9uwcvPpukBw/Ri0EUmWz+49cnFtaoiyEhQTK+xOe7Ck=
 k8s.io/apimachinery v0.22.4/go.mod h1:yU6oA6Gnax9RrxGzVvPFFJ+mpnW6PBSqp0sx0I0HHW0=
 k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU=
@@ -2023,8 +2021,8 @@ k8s.io/client-go v0.17.5/go.mod h1:S8uZpBpjJJdEH/fEyxcqg7Rn0P5jH+ilkgBHjriSmNo=
 k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y=
 k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k=
 k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0=
-k8s.io/client-go v0.22.3 h1:6onkOSc+YNdwq5zXE0wFXicq64rrym+mXwHu/CPVGO4=
-k8s.io/client-go v0.22.3/go.mod h1:ElDjYf8gvZsKDYexmsmnMQ0DYO8W9RwBjfQ1PI53yow=
+k8s.io/client-go v0.22.4 h1:aAQ1Wk+I3bjCNk35YWUqbaueqrIonkfDPJSPDDe8Kfg=
+k8s.io/client-go v0.22.4/go.mod h1:Yzw4e5e7h1LNHA4uqnMVrpEpUs1hJOiuBsJKIlRCHDA=
 k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk=
 k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI=
 k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM=
@@ -2036,7 +2034,6 @@ k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8
 k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
 k8s.io/kube-openapi v0.0.0-20200316234421-82d701f24f9d/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU=
 k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM=
-k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
 k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c h1:jvamsI1tn9V0S8jicyX82qaFC0H/NKxv2e5mbqsgR80=
 k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
 k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk=

From 25eb35babdd8e9be9c0ade47c34fc90da0fbad3f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 19 Nov 2021 14:23:19 +0100
Subject: [PATCH 09/31] build(deps-dev): bump sinon from 11.1.2 to 12.0.1 in
 /web/ui (#9808)

* build(deps-dev): bump sinon from 11.1.2 to 12.0.1 in /web/ui

Bumps [sinon](https://github.com/sinonjs/sinon) from 11.1.2 to 12.0.1.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v11.1.2...v12.0.1)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* update package-lock.json

Signed-off-by: Augustin Husson <husson.augustin@gmail.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Augustin Husson <husson.augustin@gmail.com>
---
 web/ui/package-lock.json      | 338 +++++++++++++++++-----------------
 web/ui/react-app/package.json |   2 +-
 2 files changed, 167 insertions(+), 173 deletions(-)

diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json
index ac60bc6381..95111c30bd 100644
--- a/web/ui/package-lock.json
+++ b/web/ui/package-lock.json
@@ -1639,6 +1639,23 @@
         "@sinonjs/commons": "^1.7.0"
       }
     },
+    "node_modules/@sinonjs/samsam": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.0.2.tgz",
+      "integrity": "sha512-jxPRPp9n93ci7b8hMfJOFDPRLFYadN6FSpeROFTR4UNF4i5b+EK6m4QXPO46BDhFgRy1JuS87zAnFOzCUwMJcQ==",
+      "dev": true,
+      "dependencies": {
+        "@sinonjs/commons": "^1.6.0",
+        "lodash.get": "^4.4.2",
+        "type-detect": "^4.0.8"
+      }
+    },
+    "node_modules/@sinonjs/text-encoding": {
+      "version": "0.7.1",
+      "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
+      "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
+      "dev": true
+    },
     "node_modules/@tootallnate/once": {
       "version": "1.1.2",
       "dev": true,
@@ -4637,6 +4654,12 @@
         "node": ">=6"
       }
     },
+    "node_modules/just-extend": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
+      "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
+      "dev": true
+    },
     "node_modules/levn": {
       "version": "0.4.1",
       "dev": true,
@@ -4710,6 +4733,12 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/lodash.get": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+      "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+      "dev": true
+    },
     "node_modules/lodash.isequal": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
@@ -5105,6 +5134,19 @@
         "url": "https://nearley.js.org/#give-to-nearley"
       }
     },
+    "node_modules/nise": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.0.tgz",
+      "integrity": "sha512-W5WlHu+wvo3PaKLsJJkgPup2LrsXCcm7AWwyNZkUnn5rwPkuPBi3Iwk5SQtN0mv+K65k7nKKjwNQ30wg3wLAQQ==",
+      "dev": true,
+      "dependencies": {
+        "@sinonjs/commons": "^1.7.0",
+        "@sinonjs/fake-timers": "^7.0.4",
+        "@sinonjs/text-encoding": "^0.7.1",
+        "just-extend": "^4.0.2",
+        "path-to-regexp": "^1.7.0"
+      }
+    },
     "node_modules/nock": {
       "version": "13.1.3",
       "dev": true,
@@ -5594,6 +5636,19 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/path-to-regexp": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+      "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
+      "dependencies": {
+        "isarray": "0.0.1"
+      }
+    },
+    "node_modules/path-to-regexp/node_modules/isarray": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+    },
     "node_modules/path-type": {
       "version": "4.0.0",
       "dev": true,
@@ -6169,6 +6224,33 @@
       "dev": true,
       "license": "ISC"
     },
+    "node_modules/sinon": {
+      "version": "12.0.1",
+      "resolved": "https://registry.npmjs.org/sinon/-/sinon-12.0.1.tgz",
+      "integrity": "sha512-iGu29Xhym33ydkAT+aNQFBINakjq69kKO6ByPvTsm3yyIACfyQttRTP03aBP/I8GfhFmLzrnKwNNkr0ORb1udg==",
+      "dev": true,
+      "dependencies": {
+        "@sinonjs/commons": "^1.8.3",
+        "@sinonjs/fake-timers": "^8.1.0",
+        "@sinonjs/samsam": "^6.0.2",
+        "diff": "^5.0.0",
+        "nise": "^5.1.0",
+        "supports-color": "^7.2.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/sinon"
+      }
+    },
+    "node_modules/sinon/node_modules/@sinonjs/fake-timers": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+      "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+      "dev": true,
+      "dependencies": {
+        "@sinonjs/commons": "^1.7.0"
+      }
+    },
     "node_modules/slash": {
       "version": "3.0.0",
       "dev": true,
@@ -7169,7 +7251,7 @@
         "mutationobserver-shim": "^0.3.7",
         "prettier": "^2.4.1",
         "react-scripts": "4.0.3",
-        "sinon": "^11.1.2",
+        "sinon": "^12.0.1",
         "typescript": "^4.5.2"
       },
       "optionalDependencies": {
@@ -9944,21 +10026,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "react-app/node_modules/@sinonjs/samsam": {
-      "version": "6.0.2",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@sinonjs/commons": "^1.6.0",
-        "lodash.get": "^4.4.2",
-        "type-detect": "^4.0.8"
-      }
-    },
-    "react-app/node_modules/@sinonjs/text-encoding": {
-      "version": "0.7.1",
-      "dev": true,
-      "license": "(Unlicense OR Apache-2.0)"
-    },
     "react-app/node_modules/@surma/rollup-plugin-off-main-thread": {
       "version": "1.4.2",
       "dev": true,
@@ -11804,11 +11871,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "react-app/node_modules/buffer/node_modules/isarray": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
     "react-app/node_modules/builtin-modules": {
       "version": "3.2.0",
       "dev": true,
@@ -15873,10 +15935,6 @@
         "node": ">=8"
       }
     },
-    "react-app/node_modules/isarray": {
-      "version": "0.0.1",
-      "license": "MIT"
-    },
     "react-app/node_modules/isobject": {
       "version": "3.0.1",
       "dev": true,
@@ -19287,11 +19345,6 @@
         "node": ">=4.0"
       }
     },
-    "react-app/node_modules/just-extend": {
-      "version": "4.2.1",
-      "dev": true,
-      "license": "MIT"
-    },
     "react-app/node_modules/killable": {
       "version": "1.0.1",
       "dev": true,
@@ -19382,11 +19435,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "react-app/node_modules/lodash.get": {
-      "version": "4.4.2",
-      "dev": true,
-      "license": "MIT"
-    },
     "react-app/node_modules/lodash.memoize": {
       "version": "4.1.2",
       "dev": true,
@@ -19889,18 +19937,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "react-app/node_modules/nise": {
-      "version": "5.1.0",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@sinonjs/commons": "^1.7.0",
-        "@sinonjs/fake-timers": "^7.0.4",
-        "@sinonjs/text-encoding": "^0.7.1",
-        "just-extend": "^4.0.2",
-        "path-to-regexp": "^1.7.0"
-      }
-    },
     "react-app/node_modules/no-case": {
       "version": "3.0.4",
       "dev": true,
@@ -20381,13 +20417,6 @@
       "dev": true,
       "license": "(WTFPL OR MIT)"
     },
-    "react-app/node_modules/path-to-regexp": {
-      "version": "1.8.0",
-      "license": "MIT",
-      "dependencies": {
-        "isarray": "0.0.1"
-      }
-    },
     "react-app/node_modules/pbkdf2": {
       "version": "3.1.2",
       "dev": true,
@@ -23428,42 +23457,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "react-app/node_modules/sinon": {
-      "version": "11.1.2",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@sinonjs/commons": "^1.8.3",
-        "@sinonjs/fake-timers": "^7.1.2",
-        "@sinonjs/samsam": "^6.0.2",
-        "diff": "^5.0.0",
-        "nise": "^5.1.0",
-        "supports-color": "^7.2.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/sinon"
-      }
-    },
-    "react-app/node_modules/sinon/node_modules/has-flag": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "react-app/node_modules/sinon/node_modules/supports-color": {
-      "version": "7.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "react-app/node_modules/sisteransi": {
       "version": "1.0.5",
       "dev": true,
@@ -24928,11 +24921,6 @@
         "node": ">=0.10.0"
       }
     },
-    "react-app/node_modules/unset-value/node_modules/isarray": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
     "react-app/node_modules/upath": {
       "version": "1.2.0",
       "dev": true,
@@ -27683,6 +27671,23 @@
         "@sinonjs/commons": "^1.7.0"
       }
     },
+    "@sinonjs/samsam": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.0.2.tgz",
+      "integrity": "sha512-jxPRPp9n93ci7b8hMfJOFDPRLFYadN6FSpeROFTR4UNF4i5b+EK6m4QXPO46BDhFgRy1JuS87zAnFOzCUwMJcQ==",
+      "dev": true,
+      "requires": {
+        "@sinonjs/commons": "^1.6.0",
+        "lodash.get": "^4.4.2",
+        "type-detect": "^4.0.8"
+      }
+    },
+    "@sinonjs/text-encoding": {
+      "version": "0.7.1",
+      "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
+      "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
+      "dev": true
+    },
     "@tootallnate/once": {
       "version": "1.1.2",
       "dev": true
@@ -29667,7 +29672,7 @@
         "reactstrap": "^8.9.0",
         "sanitize-html": "^2.5.3",
         "sass": "1.43.4",
-        "sinon": "^11.1.2",
+        "sinon": "^12.0.1",
         "tempusdominus-bootstrap-4": "^5.1.2",
         "tempusdominus-core": "^5.0.3",
         "typescript": "^4.5.2"
@@ -31414,19 +31419,6 @@
             }
           }
         },
-        "@sinonjs/samsam": {
-          "version": "6.0.2",
-          "dev": true,
-          "requires": {
-            "@sinonjs/commons": "^1.6.0",
-            "lodash.get": "^4.4.2",
-            "type-detect": "^4.0.8"
-          }
-        },
-        "@sinonjs/text-encoding": {
-          "version": "0.7.1",
-          "dev": true
-        },
         "@surma/rollup-plugin-off-main-thread": {
           "version": "1.4.2",
           "dev": true,
@@ -32729,12 +32721,6 @@
             "base64-js": "^1.0.2",
             "ieee754": "^1.1.4",
             "isarray": "^1.0.0"
-          },
-          "dependencies": {
-            "isarray": {
-              "version": "1.0.0",
-              "dev": true
-            }
           }
         },
         "buffer-indexof": {
@@ -35515,9 +35501,6 @@
             "is-docker": "^2.0.0"
           }
         },
-        "isarray": {
-          "version": "0.0.1"
-        },
         "isobject": {
           "version": "3.0.1",
           "dev": true
@@ -37780,10 +37763,6 @@
             "object.assign": "^4.1.2"
           }
         },
-        "just-extend": {
-          "version": "4.2.1",
-          "dev": true
-        },
         "killable": {
           "version": "1.0.1",
           "dev": true
@@ -37844,10 +37823,6 @@
           "version": "3.0.0",
           "dev": true
         },
-        "lodash.get": {
-          "version": "4.4.2",
-          "dev": true
-        },
         "lodash.memoize": {
           "version": "4.1.2",
           "dev": true
@@ -38201,17 +38176,6 @@
           "version": "1.0.5",
           "dev": true
         },
-        "nise": {
-          "version": "5.1.0",
-          "dev": true,
-          "requires": {
-            "@sinonjs/commons": "^1.7.0",
-            "@sinonjs/fake-timers": "^7.0.4",
-            "@sinonjs/text-encoding": "^0.7.1",
-            "just-extend": "^4.0.2",
-            "path-to-regexp": "^1.7.0"
-          }
-        },
         "no-case": {
           "version": "3.0.4",
           "dev": true,
@@ -38544,12 +38508,6 @@
           "version": "1.0.2",
           "dev": true
         },
-        "path-to-regexp": {
-          "version": "1.8.0",
-          "requires": {
-            "isarray": "0.0.1"
-          }
-        },
         "pbkdf2": {
           "version": "3.1.2",
           "dev": true,
@@ -40729,31 +40687,6 @@
             }
           }
         },
-        "sinon": {
-          "version": "11.1.2",
-          "dev": true,
-          "requires": {
-            "@sinonjs/commons": "^1.8.3",
-            "@sinonjs/fake-timers": "^7.1.2",
-            "@sinonjs/samsam": "^6.0.2",
-            "diff": "^5.0.0",
-            "nise": "^5.1.0",
-            "supports-color": "^7.2.0"
-          },
-          "dependencies": {
-            "has-flag": {
-              "version": "4.0.0",
-              "dev": true
-            },
-            "supports-color": {
-              "version": "7.2.0",
-              "dev": true,
-              "requires": {
-                "has-flag": "^4.0.0"
-              }
-            }
-          }
-        },
         "sisteransi": {
           "version": "1.0.5",
           "dev": true
@@ -41756,10 +41689,6 @@
             "has-values": {
               "version": "0.1.4",
               "dev": true
-            },
-            "isarray": {
-              "version": "1.0.0",
-              "dev": true
             }
           }
         },
@@ -43642,6 +43571,12 @@
         "minimist": "^1.2.5"
       }
     },
+    "just-extend": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
+      "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
+      "dev": true
+    },
     "levn": {
       "version": "0.4.1",
       "dev": true,
@@ -43697,6 +43632,12 @@
       "version": "4.4.0",
       "dev": true
     },
+    "lodash.get": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+      "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+      "dev": true
+    },
     "lodash.isequal": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
@@ -43957,6 +43898,19 @@
         "randexp": "0.4.6"
       }
     },
+    "nise": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.0.tgz",
+      "integrity": "sha512-W5WlHu+wvo3PaKLsJJkgPup2LrsXCcm7AWwyNZkUnn5rwPkuPBi3Iwk5SQtN0mv+K65k7nKKjwNQ30wg3wLAQQ==",
+      "dev": true,
+      "requires": {
+        "@sinonjs/commons": "^1.7.0",
+        "@sinonjs/fake-timers": "^7.0.4",
+        "@sinonjs/text-encoding": "^0.7.1",
+        "just-extend": "^4.0.2",
+        "path-to-regexp": "^1.7.0"
+      }
+    },
     "nock": {
       "version": "13.1.3",
       "dev": true,
@@ -44290,6 +44244,21 @@
       "version": "1.0.7",
       "dev": true
     },
+    "path-to-regexp": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+      "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
+      "requires": {
+        "isarray": "0.0.1"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+        }
+      }
+    },
     "path-type": {
       "version": "4.0.0",
       "dev": true
@@ -44660,6 +44629,31 @@
       "version": "3.0.3",
       "dev": true
     },
+    "sinon": {
+      "version": "12.0.1",
+      "resolved": "https://registry.npmjs.org/sinon/-/sinon-12.0.1.tgz",
+      "integrity": "sha512-iGu29Xhym33ydkAT+aNQFBINakjq69kKO6ByPvTsm3yyIACfyQttRTP03aBP/I8GfhFmLzrnKwNNkr0ORb1udg==",
+      "dev": true,
+      "requires": {
+        "@sinonjs/commons": "^1.8.3",
+        "@sinonjs/fake-timers": "^8.1.0",
+        "@sinonjs/samsam": "^6.0.2",
+        "diff": "^5.0.0",
+        "nise": "^5.1.0",
+        "supports-color": "^7.2.0"
+      },
+      "dependencies": {
+        "@sinonjs/fake-timers": {
+          "version": "8.1.0",
+          "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+          "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+          "dev": true,
+          "requires": {
+            "@sinonjs/commons": "^1.7.0"
+          }
+        }
+      }
+    },
     "slash": {
       "version": "3.0.0",
       "dev": true
diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json
index 4b5224800c..fd3479620b 100644
--- a/web/ui/react-app/package.json
+++ b/web/ui/react-app/package.json
@@ -88,7 +88,7 @@
     "mutationobserver-shim": "^0.3.7",
     "prettier": "^2.4.1",
     "react-scripts": "4.0.3",
-    "sinon": "^11.1.2",
+    "sinon": "^12.0.1",
     "typescript": "^4.5.2"
   },
   "proxy": "http://localhost:9090",

From 4cae788689121b624557c63d955fbffeef1a91e9 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 19 Nov 2021 15:15:46 +0100
Subject: [PATCH 10/31] build(deps): bump github.com/docker/docker (#9817)

Bumps [github.com/docker/docker](https://github.com/docker/docker) from 20.10.10+incompatible to 20.10.11+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Changelog](https://github.com/moby/moby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/docker/docker/compare/v20.10.10...v20.10.11)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 go.mod | 2 +-
 go.sum | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/go.mod b/go.mod
index cc4a10dda6..677ff603a1 100644
--- a/go.mod
+++ b/go.mod
@@ -15,7 +15,7 @@ require (
 	github.com/dennwc/varint v1.0.0
 	github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245
 	github.com/digitalocean/godo v1.71.0
-	github.com/docker/docker v20.10.10+incompatible
+	github.com/docker/docker v20.10.11+incompatible
 	github.com/docker/go-connections v0.4.0 // indirect
 	github.com/edsrzf/mmap-go v1.0.0
 	github.com/envoyproxy/go-control-plane v0.10.1
diff --git a/go.sum b/go.sum
index 279d965895..9042ed77b5 100644
--- a/go.sum
+++ b/go.sum
@@ -381,8 +381,8 @@ github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TT
 github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
 github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug=
 github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker v20.10.10+incompatible h1:GKkP0T7U4ks6X3lmmHKC2QDprnpRJor2Z5a8m62R9ZM=
-github.com/docker/docker v20.10.10+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker v20.10.11+incompatible h1:OqzI/g/W54LczvhnccGqniFoQghHx3pklbLuhfXpqGo=
+github.com/docker/docker v20.10.11+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
 github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
 github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
 github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA=

From ab07c569127add2d14971f07450b7c7100b3b7f6 Mon Sep 17 00:00:00 2001
From: Augustin Husson <husson.augustin@gmail.com>
Date: Fri, 19 Nov 2021 17:43:34 +0100
Subject: [PATCH 11/31] downgrade bootstrap to v4 (#9827)

Signed-off-by: Augustin Husson <husson.augustin@gmail.com>
---
 web/ui/package-lock.json      | 82 ++++++++++++++++++++---------------
 web/ui/react-app/package.json |  2 +-
 2 files changed, 47 insertions(+), 37 deletions(-)

diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json
index 95111c30bd..2453d43f35 100644
--- a/web/ui/package-lock.json
+++ b/web/ui/package-lock.json
@@ -2471,6 +2471,19 @@
       "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
       "dev": true
     },
+    "node_modules/bootstrap": {
+      "version": "4.6.1",
+      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz",
+      "integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/bootstrap"
+      },
+      "peerDependencies": {
+        "jquery": "1.9.1 - 3",
+        "popper.js": "^1.16.1"
+      }
+    },
     "node_modules/brace-expansion": {
       "version": "1.1.11",
       "dev": true,
@@ -4593,6 +4606,11 @@
         "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
       }
     },
+    "node_modules/jquery": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
+      "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
+    },
     "node_modules/js-tokens": {
       "version": "4.0.0",
       "license": "MIT"
@@ -5697,6 +5715,16 @@
         "node": ">=4"
       }
     },
+    "node_modules/popper.js": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
+      "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
+      "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/popperjs"
+      }
+    },
     "node_modules/postcss": {
       "version": "8.3.11",
       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz",
@@ -7204,7 +7232,7 @@
         "@fortawesome/free-solid-svg-icons": "^5.7.1",
         "@fortawesome/react-fontawesome": "^0.1.16",
         "@nexucis/fuzzy": "^0.3.0",
-        "bootstrap": "^5.1.3",
+        "bootstrap": "^4.6.1",
         "codemirror-promql": "0.18.0",
         "css.escape": "^1.5.1",
         "downshift": "^6.1.7",
@@ -11722,18 +11750,6 @@
         "multicast-dns-service-types": "^1.1.0"
       }
     },
-    "react-app/node_modules/bootstrap": {
-      "version": "4.6.0",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/bootstrap"
-      },
-      "peerDependencies": {
-        "jquery": "1.9.1 - 3",
-        "popper.js": "^1.16.1"
-      }
-    },
     "react-app/node_modules/brorand": {
       "version": "1.1.0",
       "dev": true,
@@ -19248,10 +19264,6 @@
         "node": ">=8"
       }
     },
-    "react-app/node_modules/jquery": {
-      "version": "3.6.0",
-      "license": "MIT"
-    },
     "react-app/node_modules/jquery.flot.tooltip": {
       "version": "0.9.0",
       "license": "MIT"
@@ -20481,14 +20493,6 @@
         "node": ">=6"
       }
     },
-    "react-app/node_modules/popper.js": {
-      "version": "1.16.1",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/popperjs"
-      }
-    },
     "react-app/node_modules/portfinder": {
       "version": "1.0.28",
       "dev": true,
@@ -28225,6 +28229,12 @@
       "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
       "dev": true
     },
+    "bootstrap": {
+      "version": "4.6.1",
+      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz",
+      "integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==",
+      "requires": {}
+    },
     "brace-expansion": {
       "version": "1.1.11",
       "dev": true,
@@ -29642,7 +29652,7 @@
         "@types/sanitize-html": "^2.5.0",
         "@types/sinon": "^10.0.6",
         "@wojtekmaj/enzyme-adapter-react-17": "^0.6.5",
-        "bootstrap": "^5.1.3",
+        "bootstrap": "^4.6.1",
         "codemirror-promql": "0.18.0",
         "css.escape": "^1.5.1",
         "downshift": "^6.1.7",
@@ -32619,10 +32629,6 @@
             "multicast-dns-service-types": "^1.1.0"
           }
         },
-        "bootstrap": {
-          "version": "4.6.0",
-          "requires": {}
-        },
         "brorand": {
           "version": "1.1.0",
           "dev": true
@@ -37694,9 +37700,6 @@
             }
           }
         },
-        "jquery": {
-          "version": "3.6.0"
-        },
         "jquery.flot.tooltip": {
           "version": "0.9.0"
         },
@@ -38548,9 +38551,6 @@
             "ts-pnp": "^1.1.6"
           }
         },
-        "popper.js": {
-          "version": "1.16.1"
-        },
         "portfinder": {
           "version": "1.0.28",
           "dev": true,
@@ -43533,6 +43533,11 @@
       "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==",
       "dev": true
     },
+    "jquery": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
+      "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
+    },
     "js-tokens": {
       "version": "4.0.0"
     },
@@ -44288,6 +44293,11 @@
         "find-up": "^2.1.0"
       }
     },
+    "popper.js": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
+      "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
+    },
     "postcss": {
       "version": "8.3.11",
       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz",
diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json
index fd3479620b..c67692d926 100644
--- a/web/ui/react-app/package.json
+++ b/web/ui/react-app/package.json
@@ -20,7 +20,7 @@
     "@fortawesome/free-solid-svg-icons": "^5.7.1",
     "@fortawesome/react-fontawesome": "^0.1.16",
     "@nexucis/fuzzy": "^0.3.0",
-    "bootstrap": "^5.1.3",
+    "bootstrap": "^4.6.1",
     "codemirror-promql": "0.18.0",
     "css.escape": "^1.5.1",
     "downshift": "^6.1.7",

From adf6f2439e492956d26a623107078ec7421c0d78 Mon Sep 17 00:00:00 2001
From: Julius Volz <julius.volz@gmail.com>
Date: Fri, 19 Nov 2021 21:58:49 +0300
Subject: [PATCH 12/31] Fix focused expression input outline styling (#9829)

This is necessary due to this change in upstream CodeMirror:

https://github.com/codemirror/view/commit/73ec1a70bebc41cdd7ffd32c14d67355bbbb8970#diff-0e21fb1c9519a397050defc2148a2d1b966a0982cc4cf196e1e6b007f8d095e5

Currently the expression input shows a weird dotted outline when focused.

Signed-off-by: Julius Volz <julius.volz@gmail.com>
---
 web/ui/react-app/src/pages/graph/CMTheme.tsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/web/ui/react-app/src/pages/graph/CMTheme.tsx b/web/ui/react-app/src/pages/graph/CMTheme.tsx
index 87de82ba36..cd2aa69a4c 100644
--- a/web/ui/react-app/src/pages/graph/CMTheme.tsx
+++ b/web/ui/react-app/src/pages/graph/CMTheme.tsx
@@ -2,7 +2,7 @@ import { HighlightStyle, tags } from '@codemirror/highlight';
 import { EditorView } from '@codemirror/view';
 
 export const baseTheme = EditorView.theme({
-  '&': {
+  '&.cm-editor': {
     '&.cm-focused': {
       outline: 'none',
       outline_fallback: 'none',

From 3ce6b48df69582a76afec137de477d8e9c218c57 Mon Sep 17 00:00:00 2001
From: "teuto.net Netzdienste GmbH" <github@teuto.net>
Date: Fri, 19 Nov 2021 21:06:01 +0100
Subject: [PATCH 13/31] fixes wrong metric name in documentation  (#9828)

* fixes wrong metric name, see https://github.com/prometheus/prometheus/blob/main/discovery/openstack/hypervisor.go#L35

Signed-off-by: teuto.net Netzdienste GmbH <github@teuto.net>

* fixes parameter doc, sorted alphabetically

Signed-off-by: teuto.net Netzdienste GmbH <github@teuto.net>
---
 docs/configuration/configuration.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/configuration/configuration.md b/docs/configuration/configuration.md
index bfe23e9160..95fc0ff8de 100644
--- a/docs/configuration/configuration.md
+++ b/docs/configuration/configuration.md
@@ -1023,8 +1023,8 @@ address defaults to the `host_ip` attribute of the hypervisor.
 The following meta labels are available on targets during [relabeling](#relabel_config):
 
 * `__meta_openstack_hypervisor_host_ip`: the hypervisor node's IP address.
+* `__meta_openstack_hypervisor_hostname`: the hypervisor node's name.
 * `__meta_openstack_hypervisor_id`: the hypervisor node's ID.
-* `__meta_openstack_hypervisor_name`: the hypervisor node's name.
 * `__meta_openstack_hypervisor_state`: the hypervisor node's state.
 * `__meta_openstack_hypervisor_status`: the hypervisor node's status.
 * `__meta_openstack_hypervisor_type`: the hypervisor node's type.

From e673805d67a1143f6e6d57b45ad782e838812658 Mon Sep 17 00:00:00 2001
From: Matheus Alcantara <msalcantara@protonmail.com>
Date: Fri, 19 Nov 2021 17:21:45 -0300
Subject: [PATCH 14/31] storage/remote: use t.TempDir instead of ioutil.TempDir
 on tests (#9811)

Signed-off-by: Matheus Alcantara <matheusssilv97@gmail.com>
---
 storage/remote/queue_manager_test.go | 50 +++++-----------------------
 storage/remote/read_test.go          |  6 +---
 storage/remote/storage_test.go       | 14 +++-----
 storage/remote/write_test.go         | 50 ++++++----------------------
 4 files changed, 24 insertions(+), 96 deletions(-)

diff --git a/storage/remote/queue_manager_test.go b/storage/remote/queue_manager_test.go
index 64a3d6462b..65d59b028b 100644
--- a/storage/remote/queue_manager_test.go
+++ b/storage/remote/queue_manager_test.go
@@ -75,11 +75,7 @@ func TestSampleDelivery(t *testing.T) {
 	// batch timeout case.
 	n := 3
 
-	dir, err := ioutil.TempDir("", "TestSampleDelivery")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	s := NewStorage(nil, nil, nil, dir, defaultFlushDeadline, nil)
 	defer s.Close()
@@ -154,9 +150,7 @@ func TestSampleDelivery(t *testing.T) {
 func TestMetadataDelivery(t *testing.T) {
 	c := NewTestWriteClient()
 
-	dir, err := ioutil.TempDir("", "TestMetadataDelivery")
-	require.NoError(t, err)
-	defer os.RemoveAll(dir)
+	dir := t.TempDir()
 
 	cfg := config.DefaultQueueConfig
 	mcfg := config.DefaultMetadataConfig
@@ -198,11 +192,7 @@ func TestSampleDeliveryTimeout(t *testing.T) {
 	cfg.MaxShards = 1
 	cfg.BatchSendDeadline = model.Duration(100 * time.Millisecond)
 
-	dir, err := ioutil.TempDir("", "TestSampleDeliveryTimeout")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	metrics := newQueueManagerMetrics(nil, "", "")
 	m := NewQueueManager(metrics, nil, nil, nil, dir, newEWMARate(ewmaWeight, shardUpdateDuration), cfg, mcfg, nil, nil, c, defaultFlushDeadline, newPool(), newHighestTimestampMetric(), nil, false)
@@ -241,11 +231,7 @@ func TestSampleDeliveryOrder(t *testing.T) {
 	c := NewTestWriteClient()
 	c.expectSamples(samples, series)
 
-	dir, err := ioutil.TempDir("", "TestSampleDeliveryOrder")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	cfg := config.DefaultQueueConfig
 	mcfg := config.DefaultMetadataConfig
@@ -265,11 +251,7 @@ func TestShutdown(t *testing.T) {
 	deadline := 1 * time.Second
 	c := NewTestBlockedWriteClient()
 
-	dir, err := ioutil.TempDir("", "TestShutdown")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	cfg := config.DefaultQueueConfig
 	mcfg := config.DefaultMetadataConfig
@@ -308,11 +290,7 @@ func TestSeriesReset(t *testing.T) {
 	numSegments := 4
 	numSeries := 25
 
-	dir, err := ioutil.TempDir("", "TestSeriesReset")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	cfg := config.DefaultQueueConfig
 	mcfg := config.DefaultMetadataConfig
@@ -343,11 +321,7 @@ func TestReshard(t *testing.T) {
 	mcfg := config.DefaultMetadataConfig
 	cfg.MaxShards = 1
 
-	dir, err := ioutil.TempDir("", "TestReshard")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	metrics := newQueueManagerMetrics(nil, "", "")
 	m := NewQueueManager(metrics, nil, nil, nil, dir, newEWMARate(ewmaWeight, shardUpdateDuration), cfg, mcfg, nil, nil, c, defaultFlushDeadline, newPool(), newHighestTimestampMetric(), nil, false)
@@ -740,9 +714,7 @@ func BenchmarkSampleDelivery(b *testing.B) {
 	cfg.BatchSendDeadline = model.Duration(100 * time.Millisecond)
 	cfg.MaxShards = 1
 
-	dir, err := ioutil.TempDir("", "BenchmarkSampleDelivery")
-	require.NoError(b, err)
-	defer os.RemoveAll(dir)
+	dir := b.TempDir()
 
 	metrics := newQueueManagerMetrics(nil, "", "")
 	m := NewQueueManager(metrics, nil, nil, nil, dir, newEWMARate(ewmaWeight, shardUpdateDuration), cfg, mcfg, nil, nil, c, defaultFlushDeadline, newPool(), newHighestTimestampMetric(), nil, false)
@@ -865,11 +837,7 @@ func TestCalculateDesiredShards(t *testing.T) {
 	cfg := config.DefaultQueueConfig
 	mcfg := config.DefaultMetadataConfig
 
-	dir, err := ioutil.TempDir("", "TestCalculateDesiredShards")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	metrics := newQueueManagerMetrics(nil, "", "")
 	samplesIn := newEWMARate(ewmaWeight, shardUpdateDuration)
diff --git a/storage/remote/read_test.go b/storage/remote/read_test.go
index bf3bff1de3..e2d4e18092 100644
--- a/storage/remote/read_test.go
+++ b/storage/remote/read_test.go
@@ -15,9 +15,7 @@ package remote
 
 import (
 	"context"
-	"io/ioutil"
 	"net/url"
-	"os"
 	"sort"
 	"testing"
 
@@ -33,9 +31,7 @@ import (
 )
 
 func TestNoDuplicateReadConfigs(t *testing.T) {
-	dir, err := ioutil.TempDir("", "TestNoDuplicateReadConfigs")
-	require.NoError(t, err)
-	defer os.RemoveAll(dir)
+	dir := t.TempDir()
 
 	cfg1 := config.RemoteReadConfig{
 		Name: "write-1",
diff --git a/storage/remote/storage_test.go b/storage/remote/storage_test.go
index 29fc67e0d0..6254c69196 100644
--- a/storage/remote/storage_test.go
+++ b/storage/remote/storage_test.go
@@ -14,9 +14,7 @@
 package remote
 
 import (
-	"io/ioutil"
 	"net/url"
-	"os"
 	"testing"
 
 	common_config "github.com/prometheus/common/config"
@@ -26,9 +24,7 @@ import (
 )
 
 func TestStorageLifecycle(t *testing.T) {
-	dir, err := ioutil.TempDir("", "TestStorageLifecycle")
-	require.NoError(t, err)
-	defer os.RemoveAll(dir)
+	dir := t.TempDir()
 
 	s := NewStorage(nil, nil, nil, dir, defaultFlushDeadline, nil)
 	conf := &config.Config{
@@ -60,14 +56,12 @@ func TestStorageLifecycle(t *testing.T) {
 	// make sure remote write has a queue.
 	require.Equal(t, 1, len(s.queryables))
 
-	err = s.Close()
+	err := s.Close()
 	require.NoError(t, err)
 }
 
 func TestUpdateRemoteReadConfigs(t *testing.T) {
-	dir, err := ioutil.TempDir("", "TestUpdateRemoteReadConfigs")
-	require.NoError(t, err)
-	defer os.RemoveAll(dir)
+	dir := t.TempDir()
 
 	s := NewStorage(nil, nil, nil, dir, defaultFlushDeadline, nil)
 
@@ -83,6 +77,6 @@ func TestUpdateRemoteReadConfigs(t *testing.T) {
 	require.NoError(t, s.ApplyConfig(conf))
 	require.Equal(t, 1, len(s.queryables))
 
-	err = s.Close()
+	err := s.Close()
 	require.NoError(t, err)
 }
diff --git a/storage/remote/write_test.go b/storage/remote/write_test.go
index f2545337b8..d92b65852a 100644
--- a/storage/remote/write_test.go
+++ b/storage/remote/write_test.go
@@ -14,9 +14,7 @@
 package remote
 
 import (
-	"io/ioutil"
 	"net/url"
-	"os"
 	"testing"
 	"time"
 
@@ -44,11 +42,7 @@ func testRemoteWriteConfig() *config.RemoteWriteConfig {
 }
 
 func TestNoDuplicateWriteConfigs(t *testing.T) {
-	dir, err := ioutil.TempDir("", "TestNoDuplicateWriteConfigs")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	cfg1 := config.RemoteWriteConfig{
 		Name: "write-1",
@@ -132,11 +126,7 @@ func TestNoDuplicateWriteConfigs(t *testing.T) {
 }
 
 func TestRestartOnNameChange(t *testing.T) {
-	dir, err := ioutil.TempDir("", "TestRestartOnNameChange")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	cfg := testRemoteWriteConfig()
 
@@ -166,11 +156,7 @@ func TestRestartOnNameChange(t *testing.T) {
 }
 
 func TestUpdateWithRegisterer(t *testing.T) {
-	dir, err := ioutil.TempDir("", "TestRestartWithRegisterer")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	s := NewWriteStorage(nil, prometheus.NewRegistry(), dir, time.Millisecond, nil)
 	c1 := &config.RemoteWriteConfig{
@@ -205,16 +191,12 @@ func TestUpdateWithRegisterer(t *testing.T) {
 		require.Equal(t, 10, queue.cfg.MaxShards)
 	}
 
-	err = s.Close()
+	err := s.Close()
 	require.NoError(t, err)
 }
 
 func TestWriteStorageLifecycle(t *testing.T) {
-	dir, err := ioutil.TempDir("", "TestWriteStorageLifecycle")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	s := NewWriteStorage(nil, nil, dir, defaultFlushDeadline, nil)
 	conf := &config.Config{
@@ -226,16 +208,12 @@ func TestWriteStorageLifecycle(t *testing.T) {
 	require.NoError(t, s.ApplyConfig(conf))
 	require.Equal(t, 1, len(s.queues))
 
-	err = s.Close()
+	err := s.Close()
 	require.NoError(t, err)
 }
 
 func TestUpdateExternalLabels(t *testing.T) {
-	dir, err := ioutil.TempDir("", "TestUpdateExternalLabels")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	s := NewWriteStorage(nil, prometheus.NewRegistry(), dir, time.Second, nil)
 
@@ -264,11 +242,7 @@ func TestUpdateExternalLabels(t *testing.T) {
 }
 
 func TestWriteStorageApplyConfigsIdempotent(t *testing.T) {
-	dir, err := ioutil.TempDir("", "TestWriteStorageApplyConfigsIdempotent")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	s := NewWriteStorage(nil, nil, dir, defaultFlushDeadline, nil)
 
@@ -305,11 +279,7 @@ func TestWriteStorageApplyConfigsIdempotent(t *testing.T) {
 }
 
 func TestWriteStorageApplyConfigsPartialUpdate(t *testing.T) {
-	dir, err := ioutil.TempDir("", "TestWriteStorageApplyConfigsPartialUpdate")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	s := NewWriteStorage(nil, nil, dir, defaultFlushDeadline, nil)
 
@@ -383,7 +353,7 @@ func TestWriteStorageApplyConfigsPartialUpdate(t *testing.T) {
 	secondClient := s.queues[hashes[1]].client()
 	// Update c1.
 	c1.HTTPClientConfig.BearerToken = "bar"
-	err = s.ApplyConfig(conf)
+	err := s.ApplyConfig(conf)
 	require.NoError(t, err)
 	require.Equal(t, 3, len(s.queues))
 

From 0eac720468cf1b4bfee5cf3a4587cb5a409c1607 Mon Sep 17 00:00:00 2001
From: Ganesh Vernekar <15064823+codesome@users.noreply.github.com>
Date: Sun, 21 Nov 2021 22:30:27 +0530
Subject: [PATCH 15/31] Export rules related structs in web/api/v1 (#9831)

Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
---
 web/api/v1/api.go      | 16 ++++++++--------
 web/api/v1/api_test.go | 18 +++++++++---------
 2 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/web/api/v1/api.go b/web/api/v1/api.go
index 39d07383c3..a8888a17b1 100644
--- a/web/api/v1/api.go
+++ b/web/api/v1/api.go
@@ -1155,15 +1155,15 @@ type RuleGroup struct {
 	// In order to preserve rule ordering, while exposing type (alerting or recording)
 	// specific properties, both alerting and recording rules are exposed in the
 	// same array.
-	Rules          []rule    `json:"rules"`
+	Rules          []Rule    `json:"rules"`
 	Interval       float64   `json:"interval"`
 	EvaluationTime float64   `json:"evaluationTime"`
 	LastEvaluation time.Time `json:"lastEvaluation"`
 }
 
-type rule interface{}
+type Rule interface{}
 
-type alertingRule struct {
+type AlertingRule struct {
 	// State can be "pending", "firing", "inactive".
 	State          string           `json:"state"`
 	Name           string           `json:"name"`
@@ -1180,7 +1180,7 @@ type alertingRule struct {
 	Type string `json:"type"`
 }
 
-type recordingRule struct {
+type RecordingRule struct {
 	Name           string           `json:"name"`
 	Query          string           `json:"query"`
 	Labels         labels.Labels    `json:"labels,omitempty"`
@@ -1209,12 +1209,12 @@ func (api *API) rules(r *http.Request) apiFuncResult {
 			Name:           grp.Name(),
 			File:           grp.File(),
 			Interval:       grp.Interval().Seconds(),
-			Rules:          []rule{},
+			Rules:          []Rule{},
 			EvaluationTime: grp.GetEvaluationTime().Seconds(),
 			LastEvaluation: grp.GetLastEvaluation(),
 		}
 		for _, r := range grp.Rules() {
-			var enrichedRule rule
+			var enrichedRule Rule
 
 			lastError := ""
 			if r.LastError() != nil {
@@ -1225,7 +1225,7 @@ func (api *API) rules(r *http.Request) apiFuncResult {
 				if !returnAlerts {
 					break
 				}
-				enrichedRule = alertingRule{
+				enrichedRule = AlertingRule{
 					State:          rule.State().String(),
 					Name:           rule.Name(),
 					Query:          rule.Query().String(),
@@ -1243,7 +1243,7 @@ func (api *API) rules(r *http.Request) apiFuncResult {
 				if !returnRecording {
 					break
 				}
-				enrichedRule = recordingRule{
+				enrichedRule = RecordingRule{
 					Name:           rule.Name(),
 					Query:          rule.Query().String(),
 					Labels:         rule.Labels(),
diff --git a/web/api/v1/api_test.go b/web/api/v1/api_test.go
index 5112201f44..be21a61baf 100644
--- a/web/api/v1/api_test.go
+++ b/web/api/v1/api_test.go
@@ -1472,8 +1472,8 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E
 						Name:     "grp",
 						File:     "/path/to/file",
 						Interval: 1,
-						Rules: []rule{
-							alertingRule{
+						Rules: []Rule{
+							AlertingRule{
 								State:       "inactive",
 								Name:        "test_metric3",
 								Query:       "absent(test_metric3) != 1",
@@ -1484,7 +1484,7 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E
 								Health:      "unknown",
 								Type:        "alerting",
 							},
-							alertingRule{
+							AlertingRule{
 								State:       "inactive",
 								Name:        "test_metric4",
 								Query:       "up == 1",
@@ -1495,7 +1495,7 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E
 								Health:      "unknown",
 								Type:        "alerting",
 							},
-							recordingRule{
+							RecordingRule{
 								Name:   "recording-rule-1",
 								Query:  "vector(1)",
 								Labels: labels.Labels{},
@@ -1518,8 +1518,8 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E
 						Name:     "grp",
 						File:     "/path/to/file",
 						Interval: 1,
-						Rules: []rule{
-							alertingRule{
+						Rules: []Rule{
+							AlertingRule{
 								State:       "inactive",
 								Name:        "test_metric3",
 								Query:       "absent(test_metric3) != 1",
@@ -1530,7 +1530,7 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E
 								Health:      "unknown",
 								Type:        "alerting",
 							},
-							alertingRule{
+							AlertingRule{
 								State:       "inactive",
 								Name:        "test_metric4",
 								Query:       "up == 1",
@@ -1557,8 +1557,8 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E
 						Name:     "grp",
 						File:     "/path/to/file",
 						Interval: 1,
-						Rules: []rule{
-							recordingRule{
+						Rules: []Rule{
+							RecordingRule{
 								Name:   "recording-rule-1",
 								Query:  "vector(1)",
 								Labels: labels.Labels{},

From 151a8daa9816996ad67ad8dc8227efb831554bdd Mon Sep 17 00:00:00 2001
From: paulfantom <pawel@krupa.net.pl>
Date: Mon, 22 Nov 2021 10:56:14 +0100
Subject: [PATCH 16/31] documentation: align kubernetes example with the prom
 operator and mixins

Signed-off-by: paulfantom <pawel@krupa.net.pl>
---
 documentation/examples/prometheus-kubernetes.yml | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/documentation/examples/prometheus-kubernetes.yml b/documentation/examples/prometheus-kubernetes.yml
index e2de9cdc06..3d3861ab4f 100644
--- a/documentation/examples/prometheus-kubernetes.yml
+++ b/documentation/examples/prometheus-kubernetes.yml
@@ -185,10 +185,10 @@ scrape_configs:
         regex: __meta_kubernetes_service_label_(.+)
       - source_labels: [__meta_kubernetes_namespace]
         action: replace
-        target_label: kubernetes_namespace
+        target_label: namespace
       - source_labels: [__meta_kubernetes_service_name]
         action: replace
-        target_label: kubernetes_name
+        target_label: service
 
   # Example scrape config for probing services via the Blackbox Exporter.
   #
@@ -217,9 +217,9 @@ scrape_configs:
       - action: labelmap
         regex: __meta_kubernetes_service_label_(.+)
       - source_labels: [__meta_kubernetes_namespace]
-        target_label: kubernetes_namespace
+        target_label: namespace
       - source_labels: [__meta_kubernetes_service_name]
-        target_label: kubernetes_name
+        target_label: service
 
   # Example scrape config for probing ingresses via the Blackbox Exporter.
   #
@@ -255,9 +255,9 @@ scrape_configs:
       - action: labelmap
         regex: __meta_kubernetes_ingress_label_(.+)
       - source_labels: [__meta_kubernetes_namespace]
-        target_label: kubernetes_namespace
+        target_label: namespace
       - source_labels: [__meta_kubernetes_ingress_name]
-        target_label: kubernetes_name
+        target_label: ingress
 
   # Example scrape config for pods
   #
@@ -294,7 +294,7 @@ scrape_configs:
         regex: __meta_kubernetes_pod_label_(.+)
       - source_labels: [__meta_kubernetes_namespace]
         action: replace
-        target_label: kubernetes_namespace
+        target_label: namespace
       - source_labels: [__meta_kubernetes_pod_name]
         action: replace
-        target_label: kubernetes_pod_name
+        target_label: pod

From fa455ff1646d44b33b435ab8ad229a502e35117e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 22 Nov 2021 12:45:13 +0100
Subject: [PATCH 17/31] build(deps): bump @codemirror/view from 0.19.19 to
 0.19.20 in /web/ui (#9833)

Bumps [@codemirror/view](https://github.com/codemirror/view) from 0.19.19 to 0.19.20.
- [Release notes](https://github.com/codemirror/view/releases)
- [Changelog](https://github.com/codemirror/view/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/view/compare/0.19.19...0.19.20)

---
updated-dependencies:
- dependency-name: "@codemirror/view"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 web/ui/module/codemirror-promql/package.json |  4 ++--
 web/ui/package-lock.json                     | 19 +++++++++++--------
 web/ui/react-app/package.json                |  2 +-
 3 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/web/ui/module/codemirror-promql/package.json b/web/ui/module/codemirror-promql/package.json
index ee6ee543cf..17b6e83f2f 100644
--- a/web/ui/module/codemirror-promql/package.json
+++ b/web/ui/module/codemirror-promql/package.json
@@ -40,7 +40,7 @@
     "@codemirror/language": "^0.19.5",
     "@codemirror/lint": "^0.19.3",
     "@codemirror/state": "^0.19.5",
-    "@codemirror/view": "^0.19.19",
+    "@codemirror/view": "^0.19.20",
     "@lezer/common": "^0.15.8",
     "@lezer/generator": "^0.15.2",
     "@types/chai": "^4.2.22",
@@ -72,7 +72,7 @@
     "@codemirror/language": "^0.19.5",
     "@codemirror/lint": "^0.19.3",
     "@codemirror/state": "^0.19.5",
-    "@codemirror/view": "^0.19.19",
+    "@codemirror/view": "^0.19.20",
     "@lezer/common": "^0.15.8"
   },
   "prettier": {
diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json
index 2453d43f35..bce3a2f77b 100644
--- a/web/ui/package-lock.json
+++ b/web/ui/package-lock.json
@@ -26,7 +26,7 @@
         "@codemirror/language": "^0.19.5",
         "@codemirror/lint": "^0.19.3",
         "@codemirror/state": "^0.19.5",
-        "@codemirror/view": "^0.19.19",
+        "@codemirror/view": "^0.19.20",
         "@lezer/common": "^0.15.8",
         "@lezer/generator": "^0.15.2",
         "@types/chai": "^4.2.22",
@@ -61,7 +61,7 @@
         "@codemirror/language": "^0.19.5",
         "@codemirror/lint": "^0.19.3",
         "@codemirror/state": "^0.19.5",
-        "@codemirror/view": "^0.19.19",
+        "@codemirror/view": "^0.19.20",
         "@lezer/common": "^0.15.8"
       }
     },
@@ -1356,8 +1356,9 @@
       }
     },
     "node_modules/@codemirror/view": {
-      "version": "0.19.19",
-      "license": "MIT",
+      "version": "0.19.20",
+      "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-0.19.20.tgz",
+      "integrity": "sha512-j4cI/Egdhha77pMfKQQWZmpkcF7vhe21LqdZs8hsG09OtvsPVCHUXmfB0u7nMpcX1JR8aZ3ob9g6FMr+OVtjgA==",
       "dependencies": {
         "@codemirror/rangeset": "^0.19.0",
         "@codemirror/state": "^0.19.3",
@@ -7226,7 +7227,7 @@
         "@codemirror/matchbrackets": "^0.19.3",
         "@codemirror/search": "^0.19.2",
         "@codemirror/state": "^0.19.5",
-        "@codemirror/view": "^0.19.19",
+        "@codemirror/view": "^0.19.20",
         "@forevolve/bootstrap-dark": "^1.0.0",
         "@fortawesome/fontawesome-svg-core": "^1.2.14",
         "@fortawesome/free-solid-svg-icons": "^5.7.1",
@@ -27480,7 +27481,9 @@
       }
     },
     "@codemirror/view": {
-      "version": "0.19.19",
+      "version": "0.19.20",
+      "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-0.19.20.tgz",
+      "integrity": "sha512-j4cI/Egdhha77pMfKQQWZmpkcF7vhe21LqdZs8hsG09OtvsPVCHUXmfB0u7nMpcX1JR8aZ3ob9g6FMr+OVtjgA==",
       "requires": {
         "@codemirror/rangeset": "^0.19.0",
         "@codemirror/state": "^0.19.3",
@@ -28403,7 +28406,7 @@
         "@codemirror/language": "^0.19.5",
         "@codemirror/lint": "^0.19.3",
         "@codemirror/state": "^0.19.5",
-        "@codemirror/view": "^0.19.19",
+        "@codemirror/view": "^0.19.20",
         "@lezer/common": "^0.15.8",
         "@lezer/generator": "^0.15.2",
         "@types/chai": "^4.2.22",
@@ -29632,7 +29635,7 @@
         "@codemirror/matchbrackets": "^0.19.3",
         "@codemirror/search": "^0.19.2",
         "@codemirror/state": "^0.19.5",
-        "@codemirror/view": "^0.19.19",
+        "@codemirror/view": "^0.19.20",
         "@forevolve/bootstrap-dark": "^1.0.0",
         "@fortawesome/fontawesome-svg-core": "^1.2.14",
         "@fortawesome/free-solid-svg-icons": "^5.7.1",
diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json
index c67692d926..6d6501f851 100644
--- a/web/ui/react-app/package.json
+++ b/web/ui/react-app/package.json
@@ -14,7 +14,7 @@
     "@codemirror/matchbrackets": "^0.19.3",
     "@codemirror/search": "^0.19.2",
     "@codemirror/state": "^0.19.5",
-    "@codemirror/view": "^0.19.19",
+    "@codemirror/view": "^0.19.20",
     "@forevolve/bootstrap-dark": "^1.0.0",
     "@fortawesome/fontawesome-svg-core": "^1.2.14",
     "@fortawesome/free-solid-svg-icons": "^5.7.1",

From 5da48cef93582c8ddd0a8809d6043c223b5b5db3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 22 Nov 2021 12:47:23 +0100
Subject: [PATCH 18/31] build(deps-dev): bump eslint from 8.2.0 to 8.3.0 in
 /web/ui (#9835)

Bumps [eslint](https://github.com/eslint/eslint) from 8.2.0 to 8.3.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.2.0...v8.3.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 web/ui/module/codemirror-promql/package.json |   2 +-
 web/ui/package-lock.json                     | 137 ++++++++-----------
 2 files changed, 61 insertions(+), 78 deletions(-)

diff --git a/web/ui/module/codemirror-promql/package.json b/web/ui/module/codemirror-promql/package.json
index 17b6e83f2f..6697b18905 100644
--- a/web/ui/module/codemirror-promql/package.json
+++ b/web/ui/module/codemirror-promql/package.json
@@ -51,7 +51,7 @@
     "@typescript-eslint/parser": "^5.3.1",
     "chai": "^4.2.0",
     "codecov": "^3.8.1",
-    "eslint": "^8.2.0",
+    "eslint": "^8.3.0",
     "eslint-config-prettier": "^8.3.0",
     "eslint-plugin-flowtype": "^8.0.3",
     "eslint-plugin-import": "^2.25.3",
diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json
index bce3a2f77b..4f740aebbe 100644
--- a/web/ui/package-lock.json
+++ b/web/ui/package-lock.json
@@ -37,7 +37,7 @@
         "@typescript-eslint/parser": "^5.3.1",
         "chai": "^4.2.0",
         "codecov": "^3.8.1",
-        "eslint": "^8.2.0",
+        "eslint": "^8.3.0",
         "eslint-config-prettier": "^8.3.0",
         "eslint-plugin-flowtype": "^8.0.3",
         "eslint-plugin-import": "^2.25.3",
@@ -159,26 +159,6 @@
         "eslint": "*"
       }
     },
-    "module/codemirror-promql/node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-scope": {
-      "version": "5.1.1",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "module/codemirror-promql/node_modules/@typescript-eslint/experimental-utils/node_modules/estraverse": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
     "module/codemirror-promql/node_modules/@typescript-eslint/parser": {
       "version": "5.4.0",
       "dev": true,
@@ -276,9 +256,10 @@
       }
     },
     "module/codemirror-promql/node_modules/acorn": {
-      "version": "8.5.0",
+      "version": "8.6.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
+      "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==",
       "dev": true,
-      "license": "MIT",
       "bin": {
         "acorn": "bin/acorn"
       },
@@ -323,9 +304,10 @@
       }
     },
     "module/codemirror-promql/node_modules/eslint": {
-      "version": "8.2.0",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz",
+      "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@eslint/eslintrc": "^1.0.4",
         "@humanwhocodes/config-array": "^0.6.0",
@@ -336,10 +318,10 @@
         "doctrine": "^3.0.0",
         "enquirer": "^2.3.5",
         "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^6.0.0",
+        "eslint-scope": "^7.1.0",
         "eslint-utils": "^3.0.0",
-        "eslint-visitor-keys": "^3.0.0",
-        "espree": "^9.0.0",
+        "eslint-visitor-keys": "^3.1.0",
+        "espree": "^9.1.0",
         "esquery": "^1.4.0",
         "esutils": "^2.0.2",
         "fast-deep-equal": "^3.1.3",
@@ -393,18 +375,6 @@
         "eslint": "^8.1.0"
       }
     },
-    "module/codemirror-promql/node_modules/eslint-scope": {
-      "version": "6.0.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      }
-    },
     "module/codemirror-promql/node_modules/eslint-visitor-keys": {
       "version": "3.1.0",
       "dev": true,
@@ -413,14 +383,28 @@
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       }
     },
-    "module/codemirror-promql/node_modules/espree": {
-      "version": "9.0.0",
+    "module/codemirror-promql/node_modules/eslint/node_modules/eslint-scope": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
+      "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
       "dev": true,
-      "license": "BSD-2-Clause",
       "dependencies": {
-        "acorn": "^8.5.0",
+        "esrecurse": "^4.3.0",
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "module/codemirror-promql/node_modules/espree": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz",
+      "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^8.6.0",
         "acorn-jsx": "^5.3.1",
-        "eslint-visitor-keys": "^3.0.0"
+        "eslint-visitor-keys": "^3.1.0"
       },
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -428,8 +412,9 @@
     },
     "module/codemirror-promql/node_modules/estraverse": {
       "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
       "dev": true,
-      "license": "BSD-2-Clause",
       "engines": {
         "node": ">=4.0"
       }
@@ -28417,7 +28402,7 @@
         "@typescript-eslint/parser": "^5.3.1",
         "chai": "^4.2.0",
         "codecov": "^3.8.1",
-        "eslint": "^8.2.0",
+        "eslint": "^8.3.0",
         "eslint-config-prettier": "^8.3.0",
         "eslint-plugin-flowtype": "^8.0.3",
         "eslint-plugin-import": "^2.25.3",
@@ -28488,20 +28473,6 @@
             "@typescript-eslint/typescript-estree": "5.4.0",
             "eslint-scope": "^5.1.1",
             "eslint-utils": "^3.0.0"
-          },
-          "dependencies": {
-            "eslint-scope": {
-              "version": "5.1.1",
-              "dev": true,
-              "requires": {
-                "esrecurse": "^4.3.0",
-                "estraverse": "^4.1.1"
-              }
-            },
-            "estraverse": {
-              "version": "4.3.0",
-              "dev": true
-            }
           }
         },
         "@typescript-eslint/parser": {
@@ -28548,7 +28519,9 @@
           }
         },
         "acorn": {
-          "version": "8.5.0",
+          "version": "8.6.0",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
+          "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==",
           "dev": true
         },
         "argparse": {
@@ -28579,7 +28552,9 @@
           }
         },
         "eslint": {
-          "version": "8.2.0",
+          "version": "8.3.0",
+          "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz",
+          "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==",
           "dev": true,
           "requires": {
             "@eslint/eslintrc": "^1.0.4",
@@ -28591,10 +28566,10 @@
             "doctrine": "^3.0.0",
             "enquirer": "^2.3.5",
             "escape-string-regexp": "^4.0.0",
-            "eslint-scope": "^6.0.0",
+            "eslint-scope": "^7.1.0",
             "eslint-utils": "^3.0.0",
-            "eslint-visitor-keys": "^3.0.0",
-            "espree": "^9.0.0",
+            "eslint-visitor-keys": "^3.1.0",
+            "espree": "^9.1.0",
             "esquery": "^1.4.0",
             "esutils": "^2.0.2",
             "fast-deep-equal": "^3.1.3",
@@ -28620,6 +28595,18 @@
             "strip-json-comments": "^3.1.0",
             "text-table": "^0.2.0",
             "v8-compile-cache": "^2.0.3"
+          },
+          "dependencies": {
+            "eslint-scope": {
+              "version": "7.1.0",
+              "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
+              "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
+              "dev": true,
+              "requires": {
+                "esrecurse": "^4.3.0",
+                "estraverse": "^5.2.0"
+              }
+            }
           }
         },
         "eslint-plugin-flowtype": {
@@ -28630,29 +28617,25 @@
             "string-natural-compare": "^3.0.1"
           }
         },
-        "eslint-scope": {
-          "version": "6.0.0",
-          "dev": true,
-          "requires": {
-            "esrecurse": "^4.3.0",
-            "estraverse": "^5.2.0"
-          }
-        },
         "eslint-visitor-keys": {
           "version": "3.1.0",
           "dev": true
         },
         "espree": {
-          "version": "9.0.0",
+          "version": "9.1.0",
+          "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz",
+          "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==",
           "dev": true,
           "requires": {
-            "acorn": "^8.5.0",
+            "acorn": "^8.6.0",
             "acorn-jsx": "^5.3.1",
-            "eslint-visitor-keys": "^3.0.0"
+            "eslint-visitor-keys": "^3.1.0"
           }
         },
         "estraverse": {
           "version": "5.3.0",
+          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
           "dev": true
         },
         "find-up": {

From fa6a736103931303f20a43987f627cd442363116 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 22 Nov 2021 12:48:19 +0100
Subject: [PATCH 19/31] build(deps-dev): bump nock from 13.1.3 to 13.2.1 in
 /web/ui (#9836)

Bumps [nock](https://github.com/nock/nock) from 13.1.3 to 13.2.1.
- [Release notes](https://github.com/nock/nock/releases)
- [Changelog](https://github.com/nock/nock/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nock/nock/compare/v13.1.3...v13.2.1)

---
updated-dependencies:
- dependency-name: nock
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 web/ui/module/codemirror-promql/package.json |  2 +-
 web/ui/package-lock.json                     | 13 ++++++++-----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/web/ui/module/codemirror-promql/package.json b/web/ui/module/codemirror-promql/package.json
index 6697b18905..4d400ac857 100644
--- a/web/ui/module/codemirror-promql/package.json
+++ b/web/ui/module/codemirror-promql/package.json
@@ -58,7 +58,7 @@
     "eslint-plugin-prettier": "^4.0.0",
     "isomorphic-fetch": "^3.0.0",
     "mocha": "^8.4.0",
-    "nock": "^13.0.11",
+    "nock": "^13.2.1",
     "nyc": "^15.1.0",
     "prettier": "^2.4.1",
     "ts-loader": "^7.0.4",
diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json
index 4f740aebbe..dd77f50522 100644
--- a/web/ui/package-lock.json
+++ b/web/ui/package-lock.json
@@ -44,7 +44,7 @@
         "eslint-plugin-prettier": "^4.0.0",
         "isomorphic-fetch": "^3.0.0",
         "mocha": "^8.4.0",
-        "nock": "^13.0.11",
+        "nock": "^13.2.1",
         "nyc": "^15.1.0",
         "prettier": "^2.4.1",
         "ts-loader": "^7.0.4",
@@ -5152,9 +5152,10 @@
       }
     },
     "node_modules/nock": {
-      "version": "13.1.3",
+      "version": "13.2.1",
+      "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.1.tgz",
+      "integrity": "sha512-CoHAabbqq/xZEknubuyQMjq6Lfi5b7RtK6SoNK6m40lebGp3yiMagWtIoYaw2s9sISD7wPuCfwFpivVHX/35RA==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "debug": "^4.1.0",
         "json-stringify-safe": "^5.0.1",
@@ -28410,7 +28411,7 @@
         "isomorphic-fetch": "^3.0.0",
         "lru-cache": "^6.0.0",
         "mocha": "^8.4.0",
-        "nock": "^13.0.11",
+        "nock": "^13.2.1",
         "nyc": "^15.1.0",
         "prettier": "^2.4.1",
         "ts-loader": "^7.0.4",
@@ -43903,7 +43904,9 @@
       }
     },
     "nock": {
-      "version": "13.1.3",
+      "version": "13.2.1",
+      "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.1.tgz",
+      "integrity": "sha512-CoHAabbqq/xZEknubuyQMjq6Lfi5b7RtK6SoNK6m40lebGp3yiMagWtIoYaw2s9sISD7wPuCfwFpivVHX/35RA==",
       "dev": true,
       "requires": {
         "debug": "^4.1.0",

From dddeca61fc908878a4dfcda2642969ec42569dea Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 22 Nov 2021 13:23:02 +0100
Subject: [PATCH 20/31] build(deps): bump @codemirror/search from 0.19.2 to
 0.19.3 in /web/ui (#9838)

Bumps [@codemirror/search](https://github.com/codemirror/search) from 0.19.2 to 0.19.3.
- [Release notes](https://github.com/codemirror/search/releases)
- [Changelog](https://github.com/codemirror/search/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/search/compare/0.19.2...0.19.3)

---
updated-dependencies:
- dependency-name: "@codemirror/search"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 web/ui/package-lock.json      | 17 ++++++++++-------
 web/ui/react-app/package.json |  2 +-
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json
index dd77f50522..988b3bf283 100644
--- a/web/ui/package-lock.json
+++ b/web/ui/package-lock.json
@@ -1309,12 +1309,13 @@
       }
     },
     "node_modules/@codemirror/search": {
-      "version": "0.19.2",
-      "license": "MIT",
+      "version": "0.19.3",
+      "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-0.19.3.tgz",
+      "integrity": "sha512-T8AcSGNYuYtmOUXzI0VtCa9SMA0C90/Zk7fxnabgy0dpViwokucCMY2+aBZMPncIatkgojzbiRn7d5Qo1Ugx9w==",
       "dependencies": {
         "@codemirror/panel": "^0.19.0",
         "@codemirror/rangeset": "^0.19.0",
-        "@codemirror/state": "^0.19.2",
+        "@codemirror/state": "^0.19.3",
         "@codemirror/text": "^0.19.0",
         "@codemirror/view": "^0.19.0",
         "crelt": "^1.0.5"
@@ -7211,7 +7212,7 @@
         "@codemirror/language": "^0.19.5",
         "@codemirror/lint": "^0.19.3",
         "@codemirror/matchbrackets": "^0.19.3",
-        "@codemirror/search": "^0.19.2",
+        "@codemirror/search": "^0.19.3",
         "@codemirror/state": "^0.19.5",
         "@codemirror/view": "^0.19.20",
         "@forevolve/bootstrap-dark": "^1.0.0",
@@ -27438,11 +27439,13 @@
       }
     },
     "@codemirror/search": {
-      "version": "0.19.2",
+      "version": "0.19.3",
+      "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-0.19.3.tgz",
+      "integrity": "sha512-T8AcSGNYuYtmOUXzI0VtCa9SMA0C90/Zk7fxnabgy0dpViwokucCMY2+aBZMPncIatkgojzbiRn7d5Qo1Ugx9w==",
       "requires": {
         "@codemirror/panel": "^0.19.0",
         "@codemirror/rangeset": "^0.19.0",
-        "@codemirror/state": "^0.19.2",
+        "@codemirror/state": "^0.19.3",
         "@codemirror/text": "^0.19.0",
         "@codemirror/view": "^0.19.0",
         "crelt": "^1.0.5"
@@ -29617,7 +29620,7 @@
         "@codemirror/language": "^0.19.5",
         "@codemirror/lint": "^0.19.3",
         "@codemirror/matchbrackets": "^0.19.3",
-        "@codemirror/search": "^0.19.2",
+        "@codemirror/search": "^0.19.3",
         "@codemirror/state": "^0.19.5",
         "@codemirror/view": "^0.19.20",
         "@forevolve/bootstrap-dark": "^1.0.0",
diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json
index 6d6501f851..91ac0e9082 100644
--- a/web/ui/react-app/package.json
+++ b/web/ui/react-app/package.json
@@ -12,7 +12,7 @@
     "@codemirror/language": "^0.19.5",
     "@codemirror/lint": "^0.19.3",
     "@codemirror/matchbrackets": "^0.19.3",
-    "@codemirror/search": "^0.19.2",
+    "@codemirror/search": "^0.19.3",
     "@codemirror/state": "^0.19.5",
     "@codemirror/view": "^0.19.20",
     "@forevolve/bootstrap-dark": "^1.0.0",

From 2083dec64d49bd7582d25ef1a26dba903f5f52ba Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 22 Nov 2021 13:26:48 +0100
Subject: [PATCH 21/31] build(deps-dev): bump @types/node from 16.11.7 to
 16.11.9 in /web/ui (#9839)

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 16.11.7 to 16.11.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 web/ui/module/codemirror-promql/package.json |  2 +-
 web/ui/package-lock.json                     | 19 +++++++++++--------
 web/ui/react-app/package.json                |  2 +-
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/web/ui/module/codemirror-promql/package.json b/web/ui/module/codemirror-promql/package.json
index 4d400ac857..6aa690a5a7 100644
--- a/web/ui/module/codemirror-promql/package.json
+++ b/web/ui/module/codemirror-promql/package.json
@@ -46,7 +46,7 @@
     "@types/chai": "^4.2.22",
     "@types/lru-cache": "^5.1.0",
     "@types/mocha": "^9.0.0",
-    "@types/node": "^16.11.7",
+    "@types/node": "^16.11.9",
     "@typescript-eslint/eslint-plugin": "^5.3.1",
     "@typescript-eslint/parser": "^5.3.1",
     "chai": "^4.2.0",
diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json
index 988b3bf283..fe7d041d18 100644
--- a/web/ui/package-lock.json
+++ b/web/ui/package-lock.json
@@ -32,7 +32,7 @@
         "@types/chai": "^4.2.22",
         "@types/lru-cache": "^5.1.0",
         "@types/mocha": "^9.0.0",
-        "@types/node": "^16.11.7",
+        "@types/node": "^16.11.9",
         "@typescript-eslint/eslint-plugin": "^5.3.1",
         "@typescript-eslint/parser": "^5.3.1",
         "chai": "^4.2.0",
@@ -1773,9 +1773,10 @@
       "license": "MIT"
     },
     "node_modules/@types/node": {
-      "version": "16.11.7",
-      "dev": true,
-      "license": "MIT"
+      "version": "16.11.9",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz",
+      "integrity": "sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==",
+      "dev": true
     },
     "node_modules/@types/prop-types": {
       "version": "15.7.4",
@@ -7248,7 +7249,7 @@
         "@types/flot": "0.0.32",
         "@types/jest": "^27.0.3",
         "@types/jquery": "^3.5.8",
-        "@types/node": "^16.11.7",
+        "@types/node": "^16.11.9",
         "@types/react": "^17.0.35",
         "@types/react-copy-to-clipboard": "^5.0.2",
         "@types/react-dom": "^17.0.11",
@@ -27800,7 +27801,9 @@
       "dev": true
     },
     "@types/node": {
-      "version": "16.11.7",
+      "version": "16.11.9",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz",
+      "integrity": "sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==",
       "dev": true
     },
     "@types/prop-types": {
@@ -28401,7 +28404,7 @@
         "@types/chai": "^4.2.22",
         "@types/lru-cache": "^5.1.0",
         "@types/mocha": "^9.0.0",
-        "@types/node": "^16.11.7",
+        "@types/node": "^16.11.9",
         "@typescript-eslint/eslint-plugin": "^5.3.1",
         "@typescript-eslint/parser": "^5.3.1",
         "chai": "^4.2.0",
@@ -29633,7 +29636,7 @@
         "@types/flot": "0.0.32",
         "@types/jest": "^27.0.3",
         "@types/jquery": "^3.5.8",
-        "@types/node": "^16.11.7",
+        "@types/node": "^16.11.9",
         "@types/react": "^17.0.35",
         "@types/react-copy-to-clipboard": "^5.0.2",
         "@types/react-dom": "^17.0.11",
diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json
index 91ac0e9082..a575a17503 100644
--- a/web/ui/react-app/package.json
+++ b/web/ui/react-app/package.json
@@ -69,7 +69,7 @@
     "@types/flot": "0.0.32",
     "@types/jest": "^27.0.3",
     "@types/jquery": "^3.5.8",
-    "@types/node": "^16.11.7",
+    "@types/node": "^16.11.9",
     "@types/react": "^17.0.35",
     "@types/react-copy-to-clipboard": "^5.0.2",
     "@types/react-dom": "^17.0.11",

From 633e686d2d19561ad91f73d958f56bf6a1f99084 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 22 Nov 2021 13:56:16 +0100
Subject: [PATCH 22/31] build(deps-dev): bump @types/react from 17.0.35 to
 17.0.36 in /web/ui (#9837)

Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 17.0.35 to 17.0.36.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 web/ui/package-lock.json      | 13 ++++++++-----
 web/ui/react-app/package.json |  2 +-
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json
index fe7d041d18..3311006c63 100644
--- a/web/ui/package-lock.json
+++ b/web/ui/package-lock.json
@@ -1784,9 +1784,10 @@
       "license": "MIT"
     },
     "node_modules/@types/react": {
-      "version": "17.0.35",
+      "version": "17.0.36",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.36.tgz",
+      "integrity": "sha512-CUFUp01OdfbpN/76v4koqgcpcRGT3sYOq3U3N6q0ZVGcyeP40NUdVU+EWe3hs34RNaTefiYyBzOpxBBidCc5zw==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@types/prop-types": "*",
         "@types/scheduler": "*",
@@ -7250,7 +7251,7 @@
         "@types/jest": "^27.0.3",
         "@types/jquery": "^3.5.8",
         "@types/node": "^16.11.9",
-        "@types/react": "^17.0.35",
+        "@types/react": "^17.0.36",
         "@types/react-copy-to-clipboard": "^5.0.2",
         "@types/react-dom": "^17.0.11",
         "@types/react-resize-detector": "^6.1.0",
@@ -27811,7 +27812,9 @@
       "dev": true
     },
     "@types/react": {
-      "version": "17.0.35",
+      "version": "17.0.36",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.36.tgz",
+      "integrity": "sha512-CUFUp01OdfbpN/76v4koqgcpcRGT3sYOq3U3N6q0ZVGcyeP40NUdVU+EWe3hs34RNaTefiYyBzOpxBBidCc5zw==",
       "dev": true,
       "requires": {
         "@types/prop-types": "*",
@@ -29637,7 +29640,7 @@
         "@types/jest": "^27.0.3",
         "@types/jquery": "^3.5.8",
         "@types/node": "^16.11.9",
-        "@types/react": "^17.0.35",
+        "@types/react": "^17.0.36",
         "@types/react-copy-to-clipboard": "^5.0.2",
         "@types/react-dom": "^17.0.11",
         "@types/react-resize-detector": "^6.1.0",
diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json
index a575a17503..033fe74a9b 100644
--- a/web/ui/react-app/package.json
+++ b/web/ui/react-app/package.json
@@ -70,7 +70,7 @@
     "@types/jest": "^27.0.3",
     "@types/jquery": "^3.5.8",
     "@types/node": "^16.11.9",
-    "@types/react": "^17.0.35",
+    "@types/react": "^17.0.36",
     "@types/react-copy-to-clipboard": "^5.0.2",
     "@types/react-dom": "^17.0.11",
     "@types/react-resize-detector": "^6.1.0",

From f08c89e569b2421bcc8ef7caf585fd8d3c2ccaba Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 22 Nov 2021 15:00:39 +0100
Subject: [PATCH 23/31] build(deps): bump @codemirror/state from 0.19.5 to
 0.19.6 in /web/ui (#9840)

Bumps [@codemirror/state](https://github.com/codemirror/state) from 0.19.5 to 0.19.6.
- [Release notes](https://github.com/codemirror/state/releases)
- [Changelog](https://github.com/codemirror/state/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/state/compare/0.19.5...0.19.6)

---
updated-dependencies:
- dependency-name: "@codemirror/state"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 web/ui/module/codemirror-promql/package.json |  4 ++--
 web/ui/package-lock.json                     | 19 +++++++++++--------
 web/ui/react-app/package.json                |  2 +-
 3 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/web/ui/module/codemirror-promql/package.json b/web/ui/module/codemirror-promql/package.json
index 6aa690a5a7..e400a4df73 100644
--- a/web/ui/module/codemirror-promql/package.json
+++ b/web/ui/module/codemirror-promql/package.json
@@ -39,7 +39,7 @@
     "@codemirror/highlight": "^0.19.6",
     "@codemirror/language": "^0.19.5",
     "@codemirror/lint": "^0.19.3",
-    "@codemirror/state": "^0.19.5",
+    "@codemirror/state": "^0.19.6",
     "@codemirror/view": "^0.19.20",
     "@lezer/common": "^0.15.8",
     "@lezer/generator": "^0.15.2",
@@ -71,7 +71,7 @@
     "@codemirror/highlight": "^0.19.6",
     "@codemirror/language": "^0.19.5",
     "@codemirror/lint": "^0.19.3",
-    "@codemirror/state": "^0.19.5",
+    "@codemirror/state": "^0.19.6",
     "@codemirror/view": "^0.19.20",
     "@lezer/common": "^0.15.8"
   },
diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json
index 3311006c63..e566fe6845 100644
--- a/web/ui/package-lock.json
+++ b/web/ui/package-lock.json
@@ -25,7 +25,7 @@
         "@codemirror/highlight": "^0.19.6",
         "@codemirror/language": "^0.19.5",
         "@codemirror/lint": "^0.19.3",
-        "@codemirror/state": "^0.19.5",
+        "@codemirror/state": "^0.19.6",
         "@codemirror/view": "^0.19.20",
         "@lezer/common": "^0.15.8",
         "@lezer/generator": "^0.15.2",
@@ -60,7 +60,7 @@
         "@codemirror/highlight": "^0.19.6",
         "@codemirror/language": "^0.19.5",
         "@codemirror/lint": "^0.19.3",
-        "@codemirror/state": "^0.19.5",
+        "@codemirror/state": "^0.19.6",
         "@codemirror/view": "^0.19.20",
         "@lezer/common": "^0.15.8"
       }
@@ -1322,8 +1322,9 @@
       }
     },
     "node_modules/@codemirror/state": {
-      "version": "0.19.5",
-      "license": "MIT",
+      "version": "0.19.6",
+      "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-0.19.6.tgz",
+      "integrity": "sha512-sqIQZE9VqwQj7D4c2oz9mfLhlT1ElAzGB5lO1lE33BPyrdNy1cJyCIOecT4cn4VeJOFrnjOeu+IftZ3zqdFETw==",
       "dependencies": {
         "@codemirror/text": "^0.19.0"
       }
@@ -7215,7 +7216,7 @@
         "@codemirror/lint": "^0.19.3",
         "@codemirror/matchbrackets": "^0.19.3",
         "@codemirror/search": "^0.19.3",
-        "@codemirror/state": "^0.19.5",
+        "@codemirror/state": "^0.19.6",
         "@codemirror/view": "^0.19.20",
         "@forevolve/bootstrap-dark": "^1.0.0",
         "@fortawesome/fontawesome-svg-core": "^1.2.14",
@@ -27454,7 +27455,9 @@
       }
     },
     "@codemirror/state": {
-      "version": "0.19.5",
+      "version": "0.19.6",
+      "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-0.19.6.tgz",
+      "integrity": "sha512-sqIQZE9VqwQj7D4c2oz9mfLhlT1ElAzGB5lO1lE33BPyrdNy1cJyCIOecT4cn4VeJOFrnjOeu+IftZ3zqdFETw==",
       "requires": {
         "@codemirror/text": "^0.19.0"
       }
@@ -28400,7 +28403,7 @@
         "@codemirror/highlight": "^0.19.6",
         "@codemirror/language": "^0.19.5",
         "@codemirror/lint": "^0.19.3",
-        "@codemirror/state": "^0.19.5",
+        "@codemirror/state": "^0.19.6",
         "@codemirror/view": "^0.19.20",
         "@lezer/common": "^0.15.8",
         "@lezer/generator": "^0.15.2",
@@ -29627,7 +29630,7 @@
         "@codemirror/lint": "^0.19.3",
         "@codemirror/matchbrackets": "^0.19.3",
         "@codemirror/search": "^0.19.3",
-        "@codemirror/state": "^0.19.5",
+        "@codemirror/state": "^0.19.6",
         "@codemirror/view": "^0.19.20",
         "@forevolve/bootstrap-dark": "^1.0.0",
         "@fortawesome/fontawesome-svg-core": "^1.2.14",
diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json
index 033fe74a9b..15885dea2c 100644
--- a/web/ui/react-app/package.json
+++ b/web/ui/react-app/package.json
@@ -13,7 +13,7 @@
     "@codemirror/lint": "^0.19.3",
     "@codemirror/matchbrackets": "^0.19.3",
     "@codemirror/search": "^0.19.3",
-    "@codemirror/state": "^0.19.5",
+    "@codemirror/state": "^0.19.6",
     "@codemirror/view": "^0.19.20",
     "@forevolve/bootstrap-dark": "^1.0.0",
     "@fortawesome/fontawesome-svg-core": "^1.2.14",

From 5538c64e8edaf770208e79214841a52d9d95e5b0 Mon Sep 17 00:00:00 2001
From: lzhfromustc <43191155+lzhfromustc@users.noreply.github.com>
Date: Tue, 23 Nov 2021 00:58:17 -0800
Subject: [PATCH 24/31] web:Fix a potential goroutine leak by channel (#8965)

Signed-off-by: lzhfromustc <lzhfromustc@gmail.com>
---
 web/web.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/web/web.go b/web/web.go
index d777917ed4..01014f4266 100644
--- a/web/web.go
+++ b/web/web.go
@@ -594,7 +594,7 @@ func (h *Handler) Run(ctx context.Context, listener net.Listener, webConfig stri
 		ReadTimeout: h.options.ReadTimeout,
 	}
 
-	errCh := make(chan error)
+	errCh := make(chan error, 1)
 	go func() {
 		errCh <- toolkit_web.Serve(listener, httpSrv, webConfig, h.logger)
 	}()

From 41e27dea73abc48a0adfe966d9a216d82ac02785 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 23 Nov 2021 07:38:16 -0500
Subject: [PATCH 25/31] build(deps): bump github.com/aws/aws-sdk-go from 1.42.8
 to 1.42.10 (#9845)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 go.mod | 2 +-
 go.sum | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/go.mod b/go.mod
index 677ff603a1..6b58e238c1 100644
--- a/go.mod
+++ b/go.mod
@@ -9,7 +9,7 @@ require (
 	github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
 	github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
 	github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a
-	github.com/aws/aws-sdk-go v1.42.8
+	github.com/aws/aws-sdk-go v1.42.10
 	github.com/cespare/xxhash/v2 v2.1.2
 	github.com/containerd/containerd v1.5.7 // indirect
 	github.com/dennwc/varint v1.0.0
diff --git a/go.sum b/go.sum
index 9042ed77b5..824edb52c3 100644
--- a/go.sum
+++ b/go.sum
@@ -187,8 +187,8 @@ github.com/aws/aws-sdk-go v1.30.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZve
 github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48=
 github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
 github.com/aws/aws-sdk-go v1.40.11/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
-github.com/aws/aws-sdk-go v1.42.8 h1:Tj2RP4Fas1mYchwbmw0qWLJIEATAseyp5iTa1D+LWYQ=
-github.com/aws/aws-sdk-go v1.42.8/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
+github.com/aws/aws-sdk-go v1.42.10 h1:PW9G/hnsuKttbFtOcgNKD0vQrp4yfNrtACA+X0p9mjM=
+github.com/aws/aws-sdk-go v1.42.10/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
 github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
 github.com/benbjohnson/immutable v0.2.1/go.mod h1:uc6OHo6PN2++n98KHLxW8ef4W42ylHiQSENghE1ezxI=
 github.com/benbjohnson/tmpl v1.0.0/go.mod h1:igT620JFIi44B6awvU9IsDhR77IXWtFigTLil/RPdps=

From 17a92ca6a843477b8eb9a5d1255abd3adffe7091 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 23 Nov 2021 17:03:23 +0100
Subject: [PATCH 26/31] build(deps-dev): bump @types/jquery from 3.5.8 to 3.5.9
 in /web/ui (#9844)

Bumps [@types/jquery](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jquery) from 3.5.8 to 3.5.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jquery)

---
updated-dependencies:
- dependency-name: "@types/jquery"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 web/ui/package-lock.json      | 13 ++++++++-----
 web/ui/react-app/package.json |  2 +-
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json
index e566fe6845..a4f6408924 100644
--- a/web/ui/package-lock.json
+++ b/web/ui/package-lock.json
@@ -1746,9 +1746,10 @@
       }
     },
     "node_modules/@types/jquery": {
-      "version": "3.5.8",
+      "version": "3.5.9",
+      "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.9.tgz",
+      "integrity": "sha512-B8pDk+sH/tSv/HKdx6EQER6BfUOb2GtKs0LOmozziS4h7cbe8u/eYySfUAeTwD+J09SqV3man7AMWIA5mgzCBA==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
         "@types/sizzle": "*"
       }
@@ -7250,7 +7251,7 @@
         "@types/enzyme": "^3.10.10",
         "@types/flot": "0.0.32",
         "@types/jest": "^27.0.3",
-        "@types/jquery": "^3.5.8",
+        "@types/jquery": "^3.5.9",
         "@types/node": "^16.11.9",
         "@types/react": "^17.0.36",
         "@types/react-copy-to-clipboard": "^5.0.2",
@@ -27782,7 +27783,9 @@
       }
     },
     "@types/jquery": {
-      "version": "3.5.8",
+      "version": "3.5.9",
+      "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.9.tgz",
+      "integrity": "sha512-B8pDk+sH/tSv/HKdx6EQER6BfUOb2GtKs0LOmozziS4h7cbe8u/eYySfUAeTwD+J09SqV3man7AMWIA5mgzCBA==",
       "dev": true,
       "requires": {
         "@types/sizzle": "*"
@@ -29641,7 +29644,7 @@
         "@types/enzyme": "^3.10.10",
         "@types/flot": "0.0.32",
         "@types/jest": "^27.0.3",
-        "@types/jquery": "^3.5.8",
+        "@types/jquery": "^3.5.9",
         "@types/node": "^16.11.9",
         "@types/react": "^17.0.36",
         "@types/react-copy-to-clipboard": "^5.0.2",
diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json
index 15885dea2c..0a7254be62 100644
--- a/web/ui/react-app/package.json
+++ b/web/ui/react-app/package.json
@@ -68,7 +68,7 @@
     "@types/enzyme": "^3.10.10",
     "@types/flot": "0.0.32",
     "@types/jest": "^27.0.3",
-    "@types/jquery": "^3.5.8",
+    "@types/jquery": "^3.5.9",
     "@types/node": "^16.11.9",
     "@types/react": "^17.0.36",
     "@types/react-copy-to-clipboard": "^5.0.2",

From d9a8c453a0086c0f3d061e86c7be83d0595f9ba9 Mon Sep 17 00:00:00 2001
From: Matheus Alcantara <matheusssilv97@gmail.com>
Date: Tue, 23 Nov 2021 22:09:28 -0300
Subject: [PATCH 27/31] cmd: use t.TempDir instead of ioutil.TempDir on tests
 (#9852)

---
 cmd/prometheus/main_test.go      |  7 +------
 cmd/prometheus/query_log_test.go |  6 +-----
 cmd/promtool/backfill_test.go    | 10 ++--------
 cmd/promtool/rules_test.go       | 13 ++-----------
 4 files changed, 6 insertions(+), 30 deletions(-)

diff --git a/cmd/prometheus/main_test.go b/cmd/prometheus/main_test.go
index c3915c7ca4..1f161d26be 100644
--- a/cmd/prometheus/main_test.go
+++ b/cmd/prometheus/main_test.go
@@ -288,12 +288,7 @@ func TestMaxBlockChunkSegmentSizeBounds(t *testing.T) {
 }
 
 func TestTimeMetrics(t *testing.T) {
-	tmpDir, err := ioutil.TempDir("", "time_metrics_e2e")
-	require.NoError(t, err)
-
-	defer func() {
-		require.NoError(t, os.RemoveAll(tmpDir))
-	}()
+	tmpDir := t.TempDir()
 
 	reg := prometheus.NewRegistry()
 	db, err := openDBWithMetrics(tmpDir, log.NewNopLogger(), reg, nil, nil)
diff --git a/cmd/prometheus/query_log_test.go b/cmd/prometheus/query_log_test.go
index 1b2bd4f974..844bde1c96 100644
--- a/cmd/prometheus/query_log_test.go
+++ b/cmd/prometheus/query_log_test.go
@@ -248,11 +248,7 @@ func (p *queryLogTest) run(t *testing.T) {
 		p.setQueryLog(t, "")
 	}
 
-	dir, err := ioutil.TempDir("", "query_log_test")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(dir))
-	}()
+	dir := t.TempDir()
 
 	params := append([]string{
 		"-test.main",
diff --git a/cmd/promtool/backfill_test.go b/cmd/promtool/backfill_test.go
index c9493f134c..c4e6c6b7c0 100644
--- a/cmd/promtool/backfill_test.go
+++ b/cmd/promtool/backfill_test.go
@@ -15,9 +15,7 @@ package main
 
 import (
 	"context"
-	"io/ioutil"
 	"math"
-	"os"
 	"sort"
 	"testing"
 	"time"
@@ -687,13 +685,9 @@ after_eof 1 2
 		t.Run(test.Description, func(t *testing.T) {
 			t.Logf("Test:%s", test.Description)
 
-			outputDir, err := ioutil.TempDir("", "myDir")
-			require.NoError(t, err)
-			defer func() {
-				require.NoError(t, os.RemoveAll(outputDir))
-			}()
+			outputDir := t.TempDir()
 
-			err = backfill(test.MaxSamplesInAppender, []byte(test.ToParse), outputDir, false, false, test.MaxBlockDuration)
+			err := backfill(test.MaxSamplesInAppender, []byte(test.ToParse), outputDir, false, false, test.MaxBlockDuration)
 
 			if !test.IsOk {
 				require.Error(t, err, test.Description)
diff --git a/cmd/promtool/rules_test.go b/cmd/promtool/rules_test.go
index 10d59d5cc5..decda0fe38 100644
--- a/cmd/promtool/rules_test.go
+++ b/cmd/promtool/rules_test.go
@@ -17,7 +17,6 @@ import (
 	"context"
 	"io/ioutil"
 	"math"
-	"os"
 	"path/filepath"
 	"testing"
 	"time"
@@ -72,11 +71,7 @@ func TestBackfillRuleIntegration(t *testing.T) {
 	}
 	for _, tt := range testCases {
 		t.Run(tt.name, func(t *testing.T) {
-			tmpDir, err := ioutil.TempDir("", "backfilldata")
-			require.NoError(t, err)
-			defer func() {
-				require.NoError(t, os.RemoveAll(tmpDir))
-			}()
+			tmpDir := t.TempDir()
 			ctx := context.Background()
 
 			// Execute the test more than once to simulate running the rule importer twice with the same data.
@@ -219,11 +214,7 @@ func createMultiRuleTestFiles(path string) error {
 // TestBackfillLabels confirms that the labels in the rule file override the labels from the metrics
 // received from Prometheus Query API, including the __name__ label.
 func TestBackfillLabels(t *testing.T) {
-	tmpDir, err := ioutil.TempDir("", "backfilldata")
-	require.NoError(t, err)
-	defer func() {
-		require.NoError(t, os.RemoveAll(tmpDir))
-	}()
+	tmpDir := t.TempDir()
 	ctx := context.Background()
 
 	start := time.Date(2009, time.November, 10, 6, 34, 0, 0, time.UTC)

From 5e746e4e88adfe44a69764e3ac99d2d01f2224db Mon Sep 17 00:00:00 2001
From: Oleg Zaytsev <mail@olegzaytsev.com>
Date: Wed, 24 Nov 2021 10:56:37 +0100
Subject: [PATCH 28/31] Check postings bytes length when decoding (#9766)

Added validation to expected postings length compared to the bytes slice
length. With 32bit postings, we expect to have 4 bytes per each posting.
If the number doesn't add up, we know that the input data is not
compatible with our code (maybe it's cut, or padded with trash, or even
written in a different coded).

This is needed in downstream projects to correctly identify cached
postings written with an unknown codec, but it's also a good idea to
validate it here.

Signed-off-by: Oleg Zaytsev <mail@olegzaytsev.com>
---
 tsdb/index/index.go      | 9 ++++++++-
 tsdb/index/index_test.go | 5 +++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/tsdb/index/index.go b/tsdb/index/index.go
index 957e468f67..0d2981385d 100644
--- a/tsdb/index/index.go
+++ b/tsdb/index/index.go
@@ -18,6 +18,7 @@ import (
 	"bytes"
 	"context"
 	"encoding/binary"
+	"fmt"
 	"hash"
 	"hash/crc32"
 	"io"
@@ -1782,7 +1783,13 @@ func (dec *Decoder) Postings(b []byte) (int, Postings, error) {
 	d := encoding.Decbuf{B: b}
 	n := d.Be32int()
 	l := d.Get()
-	return n, newBigEndianPostings(l), d.Err()
+	if d.Err() != nil {
+		return 0, nil, d.Err()
+	}
+	if len(l) != 4*n {
+		return 0, nil, fmt.Errorf("unexpected postings length, should be %d bytes for %d postings, got %d bytes", 4*n, n, len(l))
+	}
+	return n, newBigEndianPostings(l), nil
 }
 
 // LabelNamesOffsetsFor decodes the offsets of the name symbols for a given series.
diff --git a/tsdb/index/index_test.go b/tsdb/index/index_test.go
index c859dbb47e..e2764ff26f 100644
--- a/tsdb/index/index_test.go
+++ b/tsdb/index/index_test.go
@@ -560,3 +560,8 @@ func TestSymbols(t *testing.T) {
 	}
 	require.NoError(t, iter.Err())
 }
+
+func TestDecoder_Postings_WrongInput(t *testing.T) {
+	_, _, err := (&Decoder{}).Postings([]byte("the cake is a lie"))
+	require.Error(t, err)
+}

From 60ce257072998d6e5af473f441504ef051b8ee1f Mon Sep 17 00:00:00 2001
From: jessicagreben <jessicagrebens@gmail.com>
Date: Wed, 24 Nov 2021 08:26:46 -0800
Subject: [PATCH 29/31] update email

Signed-off-by: jessicagreben <jessicagrebens@gmail.com>
---
 MAINTAINERS.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/MAINTAINERS.md b/MAINTAINERS.md
index 9f24ddf8c3..f45fa6b346 100644
--- a/MAINTAINERS.md
+++ b/MAINTAINERS.md
@@ -1,7 +1,7 @@
 Julien Pivotto (<roidelapluie@prometheus.io> / @roidelapluie) and Levi Harrison (<levi@leviharrison.dev> / @LeviHarrison) are the main/default maintainers, some parts of the codebase have other maintainers:
 
 * `cmd`
-  * `promtool`: David Leadbeater (<dgl@dgl.cx> / @dgl), Jessica Grebenschikov (<jessica.greben1@gmail.com> / @jessicagreben)
+  * `promtool`: David Leadbeater (<dgl@dgl.cx> / @dgl), Jessica Grebenschikov (<jessicagreben@prometheus.io> / @jessicagreben)
 * `discovery`
   * `k8s`: Frederic Branczyk (<fbranczyk@gmail.com> / @brancz)
 * `documentation`

From 427425cc9f477db22a8b3b1e832c965033322a44 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Rabenstein?= <beorn@grafana.com>
Date: Thu, 25 Nov 2021 08:08:24 +0100
Subject: [PATCH 30/31] promql: Remove unused Point.MarshalJSON method (#9860)

JSON marshaling is only needed for the HTTP API. Since Point is such a
frequently marshaled type, it gets an optimized treatment directly in
web/api/v1/api.go. The MarshalJSON method still provided in the promql
package is therefore unused and its existence is confusing.

Signed-off-by: beorn7 <beorn@grafana.com>
---
 promql/value.go | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/promql/value.go b/promql/value.go
index 81af1ad9da..176b856960 100644
--- a/promql/value.go
+++ b/promql/value.go
@@ -77,6 +77,9 @@ func (s Series) String() string {
 }
 
 // Point represents a single data point for a given timestamp.
+//
+// Note that Point's JSON marshaling is done in an optimized fashion in
+// web/api/v1/api.go. Therefore, no MarshalJSON method is provided here.
 type Point struct {
 	T int64
 	V float64
@@ -87,12 +90,6 @@ func (p Point) String() string {
 	return fmt.Sprintf("%v @[%v]", v, p.T)
 }
 
-// MarshalJSON implements json.Marshaler.
-func (p Point) MarshalJSON() ([]byte, error) {
-	v := strconv.FormatFloat(p.V, 'f', -1, 64)
-	return json.Marshal([...]interface{}{float64(p.T) / 1000, v})
-}
-
 // Sample is a single sample belonging to a metric.
 type Sample struct {
 	Point

From 1b74a3812e4fcf1e395fb12c443f8b573a08f15f Mon Sep 17 00:00:00 2001
From: Bryan Boreham <bjboreham@gmail.com>
Date: Thu, 25 Nov 2021 08:06:14 +0000
Subject: [PATCH 31/31] Fix panic, out of order chunks, and race warning during
 WAL replay (#9856)

* Fix panic on WAL replay

Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>

* Refactor: introduce walSubsetProcessor

walSubsetProcessor packages up the `processWALSamples()` function and
its input and output channels, helping to clarify how these things
relate.

Signed-off-by: Bryan Boreham <bjboreham@gmail.com>

* Refactor: extract more methods onto walSubsetProcessor

This makes the main logic easier to follow.

Signed-off-by: Bryan Boreham <bjboreham@gmail.com>

* Fix race warning by locking processWALSamples

Although we have waited for the processor to finish, we still get a
warning from the race detector because it doesn't know how the different
parts relate.

Add a lock round each batch of samples, so the race detector can see
that we never access series owned by the processor outside of a lock.

Signed-off-by: Bryan Boreham <bjboreham@gmail.com>

* Added test to reproduce issue 9859

Signed-off-by: Marco Pracucci <marco@pracucci.com>

* Remove redundant unit test

Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>

* Fix out of order chunks during WAL replay

Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>

* Fix nits

Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>

Co-authored-by: Ganesh Vernekar <ganeshvern@gmail.com>
Co-authored-by: Marco Pracucci <marco@pracucci.com>
---
 tsdb/db_test.go  |  86 +++++++++++++++++++++++++++++++
 tsdb/head_wal.go | 130 ++++++++++++++++++++++++++++-------------------
 2 files changed, 163 insertions(+), 53 deletions(-)

diff --git a/tsdb/db_test.go b/tsdb/db_test.go
index a6e85f90cb..063a90abaf 100644
--- a/tsdb/db_test.go
+++ b/tsdb/db_test.go
@@ -1013,6 +1013,92 @@ func TestWALSegmentSizeOptions(t *testing.T) {
 	}
 }
 
+// https://github.com/prometheus/prometheus/issues/9846
+// https://github.com/prometheus/prometheus/issues/9859
+func TestWALReplayRaceOnSamplesLoggedBeforeSeries(t *testing.T) {
+	const (
+		numRuns                        = 1
+		numSamplesBeforeSeriesCreation = 1000
+	)
+
+	// We test both with few and many samples appended after series creation. If samples are < 120 then there's no
+	// mmap-ed chunk, otherwise there's at least 1 mmap-ed chunk when replaying the WAL.
+	for _, numSamplesAfterSeriesCreation := range []int{1, 1000} {
+		for run := 1; run <= numRuns; run++ {
+			t.Run(fmt.Sprintf("samples after series creation = %d, run = %d", numSamplesAfterSeriesCreation, run), func(t *testing.T) {
+				testWALReplayRaceOnSamplesLoggedBeforeSeries(t, numSamplesBeforeSeriesCreation, numSamplesAfterSeriesCreation)
+			})
+		}
+	}
+}
+
+func testWALReplayRaceOnSamplesLoggedBeforeSeries(t *testing.T, numSamplesBeforeSeriesCreation, numSamplesAfterSeriesCreation int) {
+	const numSeries = 1000
+
+	db := openTestDB(t, nil, nil)
+	db.DisableCompactions()
+
+	for seriesRef := 1; seriesRef <= numSeries; seriesRef++ {
+		// Log samples before the series is logged to the WAL.
+		var enc record.Encoder
+		var samples []record.RefSample
+
+		for ts := 0; ts < numSamplesBeforeSeriesCreation; ts++ {
+			samples = append(samples, record.RefSample{
+				Ref: chunks.HeadSeriesRef(uint64(seriesRef)),
+				T:   int64(ts),
+				V:   float64(ts),
+			})
+		}
+
+		err := db.Head().wal.Log(enc.Samples(samples, nil))
+		require.NoError(t, err)
+
+		// Add samples via appender so that they're logged after the series in the WAL.
+		app := db.Appender(context.Background())
+		lbls := labels.FromStrings("series_id", strconv.Itoa(seriesRef))
+
+		for ts := numSamplesBeforeSeriesCreation; ts < numSamplesBeforeSeriesCreation+numSamplesAfterSeriesCreation; ts++ {
+			_, err := app.Append(0, lbls, int64(ts), float64(ts))
+			require.NoError(t, err)
+		}
+		require.NoError(t, app.Commit())
+	}
+
+	require.NoError(t, db.Close())
+
+	// Reopen the DB, replaying the WAL.
+	reopenDB, err := Open(db.Dir(), log.NewLogfmtLogger(os.Stderr), nil, nil, nil)
+	require.NoError(t, err)
+	t.Cleanup(func() {
+		require.NoError(t, reopenDB.Close())
+	})
+
+	// Query back chunks for all series.
+	q, err := reopenDB.ChunkQuerier(context.Background(), math.MinInt64, math.MaxInt64)
+	require.NoError(t, err)
+
+	set := q.Select(false, nil, labels.MustNewMatcher(labels.MatchRegexp, "series_id", ".+"))
+	actualSeries := 0
+
+	for set.Next() {
+		actualSeries++
+		actualChunks := 0
+
+		chunksIt := set.At().Iterator()
+		for chunksIt.Next() {
+			actualChunks++
+		}
+		require.NoError(t, chunksIt.Err())
+
+		// We expect 1 chunk every 120 samples after series creation.
+		require.Equalf(t, (numSamplesAfterSeriesCreation/120)+1, actualChunks, "series: %s", set.At().Labels().String())
+	}
+
+	require.NoError(t, set.Err())
+	require.Equal(t, numSeries, actualSeries)
+}
+
 func TestTombstoneClean(t *testing.T) {
 	numSamples := int64(10)
 
diff --git a/tsdb/head_wal.go b/tsdb/head_wal.go
index 5d5c995b3c..8191284932 100644
--- a/tsdb/head_wal.go
+++ b/tsdb/head_wal.go
@@ -51,13 +51,10 @@ func (h *Head) loadWAL(r *wal.Reader, multiRef map[chunks.HeadSeriesRef]chunks.H
 	var mmapOverlappingChunks uint64
 
 	// Start workers that each process samples for a partition of the series ID space.
-	// They are connected through a ring of channels which ensures that all sample batches
-	// read from the WAL are processed in order.
 	var (
 		wg             sync.WaitGroup
 		n              = runtime.GOMAXPROCS(0)
-		inputs         = make([]chan []record.RefSample, n)
-		outputs        = make([]chan []record.RefSample, n)
+		processors     = make([]walSubsetProcessor, n)
 		exemplarsInput chan record.RefExemplar
 
 		dec    record.Decoder
@@ -92,9 +89,7 @@ func (h *Head) loadWAL(r *wal.Reader, multiRef map[chunks.HeadSeriesRef]chunks.H
 		_, ok := err.(*wal.CorruptionErr)
 		if ok || seriesCreationErr != nil {
 			for i := 0; i < n; i++ {
-				close(inputs[i])
-				for range outputs[i] {
-				}
+				processors[i].closeAndDrain()
 			}
 			close(exemplarsInput)
 			wg.Wait()
@@ -103,14 +98,13 @@ func (h *Head) loadWAL(r *wal.Reader, multiRef map[chunks.HeadSeriesRef]chunks.H
 
 	wg.Add(n)
 	for i := 0; i < n; i++ {
-		outputs[i] = make(chan []record.RefSample, 300)
-		inputs[i] = make(chan []record.RefSample, 300)
+		processors[i].setup()
 
-		go func(input <-chan []record.RefSample, output chan<- []record.RefSample) {
-			unknown := h.processWALSamples(h.minValidTime.Load(), input, output)
+		go func(wp *walSubsetProcessor) {
+			unknown := wp.processWALSamples(h)
 			unknownRefs.Add(unknown)
 			wg.Done()
-		}(inputs[i], outputs[i])
+		}(&processors[i])
 	}
 
 	wg.Add(1)
@@ -212,11 +206,20 @@ Outer:
 					h.lastSeriesID.Store(uint64(walSeries.Ref))
 				}
 
+				idx := uint64(mSeries.ref) % uint64(n)
+				// It is possible that some old sample is being processed in processWALSamples that
+				// could cause race below. So we wait for the goroutine to empty input the buffer and finish
+				// processing all old samples after emptying the buffer.
+				processors[idx].waitUntilIdle()
+				// Lock the subset so we can modify the series object
+				processors[idx].mx.Lock()
+
 				mmc := mmappedChunks[walSeries.Ref]
 
 				if created {
 					// This is the first WAL series record for this series.
-					h.setMMappedChunks(mSeries, mmc)
+					h.resetSeriesWithMMappedChunks(mSeries, mmc)
+					processors[idx].mx.Unlock()
 					continue
 				}
 
@@ -226,23 +229,6 @@ Outer:
 
 				multiRef[walSeries.Ref] = mSeries.ref
 
-				idx := uint64(mSeries.ref) % uint64(n)
-				// It is possible that some old sample is being processed in processWALSamples that
-				// could cause race below. So we wait for the goroutine to empty input the buffer and finish
-				// processing all old samples after emptying the buffer.
-				select {
-				case <-outputs[idx]: // allow output side to drain to avoid deadlock
-				default:
-				}
-				inputs[idx] <- []record.RefSample{}
-				for len(inputs[idx]) != 0 {
-					time.Sleep(1 * time.Millisecond)
-					select {
-					case <-outputs[idx]: // allow output side to drain to avoid deadlock
-					default:
-					}
-				}
-
 				// Checking if the new m-mapped chunks overlap with the already existing ones.
 				if len(mSeries.mmappedChunks) > 0 && len(mmc) > 0 {
 					if overlapsClosedInterval(
@@ -266,12 +252,9 @@ Outer:
 				}
 
 				// Replacing m-mapped chunks with the new ones (could be empty).
-				h.setMMappedChunks(mSeries, mmc)
+				h.resetSeriesWithMMappedChunks(mSeries, mmc)
 
-				// Any samples replayed till now would already be compacted. Resetting the head chunk.
-				mSeries.nextAt = 0
-				mSeries.headChunk = nil
-				mSeries.app = nil
+				processors[idx].mx.Unlock()
 			}
 			//nolint:staticcheck // Ignore SA6002 relax staticcheck verification.
 			seriesPool.Put(v)
@@ -287,12 +270,7 @@ Outer:
 					m = len(samples)
 				}
 				for i := 0; i < n; i++ {
-					var buf []record.RefSample
-					select {
-					case buf = <-outputs[i]:
-					default:
-					}
-					shards[i] = buf[:0]
+					shards[i] = processors[i].reuseBuf()
 				}
 				for _, sam := range samples[:m] {
 					if r, ok := multiRef[sam.Ref]; ok {
@@ -302,7 +280,7 @@ Outer:
 					shards[mod] = append(shards[mod], sam)
 				}
 				for i := 0; i < n; i++ {
-					inputs[i] <- shards[i]
+					processors[i].input <- shards[i]
 				}
 				samples = samples[m:]
 			}
@@ -346,9 +324,7 @@ Outer:
 
 	// Signal termination to each worker and wait for it to close its output channel.
 	for i := 0; i < n; i++ {
-		close(inputs[i])
-		for range outputs[i] {
-		}
+		processors[i].closeAndDrain()
 	}
 	close(exemplarsInput)
 	wg.Wait()
@@ -366,7 +342,8 @@ Outer:
 	return nil
 }
 
-func (h *Head) setMMappedChunks(mSeries *memSeries, mmc []*mmappedChunk) {
+// resetSeriesWithMMappedChunks is only used during the WAL replay.
+func (h *Head) resetSeriesWithMMappedChunks(mSeries *memSeries, mmc []*mmappedChunk) {
 	h.metrics.chunksCreated.Add(float64(len(mmc)))
 	h.metrics.chunksRemoved.Add(float64(len(mSeries.mmappedChunks)))
 	h.metrics.chunks.Add(float64(len(mmc) - len(mSeries.mmappedChunks)))
@@ -378,20 +355,51 @@ func (h *Head) setMMappedChunks(mSeries *memSeries, mmc []*mmappedChunk) {
 		mSeries.mmMaxTime = mmc[len(mmc)-1].maxTime
 		h.updateMinMaxTime(mmc[0].minTime, mSeries.mmMaxTime)
 	}
+
+	// Any samples replayed till now would already be compacted. Resetting the head chunk.
+	mSeries.nextAt = 0
+	mSeries.headChunk = nil
+	mSeries.app = nil
+}
+
+type walSubsetProcessor struct {
+	mx     sync.Mutex // Take this lock while modifying series in the subset.
+	input  chan []record.RefSample
+	output chan []record.RefSample
+}
+
+func (wp *walSubsetProcessor) setup() {
+	wp.output = make(chan []record.RefSample, 300)
+	wp.input = make(chan []record.RefSample, 300)
+}
+
+func (wp *walSubsetProcessor) closeAndDrain() {
+	close(wp.input)
+	for range wp.output {
+	}
+}
+
+// If there is a buffer in the output chan, return it for reuse, otherwise return nil.
+func (wp *walSubsetProcessor) reuseBuf() []record.RefSample {
+	select {
+	case buf := <-wp.output:
+		return buf[:0]
+	default:
+	}
+	return nil
 }
 
 // processWALSamples adds the samples it receives to the head and passes
 // the buffer received to an output channel for reuse.
 // Samples before the minValidTime timestamp are discarded.
-func (h *Head) processWALSamples(
-	minValidTime int64,
-	input <-chan []record.RefSample, output chan<- []record.RefSample,
-) (unknownRefs uint64) {
-	defer close(output)
+func (wp *walSubsetProcessor) processWALSamples(h *Head) (unknownRefs uint64) {
+	defer close(wp.output)
 
+	minValidTime := h.minValidTime.Load()
 	mint, maxt := int64(math.MaxInt64), int64(math.MinInt64)
 
-	for samples := range input {
+	for samples := range wp.input {
+		wp.mx.Lock()
 		for _, s := range samples {
 			if s.T < minValidTime {
 				continue
@@ -415,13 +423,29 @@ func (h *Head) processWALSamples(
 				mint = s.T
 			}
 		}
-		output <- samples
+		wp.mx.Unlock()
+		wp.output <- samples
 	}
 	h.updateMinMaxTime(mint, maxt)
 
 	return unknownRefs
 }
 
+func (wp *walSubsetProcessor) waitUntilIdle() {
+	select {
+	case <-wp.output: // Allow output side to drain to avoid deadlock.
+	default:
+	}
+	wp.input <- []record.RefSample{}
+	for len(wp.input) != 0 {
+		time.Sleep(1 * time.Millisecond)
+		select {
+		case <-wp.output: // Allow output side to drain to avoid deadlock.
+		default:
+		}
+	}
+}
+
 const (
 	chunkSnapshotRecordTypeSeries     uint8 = 1
 	chunkSnapshotRecordTypeTombstones uint8 = 2