From 4c374b68c4403015b565b222ec63622c1526047a Mon Sep 17 00:00:00 2001
From: Li Yi Yu
Date: Fri, 17 Nov 2023 14:00:37 -0500
Subject: [PATCH 1/5] chore(surveys): move open feedback template to top
(#18361)
---
frontend/src/scenes/surveys/constants.tsx | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/frontend/src/scenes/surveys/constants.tsx b/frontend/src/scenes/surveys/constants.tsx
index 84d0e1b33fdc9..b63a8ee82a2a9 100644
--- a/frontend/src/scenes/surveys/constants.tsx
+++ b/frontend/src/scenes/surveys/constants.tsx
@@ -158,6 +158,16 @@ export enum SurveyTemplateType {
}
export const defaultSurveyTemplates = [
+ {
+ type: SurveyTemplateType.OpenFeedback,
+ questions: [
+ {
+ type: SurveyQuestionType.Open,
+ question: 'What can we do to improve our product?',
+ },
+ ],
+ description: "Let your users share what's on their mind.",
+ },
{
type: SurveyTemplateType.Interview,
questions: [
@@ -245,14 +255,4 @@ export const defaultSurveyTemplates = [
],
description: 'Find out if it was something you said.',
},
- {
- type: SurveyTemplateType.OpenFeedback,
- questions: [
- {
- type: SurveyQuestionType.Open,
- question: 'What can we do to improve our product?',
- },
- ],
- description: "Let your users share what's on their mind.",
- },
]
From 46e8f1bbe31fdd33cf0792417cca8081b1414d9e Mon Sep 17 00:00:00 2001
From: James Greenhill
Date: Fri, 17 Nov 2023 11:24:43 -0800
Subject: [PATCH 2/5] chore: don't throw on inserts into too many parts on dev
(#18727)
---
docker/clickhouse/users-dev.xml | 37 ++++++++++++++++++++++-----------
docker/clickhouse/users.xml | 37 ++++++++++++++++++++++-----------
2 files changed, 50 insertions(+), 24 deletions(-)
diff --git a/docker/clickhouse/users-dev.xml b/docker/clickhouse/users-dev.xml
index dd6e54d7c5de3..ed8089e479eea 100644
--- a/docker/clickhouse/users-dev.xml
+++ b/docker/clickhouse/users-dev.xml
@@ -15,7 +15,8 @@
with minimum number of different symbols between replica's hostname and local hostname
(Hamming distance).
in_order - first live replica is chosen in specified order.
- first_or_random - if first replica one has higher number of errors, pick a random one from replicas with minimum number of errors.
+ first_or_random - if first replica one has higher number of errors, pick a random one from replicas
+ with minimum number of errors.
-->
random
@@ -23,6 +24,8 @@
50
+ 0
+
@@ -45,30 +48,39 @@
Password could be empty.
If you want to specify SHA256, place it in 'password_sha256_hex' element.
- Example: 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
- Restrictions of SHA256: impossibility to connect to ClickHouse using MySQL JS client (as of July 2019).
+ Example:
+ 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
+ Restrictions of SHA256: impossibility to connect to ClickHouse using MySQL JS client (as of July
+ 2019).
If you want to specify double SHA1, place it in 'password_double_sha1_hex' element.
- Example: e395796d6546b1b65db9d665cd43f0e858dd4303
+ Example:
+ e395796d6546b1b65db9d665cd43f0e858dd4303
- If you want to specify a previously defined LDAP server (see 'ldap_servers' in the main config) for authentication,
+ If you want to specify a previously defined LDAP server (see 'ldap_servers' in the main config) for
+ authentication,
place its name in 'server' element inside 'ldap' element.
Example: my_ldap_server
- If you want to authenticate the user via Kerberos (assuming Kerberos is enabled, see 'kerberos' in the main config),
+ If you want to authenticate the user via Kerberos (assuming Kerberos is enabled, see 'kerberos' in
+ the main config),
place 'kerberos' element instead of 'password' (and similar) elements.
- The name part of the canonical principal name of the initiator must match the user name for authentication to succeed.
- You can also place 'realm' element inside 'kerberos' element to further restrict authentication to only those requests
+ The name part of the canonical principal name of the initiator must match the user name for
+ authentication to succeed.
+ You can also place 'realm' element inside 'kerberos' element to further restrict authentication to
+ only those requests
whose initiator's realm matches it.
Example:
Example: EXAMPLE.COM
How to generate decent password:
- Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
+ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" |
+ sha256sum | tr -d '-'
In first line will be password and in second - corresponding SHA256.
How to generate double SHA1:
- Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
+ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" |
+ sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
In first line will be password and in second - corresponding double SHA1.
-->
@@ -89,7 +101,8 @@
To check access, DNS query is performed, and all received addresses compared to peer address.
Regular expression for host names. Example, ^server\d\d-\d\d-\d\.yandex\.ru$
To check access, DNS PTR query is performed for peer address and then regexp is applied.
- Then, for result of PTR query, another DNS query is performed and all received addresses compared to peer address.
+ Then, for result of PTR query, another DNS query is performed and all received addresses compared
+ to peer address.
Strongly recommended that regexp is ends with $
All results of DNS requests are cached till server restart.
-->
@@ -126,4 +139,4 @@
-
+
\ No newline at end of file
diff --git a/docker/clickhouse/users.xml b/docker/clickhouse/users.xml
index 49ac9f73e0de5..d9be644f1869e 100644
--- a/docker/clickhouse/users.xml
+++ b/docker/clickhouse/users.xml
@@ -15,12 +15,15 @@
with minimum number of different symbols between replica's hostname and local hostname
(Hamming distance).
in_order - first live replica is chosen in specified order.
- first_or_random - if first replica one has higher number of errors, pick a random one from replicas with minimum number of errors.
+ first_or_random - if first replica one has higher number of errors, pick a random one from replicas
+ with minimum number of errors.
-->
random
1
+ 0
+
@@ -43,30 +46,39 @@
Password could be empty.
If you want to specify SHA256, place it in 'password_sha256_hex' element.
- Example: 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
- Restrictions of SHA256: impossibility to connect to ClickHouse using MySQL JS client (as of July 2019).
+ Example:
+ 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
+ Restrictions of SHA256: impossibility to connect to ClickHouse using MySQL JS client (as of July
+ 2019).
If you want to specify double SHA1, place it in 'password_double_sha1_hex' element.
- Example: e395796d6546b1b65db9d665cd43f0e858dd4303
+ Example:
+ e395796d6546b1b65db9d665cd43f0e858dd4303
- If you want to specify a previously defined LDAP server (see 'ldap_servers' in the main config) for authentication,
+ If you want to specify a previously defined LDAP server (see 'ldap_servers' in the main config) for
+ authentication,
place its name in 'server' element inside 'ldap' element.
Example: my_ldap_server
- If you want to authenticate the user via Kerberos (assuming Kerberos is enabled, see 'kerberos' in the main config),
+ If you want to authenticate the user via Kerberos (assuming Kerberos is enabled, see 'kerberos' in
+ the main config),
place 'kerberos' element instead of 'password' (and similar) elements.
- The name part of the canonical principal name of the initiator must match the user name for authentication to succeed.
- You can also place 'realm' element inside 'kerberos' element to further restrict authentication to only those requests
+ The name part of the canonical principal name of the initiator must match the user name for
+ authentication to succeed.
+ You can also place 'realm' element inside 'kerberos' element to further restrict authentication to
+ only those requests
whose initiator's realm matches it.
Example:
Example: EXAMPLE.COM
How to generate decent password:
- Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
+ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" |
+ sha256sum | tr -d '-'
In first line will be password and in second - corresponding SHA256.
How to generate double SHA1:
- Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
+ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" |
+ sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
In first line will be password and in second - corresponding double SHA1.
-->
@@ -87,7 +99,8 @@
To check access, DNS query is performed, and all received addresses compared to peer address.
Regular expression for host names. Example, ^server\d\d-\d\d-\d\.yandex\.ru$
To check access, DNS PTR query is performed for peer address and then regexp is applied.
- Then, for result of PTR query, another DNS query is performed and all received addresses compared to peer address.
+ Then, for result of PTR query, another DNS query is performed and all received addresses compared
+ to peer address.
Strongly recommended that regexp is ends with $
All results of DNS requests are cached till server restart.
-->
@@ -124,4 +137,4 @@
-
+
\ No newline at end of file
From b5b492f5348a701026ad9e507b14d7641c84a184 Mon Sep 17 00:00:00 2001
From: James Greenhill
Date: Fri, 17 Nov 2023 11:30:20 -0800
Subject: [PATCH 3/5] Revert "chore: don't throw on inserts into too many parts
on dev" (#18728)
Revert "chore: don't throw on inserts into too many parts on dev (#18727)"
This reverts commit 46e8f1bbe31fdd33cf0792417cca8081b1414d9e.
---
docker/clickhouse/users-dev.xml | 37 +++++++++++----------------------
docker/clickhouse/users.xml | 37 +++++++++++----------------------
2 files changed, 24 insertions(+), 50 deletions(-)
diff --git a/docker/clickhouse/users-dev.xml b/docker/clickhouse/users-dev.xml
index ed8089e479eea..dd6e54d7c5de3 100644
--- a/docker/clickhouse/users-dev.xml
+++ b/docker/clickhouse/users-dev.xml
@@ -15,8 +15,7 @@
with minimum number of different symbols between replica's hostname and local hostname
(Hamming distance).
in_order - first live replica is chosen in specified order.
- first_or_random - if first replica one has higher number of errors, pick a random one from replicas
- with minimum number of errors.
+ first_or_random - if first replica one has higher number of errors, pick a random one from replicas with minimum number of errors.
-->
random
@@ -24,8 +23,6 @@
50
- 0
-
@@ -48,39 +45,30 @@
Password could be empty.
If you want to specify SHA256, place it in 'password_sha256_hex' element.
- Example:
- 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
- Restrictions of SHA256: impossibility to connect to ClickHouse using MySQL JS client (as of July
- 2019).
+ Example: 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
+ Restrictions of SHA256: impossibility to connect to ClickHouse using MySQL JS client (as of July 2019).
If you want to specify double SHA1, place it in 'password_double_sha1_hex' element.
- Example:
- e395796d6546b1b65db9d665cd43f0e858dd4303
+ Example: e395796d6546b1b65db9d665cd43f0e858dd4303
- If you want to specify a previously defined LDAP server (see 'ldap_servers' in the main config) for
- authentication,
+ If you want to specify a previously defined LDAP server (see 'ldap_servers' in the main config) for authentication,
place its name in 'server' element inside 'ldap' element.
Example: my_ldap_server
- If you want to authenticate the user via Kerberos (assuming Kerberos is enabled, see 'kerberos' in
- the main config),
+ If you want to authenticate the user via Kerberos (assuming Kerberos is enabled, see 'kerberos' in the main config),
place 'kerberos' element instead of 'password' (and similar) elements.
- The name part of the canonical principal name of the initiator must match the user name for
- authentication to succeed.
- You can also place 'realm' element inside 'kerberos' element to further restrict authentication to
- only those requests
+ The name part of the canonical principal name of the initiator must match the user name for authentication to succeed.
+ You can also place 'realm' element inside 'kerberos' element to further restrict authentication to only those requests
whose initiator's realm matches it.
Example:
Example: EXAMPLE.COM
How to generate decent password:
- Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" |
- sha256sum | tr -d '-'
+ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
In first line will be password and in second - corresponding SHA256.
How to generate double SHA1:
- Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" |
- sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
+ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
In first line will be password and in second - corresponding double SHA1.
-->
@@ -101,8 +89,7 @@
To check access, DNS query is performed, and all received addresses compared to peer address.
Regular expression for host names. Example, ^server\d\d-\d\d-\d\.yandex\.ru$
To check access, DNS PTR query is performed for peer address and then regexp is applied.
- Then, for result of PTR query, another DNS query is performed and all received addresses compared
- to peer address.
+ Then, for result of PTR query, another DNS query is performed and all received addresses compared to peer address.
Strongly recommended that regexp is ends with $
All results of DNS requests are cached till server restart.
-->
@@ -139,4 +126,4 @@
-
\ No newline at end of file
+
diff --git a/docker/clickhouse/users.xml b/docker/clickhouse/users.xml
index d9be644f1869e..49ac9f73e0de5 100644
--- a/docker/clickhouse/users.xml
+++ b/docker/clickhouse/users.xml
@@ -15,15 +15,12 @@
with minimum number of different symbols between replica's hostname and local hostname
(Hamming distance).
in_order - first live replica is chosen in specified order.
- first_or_random - if first replica one has higher number of errors, pick a random one from replicas
- with minimum number of errors.
+ first_or_random - if first replica one has higher number of errors, pick a random one from replicas with minimum number of errors.
-->
random
1
- 0
-
@@ -46,39 +43,30 @@
Password could be empty.
If you want to specify SHA256, place it in 'password_sha256_hex' element.
- Example:
- 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
- Restrictions of SHA256: impossibility to connect to ClickHouse using MySQL JS client (as of July
- 2019).
+ Example: 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
+ Restrictions of SHA256: impossibility to connect to ClickHouse using MySQL JS client (as of July 2019).
If you want to specify double SHA1, place it in 'password_double_sha1_hex' element.
- Example:
- e395796d6546b1b65db9d665cd43f0e858dd4303
+ Example: e395796d6546b1b65db9d665cd43f0e858dd4303
- If you want to specify a previously defined LDAP server (see 'ldap_servers' in the main config) for
- authentication,
+ If you want to specify a previously defined LDAP server (see 'ldap_servers' in the main config) for authentication,
place its name in 'server' element inside 'ldap' element.
Example: my_ldap_server
- If you want to authenticate the user via Kerberos (assuming Kerberos is enabled, see 'kerberos' in
- the main config),
+ If you want to authenticate the user via Kerberos (assuming Kerberos is enabled, see 'kerberos' in the main config),
place 'kerberos' element instead of 'password' (and similar) elements.
- The name part of the canonical principal name of the initiator must match the user name for
- authentication to succeed.
- You can also place 'realm' element inside 'kerberos' element to further restrict authentication to
- only those requests
+ The name part of the canonical principal name of the initiator must match the user name for authentication to succeed.
+ You can also place 'realm' element inside 'kerberos' element to further restrict authentication to only those requests
whose initiator's realm matches it.
Example:
Example: EXAMPLE.COM
How to generate decent password:
- Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" |
- sha256sum | tr -d '-'
+ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
In first line will be password and in second - corresponding SHA256.
How to generate double SHA1:
- Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" |
- sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
+ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
In first line will be password and in second - corresponding double SHA1.
-->
@@ -99,8 +87,7 @@
To check access, DNS query is performed, and all received addresses compared to peer address.
Regular expression for host names. Example, ^server\d\d-\d\d-\d\.yandex\.ru$
To check access, DNS PTR query is performed for peer address and then regexp is applied.
- Then, for result of PTR query, another DNS query is performed and all received addresses compared
- to peer address.
+ Then, for result of PTR query, another DNS query is performed and all received addresses compared to peer address.
Strongly recommended that regexp is ends with $
All results of DNS requests are cached till server restart.
-->
@@ -137,4 +124,4 @@
-
\ No newline at end of file
+
From ecbdd9c2b4e5571354ce1de5cde30f468844768b Mon Sep 17 00:00:00 2001
From: James Greenhill
Date: Fri, 17 Nov 2023 11:38:51 -0800
Subject: [PATCH 4/5] chore: add throw_on_max_partitions_per_insert_block=false
to dev config (#18729)
---
docker/clickhouse/config.xml | 290 +++++++++++++++++++++-----------
docker/clickhouse/users-dev.xml | 35 ++--
docker/clickhouse/users.xml | 35 ++--
3 files changed, 234 insertions(+), 126 deletions(-)
diff --git a/docker/clickhouse/config.xml b/docker/clickhouse/config.xml
index f3f858be7d117..31a58956f6e02 100644
--- a/docker/clickhouse/config.xml
+++ b/docker/clickhouse/config.xml
@@ -20,17 +20,20 @@
- trace
- test (not for production usage)
- [1]: https://github.com/pocoproject/poco/blob/poco-1.9.4-release/Foundation/include/Poco/Logger.h#L105-L114
+ [1]:
+ https://github.com/pocoproject/poco/blob/poco-1.9.4-release/Foundation/include/Poco/Logger.h#L105-L114
-->
trace
/var/log/clickhouse-server/clickhouse-server.log
/var/log/clickhouse-server/clickhouse-server.err.log
1000M
10
-
+
-
+
@@ -217,7 +225,8 @@
/path/to/ssl_ca_cert_file
-
none
@@ -232,10 +241,12 @@
false
-
+
-
+
/etc/clickhouse-server/server.crt
/etc/clickhouse-server/server.key
+
true
true
sslv2,sslv3
@@ -264,24 +276,30 @@
-
+
100
0
@@ -302,21 +320,25 @@
-->
0.9
-
4194304
-
0
-
@@ -341,14 +363,18 @@
-
-
-
+
true
@@ -644,14 +698,16 @@
-
+
localhost
9000
-
+
@@ -666,22 +722,28 @@
Example: "yandex.ru", "yandex.ru." and "www.yandex.ru" are different hosts.
If port is explicitly specified in URL, the host:port is checked as a whole.
If host specified here without port, any port with this host allowed.
- "yandex.ru" -> "yandex.ru:443", "yandex.ru:80" etc. is allowed, but "yandex.ru:80" -> only "yandex.ru:80" is allowed.
- If the host is specified as IP address, it is checked as specified in URL. Example: "[2a02:6b8:a::a]".
- If there are redirects and support for redirects is enabled, every redirect (the Location field) is checked.
+ "yandex.ru" -> "yandex.ru:443", "yandex.ru:80" etc. is allowed, but "yandex.ru:80" -> only
+ "yandex.ru:80" is allowed.
+ If the host is specified as IP address, it is checked as specified in URL. Example:
+ "[2a02:6b8:a::a]".
+ If there are redirects and support for redirects is enabled, every redirect (the Location field) is
+ checked.
Host should be specified using the host xml tag:
yandex.ru
-->
.*
-
@@ -701,7 +763,8 @@
@@ -710,7 +773,6 @@
-
3600
@@ -788,7 +850,8 @@
system
toYYYYMM(event_date)
-
@@ -843,7 +909,8 @@
+ Part log contains information about all actions with parts in MergeTree tables (creation, deletion,
+ merges, downloads).-->
system
@@ -852,8 +919,10 @@
-
+
system
@@ -933,7 +1003,8 @@
-->
-
+
@@ -965,12 +1036,14 @@
-->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1032,16 +1107,21 @@
-
+
+ 0
+
/var/lib/clickhouse/format_schemas/
-
false
-
+
false
-
+
https://6f33034cfe684dd7a3ab9875e57b1c8d@o388870.ingest.sentry.io/5226277
@@ -1183,4 +1269,4 @@
-->
-
+
\ No newline at end of file
diff --git a/docker/clickhouse/users-dev.xml b/docker/clickhouse/users-dev.xml
index dd6e54d7c5de3..704e99ef9e961 100644
--- a/docker/clickhouse/users-dev.xml
+++ b/docker/clickhouse/users-dev.xml
@@ -15,7 +15,8 @@
with minimum number of different symbols between replica's hostname and local hostname
(Hamming distance).
in_order - first live replica is chosen in specified order.
- first_or_random - if first replica one has higher number of errors, pick a random one from replicas with minimum number of errors.
+ first_or_random - if first replica one has higher number of errors, pick a random one from replicas
+ with minimum number of errors.
-->
random
@@ -45,30 +46,39 @@
Password could be empty.
If you want to specify SHA256, place it in 'password_sha256_hex' element.
- Example: 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
- Restrictions of SHA256: impossibility to connect to ClickHouse using MySQL JS client (as of July 2019).
+ Example:
+ 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
+ Restrictions of SHA256: impossibility to connect to ClickHouse using MySQL JS client (as of July
+ 2019).
If you want to specify double SHA1, place it in 'password_double_sha1_hex' element.
- Example: e395796d6546b1b65db9d665cd43f0e858dd4303
+ Example:
+ e395796d6546b1b65db9d665cd43f0e858dd4303
- If you want to specify a previously defined LDAP server (see 'ldap_servers' in the main config) for authentication,
+ If you want to specify a previously defined LDAP server (see 'ldap_servers' in the main config) for
+ authentication,
place its name in 'server' element inside 'ldap' element.
Example: my_ldap_server
- If you want to authenticate the user via Kerberos (assuming Kerberos is enabled, see 'kerberos' in the main config),
+ If you want to authenticate the user via Kerberos (assuming Kerberos is enabled, see 'kerberos' in
+ the main config),
place 'kerberos' element instead of 'password' (and similar) elements.
- The name part of the canonical principal name of the initiator must match the user name for authentication to succeed.
- You can also place 'realm' element inside 'kerberos' element to further restrict authentication to only those requests
+ The name part of the canonical principal name of the initiator must match the user name for
+ authentication to succeed.
+ You can also place 'realm' element inside 'kerberos' element to further restrict authentication to
+ only those requests
whose initiator's realm matches it.
Example:
Example: EXAMPLE.COM
How to generate decent password:
- Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
+ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" |
+ sha256sum | tr -d '-'
In first line will be password and in second - corresponding SHA256.
How to generate double SHA1:
- Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
+ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" |
+ sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
In first line will be password and in second - corresponding double SHA1.
-->
@@ -89,7 +99,8 @@
To check access, DNS query is performed, and all received addresses compared to peer address.
Regular expression for host names. Example, ^server\d\d-\d\d-\d\.yandex\.ru$
To check access, DNS PTR query is performed for peer address and then regexp is applied.
- Then, for result of PTR query, another DNS query is performed and all received addresses compared to peer address.
+ Then, for result of PTR query, another DNS query is performed and all received addresses compared
+ to peer address.
Strongly recommended that regexp is ends with $
All results of DNS requests are cached till server restart.
-->
@@ -126,4 +137,4 @@
-
+
\ No newline at end of file
diff --git a/docker/clickhouse/users.xml b/docker/clickhouse/users.xml
index 49ac9f73e0de5..ece3df0f09fbe 100644
--- a/docker/clickhouse/users.xml
+++ b/docker/clickhouse/users.xml
@@ -15,7 +15,8 @@
with minimum number of different symbols between replica's hostname and local hostname
(Hamming distance).
in_order - first live replica is chosen in specified order.
- first_or_random - if first replica one has higher number of errors, pick a random one from replicas with minimum number of errors.
+ first_or_random - if first replica one has higher number of errors, pick a random one from replicas
+ with minimum number of errors.
-->
random
@@ -43,30 +44,39 @@
Password could be empty.
If you want to specify SHA256, place it in 'password_sha256_hex' element.
- Example: 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
- Restrictions of SHA256: impossibility to connect to ClickHouse using MySQL JS client (as of July 2019).
+ Example:
+ 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
+ Restrictions of SHA256: impossibility to connect to ClickHouse using MySQL JS client (as of July
+ 2019).
If you want to specify double SHA1, place it in 'password_double_sha1_hex' element.
- Example: e395796d6546b1b65db9d665cd43f0e858dd4303
+ Example:
+ e395796d6546b1b65db9d665cd43f0e858dd4303
- If you want to specify a previously defined LDAP server (see 'ldap_servers' in the main config) for authentication,
+ If you want to specify a previously defined LDAP server (see 'ldap_servers' in the main config) for
+ authentication,
place its name in 'server' element inside 'ldap' element.
Example: my_ldap_server
- If you want to authenticate the user via Kerberos (assuming Kerberos is enabled, see 'kerberos' in the main config),
+ If you want to authenticate the user via Kerberos (assuming Kerberos is enabled, see 'kerberos' in
+ the main config),
place 'kerberos' element instead of 'password' (and similar) elements.
- The name part of the canonical principal name of the initiator must match the user name for authentication to succeed.
- You can also place 'realm' element inside 'kerberos' element to further restrict authentication to only those requests
+ The name part of the canonical principal name of the initiator must match the user name for
+ authentication to succeed.
+ You can also place 'realm' element inside 'kerberos' element to further restrict authentication to
+ only those requests
whose initiator's realm matches it.
Example:
Example: EXAMPLE.COM
How to generate decent password:
- Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
+ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" |
+ sha256sum | tr -d '-'
In first line will be password and in second - corresponding SHA256.
How to generate double SHA1:
- Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
+ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" |
+ sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
In first line will be password and in second - corresponding double SHA1.
-->
@@ -87,7 +97,8 @@
To check access, DNS query is performed, and all received addresses compared to peer address.
Regular expression for host names. Example, ^server\d\d-\d\d-\d\.yandex\.ru$
To check access, DNS PTR query is performed for peer address and then regexp is applied.
- Then, for result of PTR query, another DNS query is performed and all received addresses compared to peer address.
+ Then, for result of PTR query, another DNS query is performed and all received addresses compared
+ to peer address.
Strongly recommended that regexp is ends with $
All results of DNS requests are cached till server restart.
-->
@@ -124,4 +135,4 @@
-
+
\ No newline at end of file
From 4164eee4aefc696c411cd870b8117720b084fd96 Mon Sep 17 00:00:00 2001
From: Li Yi Yu
Date: Fri, 17 Nov 2023 15:25:28 -0500
Subject: [PATCH 5/5] fix(surveys): unexpected survey response type breaks
results page (#18731)
make sure react child object error doesn't occur
---
.../scenes-app-surveys--survey-templates.png | Bin 127417 -> 126231 bytes
frontend/src/scenes/surveys/surveyViewViz.tsx | 2 +-
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/frontend/__snapshots__/scenes-app-surveys--survey-templates.png b/frontend/__snapshots__/scenes-app-surveys--survey-templates.png
index 069a66dbfbb5b9c67bf2b967cf57e3a1f7187e5a..845b572228b88692a7cca5563d6f47f042af6422 100644
GIT binary patch
literal 126231
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%0A@k$U
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