From 0b19e5032010878c6a315569cd80767b8f6c2b75 Mon Sep 17 00:00:00 2001 From: Josh Earlenbaugh Date: Mon, 18 Nov 2024 15:07:50 -0500 Subject: [PATCH 01/35] Added release notes for 16.00.0000.02. --- .../odbc_16.00.0000.02_rel_notes.mdx | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx diff --git a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx new file mode 100644 index 00000000000..e5196661ba2 --- /dev/null +++ b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx @@ -0,0 +1,21 @@ +--- +title: "EDB ODBC Connector 16.00.0000.02 release notes" +navTitle: Version 16.00.0000.02 +--- + +Released: 20 Nov 2024 + +EDB ODBC Connector 16.00.0000.01 includes the following enhancement: + +| Type | Description | +| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Enhancement | Added support for EDB Postgres Advanced Server version 17.2. | + +!!!note + If you are upgrading an earlier ODBC version on Ubuntu/Debian installation, you need to run the install command and specify the version number in the package name. For example the command for Ubuntu 20 is: + + ``` + sudo apt-get install edb-odbc=16.00.0000.02-1.focal + ``` + + If you get a message about downgrading, you can ignore it. \ No newline at end of file From 6fa7f2a9aa82f139655a1eb100e4c9ce5701cdbe Mon Sep 17 00:00:00 2001 From: Josh Earlenbaugh Date: Mon, 18 Nov 2024 15:10:41 -0500 Subject: [PATCH 02/35] Added 16.00.0000.02 entry to rn index. --- product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx index a07085f47a0..b05f7560a21 100644 --- a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx +++ b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx @@ -2,6 +2,7 @@ title: "Release notes" navigation: - odbc_16.00.0000.01_rel_notes +- odbc_16.00.0000.02_rel_notes --- The EDB ODBC connector documentation describes the latest version of the EDB ODBC connector. @@ -11,3 +12,4 @@ Release notes describe what's new in a release. When a minor or patch release in | Version | Release date | | --------------------------------------------- | ------------ | | [16.00.0000.01](odbc_16.00.0000.01_rel_notes) | 09 Nov 2023 | +| [16.00.0000.02](odbc_16.00.0000.02_rel_notes) | 20 Nov 2024 | From 64455a7d584c1d3c191d6302101104f6b04c1aa7 Mon Sep 17 00:00:00 2001 From: Josh Earlenbaugh Date: Mon, 18 Nov 2024 15:20:25 -0500 Subject: [PATCH 03/35] Updated support table. --- .../odbc_16.00.0000.02_rel_notes.mdx | 2 +- .../16/02_requirements_overview.mdx | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx index e5196661ba2..94ca4a5bce5 100644 --- a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx +++ b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx @@ -5,7 +5,7 @@ navTitle: Version 16.00.0000.02 Released: 20 Nov 2024 -EDB ODBC Connector 16.00.0000.01 includes the following enhancement: +EDB ODBC Connector 16.00.0000.02 includes the following enhancement: | Type | Description | | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/product_docs/docs/odbc_connector/16/02_requirements_overview.mdx b/product_docs/docs/odbc_connector/16/02_requirements_overview.mdx index 06a2bccbe1f..61e0fe8bf6f 100644 --- a/product_docs/docs/odbc_connector/16/02_requirements_overview.mdx +++ b/product_docs/docs/odbc_connector/16/02_requirements_overview.mdx @@ -9,11 +9,12 @@ The ODBC Connector is supported on the same platforms as EDB Postgres Advanced S This table lists the latest ODBC Connector versions and their supported corresponding EDB Postgres Advanced Server (EPAS) versions. -| ODBC Connector | EPAS 16 | EPAS 15 | EPAS 14 | EPAS 13 | EPAS 12 | EPAS 11 | +| ODBC Connector | EPAS 17 | EPAS 16 | EPAS 15 | EPAS 14 | EPAS 13 | EPAS 12 | | ------------------------------------------------------------------------------ | ------- | ------- | ------- | ------- | ------- | ------- | -| [16.00.0000.01](01_odbc_rel_notes/odbc_16.00.0000.01_rel_notes/) | Y | Y | Y | Y | Y | Y | -| [13.02.0.02](/odbc_connector/13/01_odbc_rel_notes/odbc_13.2.0.02_rel_notes) | N | Y | Y | Y | Y | Y | -| [13.02.0.01](/odbc_connector/13/01_odbc_rel_notes/02_odbc_13.2.0.01_rel_notes) | N | N | Y | Y | Y | Y | -| [13.01.0.02](/odbc_connector/13/01_odbc_rel_notes/03_odbc_13.1.0.02_rel_notes) | N | N | Y | Y | Y | Y | -| [13.01.0.01](/odbc_connector/13/01_odbc_rel_notes/04_odbc_13.1.0.01_rel_notes) | N | N | N | Y | Y | Y | -| [13.00.0.01](/odbc_connector/13/01_odbc_rel_notes/05_odbc_13.0.0.01_rel_notes) | N | N | N | Y | Y | Y | \ No newline at end of file +| [16.00.0000.02](01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes/) | Y | Y | Y | Y | Y | Y | +| [16.00.0000.01](01_odbc_rel_notes/odbc_16.00.0000.01_rel_notes/) | N | Y | Y | Y | Y | Y | +| [13.02.0.02](/odbc_connector/13/01_odbc_rel_notes/odbc_13.2.0.02_rel_notes) | N | N | Y | Y | Y | Y | +| [13.02.0.01](/odbc_connector/13/01_odbc_rel_notes/02_odbc_13.2.0.01_rel_notes) | N | N | N | Y | Y | Y | +| [13.01.0.02](/odbc_connector/13/01_odbc_rel_notes/03_odbc_13.1.0.02_rel_notes) | N | N | N | Y | Y | Y | +| [13.01.0.01](/odbc_connector/13/01_odbc_rel_notes/04_odbc_13.1.0.01_rel_notes) | N | N | N | N | Y | Y | +| [13.00.0.01](/odbc_connector/13/01_odbc_rel_notes/05_odbc_13.0.0.01_rel_notes) | N | N | N | N | Y | Y | \ No newline at end of file From d69007333bae8cb72726174ec53540d049f06567 Mon Sep 17 00:00:00 2001 From: Josh Earlenbaugh Date: Mon, 18 Nov 2024 15:44:54 -0500 Subject: [PATCH 04/35] Switched rows. --- .../docs/odbc_connector/16/01_odbc_rel_notes/index.mdx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx index b05f7560a21..b79589e1c89 100644 --- a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx +++ b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx @@ -11,5 +11,6 @@ Release notes describe what's new in a release. When a minor or patch release in | Version | Release date | | --------------------------------------------- | ------------ | -| [16.00.0000.01](odbc_16.00.0000.01_rel_notes) | 09 Nov 2023 | | [16.00.0000.02](odbc_16.00.0000.02_rel_notes) | 20 Nov 2024 | +| [16.00.0000.01](odbc_16.00.0000.01_rel_notes) | 09 Nov 2023 | + From 84eb5fce278180eb97de8b2cc2db138ab0226f98 Mon Sep 17 00:00:00 2001 From: Josh Earlenbaugh Date: Mon, 18 Nov 2024 15:47:30 -0500 Subject: [PATCH 05/35] Fixed order in nav and table. --- .../docs/odbc_connector/16/01_odbc_rel_notes/index.mdx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx index b79589e1c89..bf4c480b00e 100644 --- a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx +++ b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx @@ -1,8 +1,9 @@ --- title: "Release notes" navigation: -- odbc_16.00.0000.01_rel_notes - odbc_16.00.0000.02_rel_notes +- odbc_16.00.0000.01_rel_notes + --- The EDB ODBC connector documentation describes the latest version of the EDB ODBC connector. From 45e4cdf5ef35bfe1f9502d48f244644b3019d5ce Mon Sep 17 00:00:00 2001 From: Betsy Gitelman Date: Fri, 18 Oct 2024 16:25:21 -0400 Subject: [PATCH 06/35] Edits to docs-1082 - LiveCompare Docs update #6157 Minor edit to correct spelling of "misspelling" and a couple other small edits. --- product_docs/docs/livecompare/3/command_line_usage.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/product_docs/docs/livecompare/3/command_line_usage.mdx b/product_docs/docs/livecompare/3/command_line_usage.mdx index 568f3b4f197..8e6ae8b4105 100644 --- a/product_docs/docs/livecompare/3/command_line_usage.mdx +++ b/product_docs/docs/livecompare/3/command_line_usage.mdx @@ -34,11 +34,11 @@ dsn = port=5432 dbname=liveoutput user=postgres schemas = schema_name = 'public' ``` -This basic template compares three connections, `live1`, `live2`, and `live3`, and outputs the results to the `liveoutput` database. LiveCompare only uses the `public` schema in the comparison. +This basic template compares three connections, `live1`, `live2`, and `live3`, and outputs the results to the `liveoutput` database. LiveCompare uses only the `public` schema in the comparison. ### Running the comparison -To run the comparison, run livecompare and pass it the name of your settings file as an argument. If you have created a `my_project.ini` file, execute the following command: +To run the comparison, run livecompare and pass it the name of your settings file as an argument. If you created a `my_project.ini` file, execute the following command: ``` livecompare my_project.ini @@ -173,7 +173,7 @@ dsn = dbname=liveoutpu schemas = schema_name = 'public' ``` -As the DSN under `Output Connection` (the LiveCompare cache database) is incorrect due to a mis-spelling of `liveoutput`, running LiveCompare initially fails with: +As the DSN under `Output Connection` (the LiveCompare cache database) is incorrect due to a misspelling of `liveoutput`, running LiveCompare initially fails with: ``` Output connection is not reachable. From e94b2c692b2542ebfdd68ccf026fa2c03f0707a4 Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Fri, 22 Nov 2024 15:59:55 +0900 Subject: [PATCH 07/35] PGD: update bdr.autopartition() function description for changes in 5.6 Reflects following changes made in 5.6.0: - default value for "managed_locally" set to TRUE (commit 1348c853) - parameter "analytics_offload_period" added (commit 52da8023) DOCS-1129. --- product_docs/docs/pgd/5.6/reference/autopartition.mdx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/product_docs/docs/pgd/5.6/reference/autopartition.mdx b/product_docs/docs/pgd/5.6/reference/autopartition.mdx index 7705414f356..40d34ca1efc 100644 --- a/product_docs/docs/pgd/5.6/reference/autopartition.mdx +++ b/product_docs/docs/pgd/5.6/reference/autopartition.mdx @@ -22,8 +22,9 @@ bdr.autopartition(relation regclass, minimum_advance_partitions integer DEFAULT 2, maximum_advance_partitions integer DEFAULT 5, data_retention_period interval DEFAULT NULL, - managed_locally boolean DEFAULT false, - enabled boolean DEFAULT on); + managed_locally boolean DEFAULT true, + enabled boolean DEFAULT on, + analytics_offload_period); ``` #### Parameters @@ -40,8 +41,9 @@ bdr.autopartition(relation regclass, go after the number of advance partitions falls below `minimum_advance_partitions`. - `data_retention_period` — Interval until older partitions are dropped, if defined. This value must be greater than `migrate_after_period`. -- `managed_locally` — If true, then the partitions are managed locally. +- `managed_locally` — Whether partitions are managed locally. Setting this to `false` is not recommended. - `enabled` — Allows activity to be disabled or paused and later resumed or reenabled. +- `analytics_offload_period` — Provides support for partition offloading. Reserved for future use. #### Examples From d9bc574eb167c5269213db4d8369cfdd7e1d6357 Mon Sep 17 00:00:00 2001 From: gvasquezvargas Date: Fri, 22 Nov 2024 16:09:58 +0100 Subject: [PATCH 08/35] Updated release date --- product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx | 2 +- .../16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx index bf4c480b00e..cbda0ee2ce9 100644 --- a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx +++ b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/index.mdx @@ -12,6 +12,6 @@ Release notes describe what's new in a release. When a minor or patch release in | Version | Release date | | --------------------------------------------- | ------------ | -| [16.00.0000.02](odbc_16.00.0000.02_rel_notes) | 20 Nov 2024 | +| [16.00.0000.02](odbc_16.00.0000.02_rel_notes) | 22 Nov 2024 | | [16.00.0000.01](odbc_16.00.0000.01_rel_notes) | 09 Nov 2023 | diff --git a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx index 94ca4a5bce5..25c509747a3 100644 --- a/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx +++ b/product_docs/docs/odbc_connector/16/01_odbc_rel_notes/odbc_16.00.0000.02_rel_notes.mdx @@ -3,7 +3,7 @@ title: "EDB ODBC Connector 16.00.0000.02 release notes" navTitle: Version 16.00.0000.02 --- -Released: 20 Nov 2024 +Released: 22 Nov 2024 EDB ODBC Connector 16.00.0000.02 includes the following enhancement: From 18d266f96760ee39f97368fdc6c1109e93552cf7 Mon Sep 17 00:00:00 2001 From: Josh Heyer Date: Fri, 22 Nov 2024 21:15:22 +0000 Subject: [PATCH 09/35] Fix some build warnings --- gatsby-config.js | 3 + .../replication-server/arm64_index.njk | 2 +- package-lock.json | 1087 +++++++++++------ package.json | 2 +- .../eprs/7/installing/linux_arm64/index.mdx | 2 +- .../docs/pem/9/considerations/licensing.mdx | 3 - src/components/icon/iconNames.js | 2 - src/components/icon/index.js | 23 +- src/components/layout.js | 5 +- src/pages/index.js | 10 +- 10 files changed, 745 insertions(+), 394 deletions(-) diff --git a/gatsby-config.js b/gatsby-config.js index 3903e418d30..d2ce185befe 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -327,9 +327,12 @@ module.exports = { noInlineHighlight: true, aliases: { postgresql: "sql", + psql: "sql", sh: "shell", "c++": "cpp", console: "shell-session", + output: "none", + terminal: "none", }, }, }, diff --git a/install_template/templates/products/replication-server/arm64_index.njk b/install_template/templates/products/replication-server/arm64_index.njk index d12e583ba05..3d0ff9d34b6 100644 --- a/install_template/templates/products/replication-server/arm64_index.njk +++ b/install_template/templates/products/replication-server/arm64_index.njk @@ -5,5 +5,5 @@ {% block frontmatter %} {{super()}} redirects: - - /eprs/latest/03_installation/03_installing_rpm_package/x86_amd64/ + - /eprs/latest/03_installation/03_installing_rpm_package/arm64/ {% endblock frontmatter %} diff --git a/package-lock.json b/package-lock.json index 2af06ad76f7..bf1b2fddf1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,7 +53,7 @@ "react-instantsearch": "^7.8.1", "rehype-parse": "^7.0.1", "remark-admonitions": "github:josh-heyer/remark-admonitions", - "sass": "^1.77.2", + "sass": "^1.77.6", "truncate-utf8-bytes": "^1.0.2", "unist-util-visit-parents": "^3.1.1" }, @@ -2026,10 +2026,9 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", - "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", - "license": "MIT", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2720,19 +2719,14 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, "node_modules/@lezer/common": { "version": "0.15.12", "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", @@ -3861,16 +3855,278 @@ } }, "node_modules/@parcel/watcher": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.1.0.tgz", - "integrity": "sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", + "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", "hasInstallScript": true, "dependencies": { + "detect-libc": "^1.0.3", "is-glob": "^4.0.3", "micromatch": "^4.0.5", - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.0", + "@parcel/watcher-darwin-arm64": "2.5.0", + "@parcel/watcher-darwin-x64": "2.5.0", + "@parcel/watcher-freebsd-x64": "2.5.0", + "@parcel/watcher-linux-arm-glibc": "2.5.0", + "@parcel/watcher-linux-arm-musl": "2.5.0", + "@parcel/watcher-linux-arm64-glibc": "2.5.0", + "@parcel/watcher-linux-arm64-musl": "2.5.0", + "@parcel/watcher-linux-x64-glibc": "2.5.0", + "@parcel/watcher-linux-x64-musl": "2.5.0", + "@parcel/watcher-win32-arm64": "2.5.0", + "@parcel/watcher-win32-ia32": "2.5.0", + "@parcel/watcher-win32-x64": "2.5.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", + "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", + "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", + "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", + "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", + "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", + "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", + "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", + "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", + "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", + "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", + "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", + "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", + "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">= 10.0.0" }, @@ -4224,18 +4480,18 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" }, "node_modules/@types/get-port": { "version": "3.2.0", @@ -4252,9 +4508,9 @@ } }, "node_modules/@types/google.maps": { - "version": "3.55.11", - "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.11.tgz", - "integrity": "sha512-F3VuPtjKj4UGuyym75pqmgPBOHbT/i7I6/D+4DdtSzbeu2aWZG1ENwpbZOd46uO+PSAz9flJEhxxi+b4MVb4gQ==" + "version": "3.58.1", + "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.58.1.tgz", + "integrity": "sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==" }, "node_modules/@types/hast": { "version": "2.3.4", @@ -4356,9 +4612,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + "version": "6.9.17", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", + "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==" }, "node_modules/@types/reach__router": { "version": "1.3.11", @@ -4711,133 +4967,133 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, @@ -4874,9 +5130,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "bin": { "acorn": "bin/acorn" }, @@ -4884,14 +5140,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -4985,9 +5233,9 @@ } }, "node_modules/algoliasearch-helper": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.1.tgz", - "integrity": "sha512-fSxJ4YreH4kOME9CnKazbAn2tK/rvBoV37ETd6nTt4j7QfkcnW+c+F22WfuE9Q/sRpvOMnUwU/BXAVEiwW7p/w==", + "version": "3.22.5", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.5.tgz", + "integrity": "sha512-lWvhdnc+aKOKx8jyA3bsdEgHzm/sglC4cYdMG4xSQyRiPLJVJtH/IVYZG3Hp6PkTEhQqhyVYkeP9z2IlcHJsWw==", "dependencies": { "@algolia/events": "^4.0.1" }, @@ -5746,20 +5994,20 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", + "qs": "6.13.0", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -5908,20 +6156,20 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "funding": [ { "type": "opencollective", @@ -5930,13 +6178,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -6064,12 +6316,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6123,9 +6381,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001651", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", - "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "version": "1.0.30001683", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001683.tgz", + "integrity": "sha512-iqmNnThZ0n70mNwvxpEC2nBJ037ZHZUoBI5Gorh1Mw6IlEAZujEoU1tXA628iZfzm7R9FvFzxbfdgml82a3k8Q==", "funding": [ { "type": "opencollective", @@ -6479,9 +6737,9 @@ } }, "node_modules/clipboardy/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -7067,9 +7325,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7495,6 +7753,22 @@ "node": ">=10" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -7829,9 +8103,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.361", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.361.tgz", - "integrity": "sha512-VocVwjPp05HUXzf3xmL0boRn5b0iyqC7amtDww84Jb1QJNPBc7F69gJyEeXRoriLBC4a5pSyckdllrXAg4mmRA==" + "version": "1.5.64", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.64.tgz", + "integrity": "sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==" }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -7847,9 +8121,9 @@ } }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { "node": ">= 0.8" } @@ -7903,9 +8177,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -8015,6 +8289,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -8077,13 +8370,14 @@ } }, "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "hasInstallScript": true, "dependencies": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", "next-tick": "^1.1.0" }, "engines": { @@ -8126,9 +8420,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "engines": { "node": ">=6" } @@ -8726,6 +9020,25 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esniff/node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" + }, "node_modules/espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -8886,36 +9199,36 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -9005,9 +9318,9 @@ } }, "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "engines": { "node": ">= 0.6" } @@ -9263,9 +9576,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9282,12 +9595,12 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -9374,9 +9687,9 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", @@ -9683,9 +9996,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -11578,13 +11894,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11928,11 +12249,11 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12005,6 +12326,17 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hast-to-hyperscript": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", @@ -12760,30 +13092,30 @@ } }, "node_modules/instantsearch-ui-components": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/instantsearch-ui-components/-/instantsearch-ui-components-0.7.0.tgz", - "integrity": "sha512-4dHmCFbKWap5iSR2VmF5pSBECGQbAa8sPMoazMihYY2/0ahVzdHrOOtT8/hferG1A/xTT8nzfU7PIg+8lomNsA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/instantsearch-ui-components/-/instantsearch-ui-components-0.9.0.tgz", + "integrity": "sha512-ugQ+XdPx3i3Sxu+woRo6tPE0Fz/kWd4KblTUfZD1TZZBsm/8qFvcbg5dVBDvXX9v7ntoyugXCzC/XCZMzrSkig==", "dependencies": { "@babel/runtime": "^7.1.2" } }, "node_modules/instantsearch.js": { - "version": "4.72.2", - "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-4.72.2.tgz", - "integrity": "sha512-6/4XbXk91f9RV9TNvy+yKxtwZoKDsk0xBXdlA7nKYo//DtFkA/jNoqzuUJIWzf/59wSLxs7/LN/H4FLbBp6UNw==", + "version": "4.75.5", + "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-4.75.5.tgz", + "integrity": "sha512-XnplrpnSfFzVtoL7YBKWbf3FPwmjfSFM8BN+nnuRsfzwUwWgb7zQLxh2mRtohUFI9fnA7vAcJlDcmichfYgjmA==", "dependencies": { "@algolia/events": "^4.0.1", "@types/dom-speech-recognition": "^0.0.1", - "@types/google.maps": "^3.45.3", + "@types/google.maps": "^3.55.12", "@types/hogan.js": "^3.0.0", "@types/qs": "^6.5.3", - "algoliasearch-helper": "3.22.1", + "algoliasearch-helper": "3.22.5", "hogan.js": "^3.0.2", "htm": "^3.0.0", - "instantsearch-ui-components": "0.7.0", + "instantsearch-ui-components": "0.9.0", "preact": "^10.10.0", "qs": "^6.5.1 < 6.10", - "search-insights": "^2.13.0" + "search-insights": "^2.17.2" }, "peerDependencies": { "algoliasearch": ">= 3.1 < 6" @@ -14519,10 +14851,9 @@ } }, "node_modules/markdown-to-jsx": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.7.tgz", - "integrity": "sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==", - "license": "MIT", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.0.tgz", + "integrity": "sha512-130nIMbJY+woOQJ11xTqEtYko60t6EpNkZuqjKMferL3udtob3nRfzXOdsiA26NPemiR7w/hR8M3/B9yiYPGZg==", "engines": { "node": ">= 10" }, @@ -14908,9 +15239,12 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -15170,11 +15504,11 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/msgpackr": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.5.tgz", - "integrity": "sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.2.tgz", + "integrity": "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==", "optionalDependencies": { - "msgpackr-extract": "^3.0.1" + "msgpackr-extract": "^3.0.2" } }, "node_modules/msgpackr-extract": { @@ -15232,9 +15566,9 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -15365,9 +15699,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" }, "node_modules/node-fetch": { "version": "2.6.9", @@ -15388,16 +15722,6 @@ } } }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, "node_modules/node-gyp-build-optional-packages": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz", @@ -15494,9 +15818,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" }, "node_modules/nopt": { "version": "1.0.10", @@ -15599,9 +15923,12 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16227,9 +16554,9 @@ } }, "node_modules/password-prompt/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -16337,9 +16664,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "node_modules/path-type": { "version": "4.0.0", @@ -16367,9 +16694,9 @@ "integrity": "sha512-rxJOljMuWtYlvREBmd6TZYanfcPhNUKtGDZBjBBS8WG1dpN2iwPsRJZgQqN/OtJuiQckdRFOfzogqJClTrsi7g==" }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -16526,9 +16853,9 @@ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" }, "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "funding": [ { "type": "opencollective", @@ -16537,12 +16864,16 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -17058,9 +17389,9 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/preact": { - "version": "10.22.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.22.1.tgz", - "integrity": "sha512-jRYbDDgMpIb5LHq3hkI0bbl+l/TQ9UnkdQ0ww+lp+4MMOdqaUYdFc5qeyP+IV8FAd/2Em7drVPeKdQxsiWCf/A==", + "version": "10.25.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.0.tgz", + "integrity": "sha512-6bYnzlLxXV3OSpUxLdaxBmE7PMOu0aR3pG6lryK/0jmvcDFPlcXGQAt5DpK3RITWiDrfYZRI0druyaK/S9kYLg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -17116,11 +17447,10 @@ } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -17297,11 +17627,11 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -17388,9 +17718,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -17463,14 +17793,13 @@ } }, "node_modules/react-bootstrap": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.2.tgz", - "integrity": "sha512-UvB7mRqQjivdZNxJNEA2yOQRB7L9N43nBnKc33K47+cH90/ujmnMwatTCwQLu83gLhrzAl8fsa6Lqig/KLghaA==", - "license": "MIT", + "version": "2.10.5", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.5.tgz", + "integrity": "sha512-XueAOEn64RRkZ0s6yzUTdpFtdUXs5L5491QU//8ZcODKJNDLt/r01tNyriZccjgRImH1REynUc9pqjiRMpDLWQ==", "dependencies": { - "@babel/runtime": "^7.22.5", + "@babel/runtime": "^7.24.7", "@restart/hooks": "^0.4.9", - "@restart/ui": "^1.6.8", + "@restart/ui": "^1.6.9", "@types/react-transition-group": "^4.4.6", "classnames": "^2.3.2", "dom-helpers": "^5.2.1", @@ -17690,33 +18019,33 @@ } }, "node_modules/react-instantsearch": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/react-instantsearch/-/react-instantsearch-7.11.4.tgz", - "integrity": "sha512-yzGxA9SxN+BR/ZruISJYXdZJV3siZu+qBO5glHtfJG/V597CwCzcWRSJQf0z/lSxiYlbfc6eouBpPglwCik8Bw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/react-instantsearch/-/react-instantsearch-7.13.8.tgz", + "integrity": "sha512-14t7qAlp5H2dD+ljQLPhMZt40JX7YGKXdAooGZBo8IB+0M7NHAhsn/SVRdxSObb9bx1hg4uaBIZ51Wajgw8Xbg==", "dependencies": { "@babel/runtime": "^7.1.2", - "instantsearch-ui-components": "0.7.0", - "instantsearch.js": "4.72.2", - "react-instantsearch-core": "7.11.4" + "instantsearch-ui-components": "0.9.0", + "instantsearch.js": "4.75.5", + "react-instantsearch-core": "7.13.8" }, "peerDependencies": { - "algoliasearch": ">= 3.1 < 5", + "algoliasearch": ">= 3.1 < 6", "react": ">= 16.8.0 < 19", "react-dom": ">= 16.8.0 < 19" } }, "node_modules/react-instantsearch-core": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-7.11.4.tgz", - "integrity": "sha512-LGlioZu3vfk5ODQDwUO0cZrOA60aieEx/P6RZhstwSpjmmQW+2P14lOk38OIQ8MA23fEqwCmLJn9kBKpgqfHjg==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-7.13.8.tgz", + "integrity": "sha512-1bcHCFJ3Qw9HWFkeM5MNMqzw0BI4LIR61qI1lPAcJREih9NXy3R3inPeOk2T2FKkgAp5PJbjNQ3DOTxErV88jg==", "dependencies": { "@babel/runtime": "^7.1.2", - "algoliasearch-helper": "3.22.1", - "instantsearch.js": "4.72.2", + "algoliasearch-helper": "3.22.5", + "instantsearch.js": "4.75.5", "use-sync-external-store": "^1.0.0" }, "peerDependencies": { - "algoliasearch": ">= 3.1 < 5", + "algoliasearch": ">= 3.1 < 6", "react": ">= 16.8.0 < 19" } }, @@ -19082,10 +19411,9 @@ } }, "node_modules/sass": { - "version": "1.77.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz", - "integrity": "sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==", - "license": "MIT", + "version": "1.77.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", + "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -19165,9 +19493,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/sass/node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==" + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==" }, "node_modules/sax": { "version": "1.2.4", @@ -19184,9 +19512,9 @@ } }, "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -19201,9 +19529,9 @@ } }, "node_modules/search-insights": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.14.0.tgz", - "integrity": "sha512-OLN6MsPMCghDOqlCtsIsYgtsC0pnwVTyT9Mu6A3ewOj1DxvzZF6COrn2g86E/c05xbktB0XN04m/t1Z+n+fTGw==" + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==" }, "node_modules/section-matter": { "version": "1.0.0", @@ -19251,9 +19579,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -19286,6 +19614,14 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -19321,14 +19657,14 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -19339,6 +19675,22 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -19458,13 +19810,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -19699,9 +20055,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "engines": { "node": ">=0.10.0" } @@ -20521,12 +20877,12 @@ } }, "node_modules/terser": { - "version": "5.16.9", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.9.tgz", - "integrity": "sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==", + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -20538,15 +20894,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -21281,9 +21637,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "funding": [ { "type": "opencollective", @@ -21292,14 +21648,18 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -21626,9 +21986,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -21662,33 +22022,32 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.79.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.79.0.tgz", - "integrity": "sha512-3mN4rR2Xq+INd6NnYuL9RC9GAmc1ROPKJoHhrZ4pAjdMFEkJJWrsPw8o2JjCIyQyTu7rTXYn4VG6OpyB3CobZg==", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", + "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { diff --git a/package.json b/package.json index 401456e5d9a..b7fd88f98fd 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "react-instantsearch": "^7.8.1", "rehype-parse": "^7.0.1", "remark-admonitions": "github:josh-heyer/remark-admonitions", - "sass": "^1.77.2", + "sass": "^1.77.6", "truncate-utf8-bytes": "^1.0.2", "unist-util-visit-parents": "^3.1.1" }, diff --git a/product_docs/docs/eprs/7/installing/linux_arm64/index.mdx b/product_docs/docs/eprs/7/installing/linux_arm64/index.mdx index 4367875be41..c3bab4f2b74 100644 --- a/product_docs/docs/eprs/7/installing/linux_arm64/index.mdx +++ b/product_docs/docs/eprs/7/installing/linux_arm64/index.mdx @@ -8,7 +8,7 @@ navTitle: "On Linux ARM64" # Leaf template: products/replication-server/arm64_index.njk redirects: - - /eprs/latest/03_installation/03_installing_rpm_package/x86_amd64/ + - /eprs/latest/03_installation/03_installing_rpm_package/arm64/ navigation: - eprs_debian_12 diff --git a/product_docs/docs/pem/9/considerations/licensing.mdx b/product_docs/docs/pem/9/considerations/licensing.mdx index 05f696ddcb6..5a19cd307a2 100644 --- a/product_docs/docs/pem/9/considerations/licensing.mdx +++ b/product_docs/docs/pem/9/considerations/licensing.mdx @@ -1,9 +1,6 @@ --- title: "How PEM licensing works" navTitle: "Licensing" -redirects: -- /pem/latest/pem_ha_setup/ -- /pem/latest/pem_ha_setup/setup_ha_using_efm/ --- PEM is intended to be used for monitoring and managing Postgres diff --git a/src/components/icon/iconNames.js b/src/components/icon/iconNames.js index 0626110cef1..03065363fb3 100644 --- a/src/components/icon/iconNames.js +++ b/src/components/icon/iconNames.js @@ -101,7 +101,6 @@ const iconNames = { INSTANCES: "Instances", INTEGRATION: "Integration", KNIGHT: "Knight", - KUBERNETES: "Kubernetes", LAPTOP_CONFIG: "LaptopConfig", LEADER: "Leader", LEARNING: "Learning", @@ -129,7 +128,6 @@ const iconNames = { PLANNER: "Planner", PLAY_CIRCLE: "PlayCircle", PLUS: "Plus", - POSTGRESQL: "Postgresql", PREFERENCES: "Preferences", PRESENTATION: "Presentation", PROCESS: "Process", diff --git a/src/components/icon/index.js b/src/components/icon/index.js index c971507e7bf..d9334a242d9 100644 --- a/src/components/icon/index.js +++ b/src/components/icon/index.js @@ -7,13 +7,18 @@ import * as logosIcons from "@enterprisedb/icons/logos"; import * as ebd_postgres_aiIcons from "@enterprisedb/icons/edb_logos"; function IconContainer({ - circle, - circleClassName, - circleDiameter, - circleAutoMargin, + circle = false, + circleClassName = "", + circleDiameter = 100, + circleAutoMargin = true, iconName: name = "dottedbox", ...props }) { + props = Object.assign( + {}, + { className: "dottedbox", width: 100, height: 100 }, + props, + ); const iconNameParts = name.split("/"); const iconCategory = iconNameParts.length === 1 ? "" : iconNameParts[0]; const iconName = iconNameParts.length === 1 ? name : iconNameParts[1]; @@ -52,16 +57,6 @@ const Icon = ({ category, name, ...props }) => { return ; }; -IconContainer.defaultProps = { - className: "dottedbox", - circleClassName: "", - circleDiameter: 100, - circleAutoMargin: true, - circle: false, - width: 100, - height: 100, -}; - export { iconNames }; export default IconContainer; diff --git a/src/components/layout.js b/src/components/layout.js index 0ec5c1a655f..a0c97a624d1 100644 --- a/src/components/layout.js +++ b/src/components/layout.js @@ -112,9 +112,8 @@ const Layout = ({ h3: ( props, // eslint-disable-next-line jsx-a11y/heading-has-content ) =>

, - img: ( - props, // eslint-disable-next-line jsx-a11y/alt-text - ) => ( + img: (props) => ( + // eslint-disable-next-line jsx-a11y/alt-text ( ); const BannerIconDivider = ({ iconName, headingText }) => ( - +
  {headingText} - +
); const BannerDivider = ({ headingText }) => ( - +
{headingText} - +
); const Page = () => { @@ -173,7 +173,7 @@ const Page = () => {
{updates.slice(0, 2).map((update) => ( -
+
Date: Sat, 23 Nov 2024 16:18:06 -0500 Subject: [PATCH 10/35] Update create-machine-user.mdx minute corrections. Make updates as you see fit. --- .../console/estate/agent/create-machine-user.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/advocacy_docs/edb-postgres-ai/console/estate/agent/create-machine-user.mdx b/advocacy_docs/edb-postgres-ai/console/estate/agent/create-machine-user.mdx index b55927b03f3..5220601264e 100644 --- a/advocacy_docs/edb-postgres-ai/console/estate/agent/create-machine-user.mdx +++ b/advocacy_docs/edb-postgres-ai/console/estate/agent/create-machine-user.mdx @@ -14,13 +14,13 @@ Select the **Add New User** button. On the **Add New User** page, for the "User Type" select **Machine User*. -The form changes when you select make that selection so it's asking for a name and optional email. Enter a name for the machine user. +The form changes when you make that selection so it's asking for a name and optional email. Enter a name for the machine user. ## Creating an access key Check the **Create Access Key** checkbox in **Add New User** page. The form will expand to ask for an Access Key Name and an Expiry time. -Give the key a name in the Access Key Name field and enter a value from 1 to 365 for the number of days from now that you want this key to be valid in the Expires In field. The date on which the key will expire is shown in the underneath the field. +Give the key a name in the Access Key Name field and enter a value from 1 to 365 for the number of days from now that you want this key to be valid in the Expires In field. The date on which the key will expire is shown underneath the field. Select the **Add User** button. @@ -34,7 +34,7 @@ Once you have securely stored your access key, select the **Key Stored Safely** Select the **Projects** tab to view all your projects. -Select the project from which you want to monitor the a database. +Select the project from which you want to monitor the database. This will take you to the project's overview. Select the **Users** tab, and locate the machine user you just created. @@ -46,5 +46,5 @@ An **Assign Project Roles** dialog will appear with a selection of roles that ca Select the "estate ingester" role and then select the **Submit** button. -Your new machine user is ready for to ingest data from the Beacon Agent. +Your new machine user is now ready to ingest data from the Beacon Agent. From bb7fc74777b65eaa411709ce1017a9acd3022775 Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Mon, 25 Nov 2024 13:57:24 +0900 Subject: [PATCH 11/35] PGD: Fix link to EDB Postgres Extended Server Replace link to legacy, non-existent portal page with a direct reference to the public documentation, as is done with EPAS. DOCS-1134 --- product_docs/docs/pgd/3.6/index.mdx | 2 +- product_docs/docs/pgd/3.7/index.mdx | 2 +- product_docs/docs/pgd/4/overview/index.mdx | 2 +- product_docs/docs/pgd/5.6/overview/index.mdx | 2 +- product_docs/docs/pgd/5/overview/index.mdx | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/product_docs/docs/pgd/3.6/index.mdx b/product_docs/docs/pgd/3.6/index.mdx index 305154e426c..f2b8b3da03e 100644 --- a/product_docs/docs/pgd/3.6/index.mdx +++ b/product_docs/docs/pgd/3.6/index.mdx @@ -19,7 +19,7 @@ cluster work. Two different Postgres distributions can be used: - [PostgreSQL](https://www.postgresql.org/) - open source -- [EDB Postgres Extended Server](https://techsupport.enterprisedb.com/customer_portal/sw/2ndqpostgres/) - PostgreSQL compatible and optimized for replication +- [EDB Postgres Extended Server](/pge/latest) - PostgreSQL compatible and optimized for replication What Postgres distribution and version is right for you depends on the features you need. See the feature matrix in [Choosing a Postgres distribution](/pgd/latest/planning/choosing_server/) for detailed comparison. diff --git a/product_docs/docs/pgd/3.7/index.mdx b/product_docs/docs/pgd/3.7/index.mdx index 24ce5369cf3..3a1d208deea 100644 --- a/product_docs/docs/pgd/3.7/index.mdx +++ b/product_docs/docs/pgd/3.7/index.mdx @@ -12,7 +12,7 @@ EDB Postgres Distributed consists of several components that make the whole clus Three different Postgres distributions can be used: - [PostgreSQL](https://www.postgresql.org/) - open source -- [EDB Postgres Extended Server](https://techsupport.enterprisedb.com/customer_portal/sw/2ndqpostgres/) - Postgres compatible and optimized for replication (formerly known as 2nd Quadrant Postgres) +- [EDB Postgres Extended Server](/pge/latest) - Postgres compatible and optimized for replication (formerly known as 2nd Quadrant Postgres) - [EDB Postgres Advanced Server](/epas/latest) - Postgres or Oracle compatible, optimized for replication, and additional enterprise features What Postgres distribution and version is right for you depends on the features you need. See [Postgres-specific features](/pgd/3.7/bdr/#postgres-specific-features) for detailed information. diff --git a/product_docs/docs/pgd/4/overview/index.mdx b/product_docs/docs/pgd/4/overview/index.mdx index 0f1e936ddf9..4d6f7cc86e2 100644 --- a/product_docs/docs/pgd/4/overview/index.mdx +++ b/product_docs/docs/pgd/4/overview/index.mdx @@ -15,7 +15,7 @@ cluster work. Three different Postgres distributions can be used: - [PostgreSQL](https://www.postgresql.org/) - open source -- [EDB Postgres Extended Server](https://techsupport.enterprisedb.com/customer_portal/sw/2ndqpostgres/) - PostgreSQL compatible and optimized for replication +- [EDB Postgres Extended Server](/pge/latest) - PostgreSQL compatible and optimized for replication - [EDB Postgres Advanced Server](/epas/latest) - Oracle compatible, optimized for replication, and additional enterprise features What Postgres distribution and version is right for you depends on the features you need. diff --git a/product_docs/docs/pgd/5.6/overview/index.mdx b/product_docs/docs/pgd/5.6/overview/index.mdx index 190e12f9b55..d4bb1924ac1 100644 --- a/product_docs/docs/pgd/5.6/overview/index.mdx +++ b/product_docs/docs/pgd/5.6/overview/index.mdx @@ -100,7 +100,7 @@ In the future, one node will be elected as the main replicator to other groups, ### Supported Postgres database servers -PGD is compatible with [PostgreSQL](https://www.postgresql.org/), [EDB Postgres Extended Server](https://techsupport.enterprisedb.com/customer_portal/sw/2ndqpostgres/), and [EDB Postgres Advanced Server](/epas/latest) and is deployed as a standard Postgres extension named BDR. See [Compatibility](../#compatibility) for details about supported version combinations. +PGD is compatible with [PostgreSQL](https://www.postgresql.org/), [EDB Postgres Extended Server](/pge/latest), and [EDB Postgres Advanced Server](/epas/latest) and is deployed as a standard Postgres extension named BDR. See [Compatibility](../#compatibility) for details about supported version combinations. Some key PGD features depend on certain core capabilities being available in the target Postgres database server. Therefore, PGD users must also adopt the Postgres database server distribution that's best suited to their business needs. For example, if having the PGD feature Commit At Most Once (CAMO) is mission critical to your use case, don't adopt the community PostgreSQL distribution. It doesn't have the core capability required to handle CAMO. See the full feature matrix compatibility in [Choosing a Postgres distribution](../planning/choosing_server/). diff --git a/product_docs/docs/pgd/5/overview/index.mdx b/product_docs/docs/pgd/5/overview/index.mdx index 190e12f9b55..d4bb1924ac1 100644 --- a/product_docs/docs/pgd/5/overview/index.mdx +++ b/product_docs/docs/pgd/5/overview/index.mdx @@ -100,7 +100,7 @@ In the future, one node will be elected as the main replicator to other groups, ### Supported Postgres database servers -PGD is compatible with [PostgreSQL](https://www.postgresql.org/), [EDB Postgres Extended Server](https://techsupport.enterprisedb.com/customer_portal/sw/2ndqpostgres/), and [EDB Postgres Advanced Server](/epas/latest) and is deployed as a standard Postgres extension named BDR. See [Compatibility](../#compatibility) for details about supported version combinations. +PGD is compatible with [PostgreSQL](https://www.postgresql.org/), [EDB Postgres Extended Server](/pge/latest), and [EDB Postgres Advanced Server](/epas/latest) and is deployed as a standard Postgres extension named BDR. See [Compatibility](../#compatibility) for details about supported version combinations. Some key PGD features depend on certain core capabilities being available in the target Postgres database server. Therefore, PGD users must also adopt the Postgres database server distribution that's best suited to their business needs. For example, if having the PGD feature Commit At Most Once (CAMO) is mission critical to your use case, don't adopt the community PostgreSQL distribution. It doesn't have the core capability required to handle CAMO. See the full feature matrix compatibility in [Choosing a Postgres distribution](../planning/choosing_server/). From ecb05b6ede8bd56da86228cb585db34d29504f7d Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Mon, 25 Nov 2024 15:32:12 +0900 Subject: [PATCH 12/35] PGD: document compatibility with EPAS automatic partitioning Currently this doesn't work at all with PGD, so add some basic notes documenting this. BDR-5756 --- product_docs/docs/pgd/5.6/scaling.mdx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/product_docs/docs/pgd/5.6/scaling.mdx b/product_docs/docs/pgd/5.6/scaling.mdx index 2f064cee977..612e43afda4 100644 --- a/product_docs/docs/pgd/5.6/scaling.mdx +++ b/product_docs/docs/pgd/5.6/scaling.mdx @@ -184,3 +184,21 @@ to enable autopartitioning on the given table. If autopartitioning is already enabled, then no action occurs. Similarly, use [`bdr.autopartition_disable()`](/pgd/latest/reference/autopartition#bdrautopartition_disable) to disable autopartitioning on the given table. + +## Restrictions on EPAS-native automatic partitioning + +EPAS-native automatic partitioning is not supported on PGD. + +If the PGD extension is active on an EPAS database, DDL commands to configure +EPAS automatic partitioning (`ALTER TABLE ... SET AUTOMATIC` and `ALTER TABLE ... SET INTERVAL`) +will be rejected. + +Note that while it is possible to enable the PGD extension on an EPAS database +containing tables configured to use EPAS-native automatic partitioning, it +will not be possible to join further nodes using this node as a source node. + +EPAS-native automatic partitioning can be disabled with one of the following +commands: + +- `ALTER TABLE ... SET MANUAL` (for list partitioned tables) +- `ALTER TABLE ... SET INTERVAL ()` (for interval partitioned tables) From aa3e577bc121e9c1860b8916b28982c8437a2665 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Tue, 5 Nov 2024 14:03:11 +0000 Subject: [PATCH 13/35] Added bdr_config - reformatted node state table. Signed-off-by: Dj Walker-Morgan --- .../docs/pgd/5.6/reference/index.json | 1 + product_docs/docs/pgd/5.6/reference/index.mdx | 1 + product_docs/docs/pgd/5.6/reference/nodes.mdx | 102 +++++++++++++----- 3 files changed, 76 insertions(+), 28 deletions(-) diff --git a/product_docs/docs/pgd/5.6/reference/index.json b/product_docs/docs/pgd/5.6/reference/index.json index bef1d9c6d28..e50fc64ec2b 100644 --- a/product_docs/docs/pgd/5.6/reference/index.json +++ b/product_docs/docs/pgd/5.6/reference/index.json @@ -187,6 +187,7 @@ "list-of-node-states": "/pgd/5.6/reference/nodes#list-of-node-states", "node-management-commands": "/pgd/5.6/reference/nodes#node-management-commands", "bdr_init_physical": "/pgd/5.6/reference/nodes#bdr_init_physical", + "bdr_config": "/pgd/5.6/reference/nodes#bdr_config", "bdralter_node_group_option": "/pgd/5.6/reference/nodes-management-interfaces#bdralter_node_group_option", "bdralter_node_interface": "/pgd/5.6/reference/nodes-management-interfaces#bdralter_node_interface", "bdralter_node_option": "/pgd/5.6/reference/nodes-management-interfaces#bdralter_node_option", diff --git a/product_docs/docs/pgd/5.6/reference/index.mdx b/product_docs/docs/pgd/5.6/reference/index.mdx index a35a63d0a51..9b3c24cc942 100644 --- a/product_docs/docs/pgd/5.6/reference/index.mdx +++ b/product_docs/docs/pgd/5.6/reference/index.mdx @@ -261,6 +261,7 @@ The reference section is a definitive listing of all functions, views, and comma * [List of node states](nodes#list-of-node-states) * [Node-management commands](nodes#node-management-commands) * [`bdr_init_physical`](nodes#bdr_init_physical) + * [`bdr_config`](nodes#bdr_config) ## [Node management interfaces](nodes-management-interfaces) diff --git a/product_docs/docs/pgd/5.6/reference/nodes.mdx b/product_docs/docs/pgd/5.6/reference/nodes.mdx index 6b2de33e78c..f54de4cd385 100644 --- a/product_docs/docs/pgd/5.6/reference/nodes.mdx +++ b/product_docs/docs/pgd/5.6/reference/nodes.mdx @@ -2,38 +2,27 @@ navTitle: Node management title: Node management indexdepth: 3 +deepToC: true --- ## List of node states -- `NONE`: Node state is unset when the worker starts, expected to be set quickly - to the current known state. -- `CREATED`: `bdr.create_node()` was executed, but the node isn't a - member of any EDB Postgres Distributed cluster yet. -- `JOIN_START`: `bdr.join_node_group()` begins to join the local node to an - existing EDB Postgres Distributed cluster. -- `JOINING`: The node join has started and is currently at the initial sync phase, - creating the schema and data on the node. -- `CATCHUP`: Initial sync phase is completed. Now the join is at the last step - of retrieving and applying transactions that were performed on the upstream - peer node since the join started. -- `STANDBY`: Node join finished but hasn't yet started to broadcast changes. - All joins spend some time in this state, but if defined as a logical standby, - the node continues in this state. -- `PROMOTE`: Node was a logical standby and `bdr.promote_node` was just called to - move the node state to `ACTIVE`. These two `PROMOTE`states have to be coherent - to the fact that only one node can be with a state higher than `STANDBY` but - lower than `ACTIVE`. -- `PROMOTING`: Promotion from logical standby to full PGD node is in progress. -- `ACTIVE`: The node is a full PGD node and is currently `ACTIVE`. This is the - most common node status. -- `PART_START`: Node was `ACTIVE` or `STANDBY` and `bdr.part_node` was just called - to remove the node from the EDB Postgres Distributed cluster. -- `PARTING`: Node disconnects from other nodes and plays no further part in - consensus or replication. -- `PART_CATCHUP`: Nonparting nodes synchronize any missing data from the - recently parted node. -- `PARTED`: Node parting operation is now complete on all nodes. +| State | Description | +|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `NONE` | Node state is unset when the worker starts, expected to be set quickly to the current known state. | +| `CREATED` | `bdr.create_node()` was executed, but the node isn't a member of any EDB Postgres Distributed cluster yet. | +| `JOIN_START` | `bdr.join_node_group()` begins to join the local node to an existing EDB Postgres Distributed cluster. | +| `JOINING` | The node join has started and is currently at the initial sync phase, creating the schema and data on the node. | +| `CATCHUP` | Initial sync phase is completed. Now the join is at the last step of retrieving and applying transactions that were performed on the upstream peer node since the join started. | +| `STANDBY` | Node join finished but hasn't yet started to broadcast changes. All joins spend some time in this state, but if defined as a logical standby, the node continues in this state. | +| `PROMOTE` | Node was a logical standby and `bdr.promote_node` was just called to move the node state to `ACTIVE`. These two `PROMOTE` states have to be coherent to the fact that only one node can be with a state higher than `STANDBY` but lower than `ACTIVE`. | +| `PROMOTING` | Promotion from logical standby to full PGD node is in progress. | +| `ACTIVE` | The node is a full PGD node and is currently `ACTIVE`. This is the most common node status. | +| `PART_START` | Node was `ACTIVE` or `STANDBY` and `bdr.part_node` was just called to remove the node from the EDB Postgres Distributed cluster. | +| `PARTING` | Node disconnects from other nodes and plays no further part in consensus or replication. | +| `PART_CATCHUP` | Nonparting nodes synchronize any missing data from the recently parted node. | +| `PARTED` | Node parting operation is now complete on all nodes. | + Only one node at a time can be in either of the states PROMOTE or PROMOTING. ## Node-management commands @@ -122,3 +111,60 @@ strongly recommend that you truncate the tables rather than drop them, because: It's simpler and safer to truncate your nonreplicated tables, leaving them present but empty. + +### `bdr_config` + +This command-line utility allows the user to examine the configuration of a PGD installation. +It is analogous to the `pg_config` utility that comes with PostgreSQL. It can be used to assist +in trouble-shooting and support. + +#### Synopsis + +```shell +bdr_config [OPTION] ... +``` + +#### Options + +| Option           | Description | +| --- | --- | +| `--all` | Show all the keys and values in the configuration. | +| `--version` | Show only the BDR version related keys and values. This include the full version of the BDR extension, the Postgres version and flavor it is running against and the BDRPG and BDR plugin API versions. | +| `--debug` | Show only the BDR debug keys and values, including build information and feature enablement. | + +#### Example + +```shell +$ /usr/lib/edb-as/16/bin/bdr_config --all +__OUTPUT__ +BDR_VERSION_COMPLETE=5.6.0 +BDR_VERSION_NUM=50600 +PG_VERSION=16.4.1 (Debian 16.4.1~~snapshot11329862135.2980.1.88fbec6-1.bookworm) +PG_VERSION_NUM=160004 +PG_FLAVOR=EPAS +BDRPG_API_VERSION_NUM=202309131 +BDR_PLUGIN_API_VERSION=7011 +USE_ASSERT_CHECKING=false +USE_VALGRIND=false +EXT_ENABLE_DTRACE=false +HAVE_LAG_CONTROL=true +HAVE_ASSESS_UPDATE_RI_HOOK=false +HAVE_BDRPG_PROBES=false +HAVE_CAMO=true +HAVE_DEADLOCK_DETECTOR_HOOK=true +HAVE_HEAP_UPDATE_HOOK=true +HAVE_LAG_TRACKER=true +HAVE_LCR=true +HAVE_LOG_TOAST_COLUMNS=false +HAVE_MISC_HOOKS=true +HAVE_MISSING_PARTITION_CONFLICT=true +HAVE_MULTI_PITR=false +HAVE_SELECTIVE_BASEBACKUP=false +HAVE_SNAPSHOT_TIMESTAMP=false +HAVE_STREAMING_XACTS=true +HAVE_SYNC_COMMIT_HOOK=true +HAVE_TWOPHASE_DATA_HOOKS=true +HAVE_XLOG_FIND_NEXT_RECORD=true +HAVE_DETACH_CONCURRENTLY=true +HAVE_ANALYTICS=true +``` From 96bc2e3428098138c98f4e6d212d5910b76c4f8e Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> Date: Fri, 1 Nov 2024 20:06:37 +0000 Subject: [PATCH 14/35] Known issues as of 30Oct update (#6195) * Known issues as of 30Oct update Signed-off-by: Dj Walker-Morgan * small changes. --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh --- product_docs/docs/pgd/5.6/known_issues.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/product_docs/docs/pgd/5.6/known_issues.mdx b/product_docs/docs/pgd/5.6/known_issues.mdx index a6aad74ae7b..e8e13f6cb51 100644 --- a/product_docs/docs/pgd/5.6/known_issues.mdx +++ b/product_docs/docs/pgd/5.6/known_issues.mdx @@ -49,7 +49,6 @@ Edit the [`pgd-cli-config.yml`](cli/configuring_cli/#using-a-configuration-file) To modify a commit scope safely, use [`bdr.alter_commit_scope`](/pgd/latest/reference/functions#bdralter_commit_scope). -- Tables configured with `REPLICA IDENTITY FULL` and include `box`, `polygon` or `json` types in their columns are using PGD aren't able to be replicated. -You can mitigate this issue by configuring a primary key for `REPLICA IDENTITY` to use or, for `json` columns only, using the `jsonb` type instead. +- DDL run in serializable transactions can face the error: `ERROR: could not serialize access due to read/write dependencies among transactions`. A workaround is to run the DDL outside serializable transactions. Details of other design or implementation [limitations](planning/limitations) are also available. From 76b48fbacf4ecaa9ee3d27f7f11bc8095be9cf39 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Thu, 7 Nov 2024 12:13:10 +0000 Subject: [PATCH 15/35] Update known issues for BFILE Signed-off-by: Dj Walker-Morgan --- product_docs/docs/pgd/5.6/known_issues.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/product_docs/docs/pgd/5.6/known_issues.mdx b/product_docs/docs/pgd/5.6/known_issues.mdx index e8e13f6cb51..2d61b8aa3dc 100644 --- a/product_docs/docs/pgd/5.6/known_issues.mdx +++ b/product_docs/docs/pgd/5.6/known_issues.mdx @@ -51,4 +51,6 @@ To modify a commit scope safely, use [`bdr.alter_commit_scope`](/pgd/latest/refe - DDL run in serializable transactions can face the error: `ERROR: could not serialize access due to read/write dependencies among transactions`. A workaround is to run the DDL outside serializable transactions. +- The EPAS 17 data type [`BFILE`](/epas/latest/reference/sql_reference/02_data_types/03a_bfiles/) is not currently supported. This is due to `BFILE` being a file reference that is stored in the database, and the file itself is stored outside the database and not replicated. + Details of other design or implementation [limitations](planning/limitations) are also available. From 5fe8e252dae60c55b73a23931c151e92dca94303 Mon Sep 17 00:00:00 2001 From: Josh Earlenbaugh Date: Fri, 8 Nov 2024 15:53:51 -0500 Subject: [PATCH 16/35] Replace 'SYNCHRONOUS_COMMIT' with 'SYNCHRONOUS COMMIT' in 5.6 docs (#6172) * Added bdr_config - reformatted node state table. Signed-off-by: Dj Walker-Morgan * Known issues as of 30Oct update (#6195) * Known issues as of 30Oct update Signed-off-by: Dj Walker-Morgan * small changes. --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh * Update known issues for BFILE Signed-off-by: Dj Walker-Morgan * replaced in commit-scope-rules.mdx * Replaced in degrading.mdx. * Replaced in synchronous commit page. * Replaced in references. * Resolving conflict * Update product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx Co-authored-by: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Dj Walker-Morgan Co-authored-by: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> --- .../5.6/commit-scopes/commit-scope-rules.mdx | 8 +- .../docs/pgd/5.6/commit-scopes/degrading.mdx | 16 +- .../5.6/commit-scopes/synchronous_commit.mdx | 18 +- .../docs/pgd/5.6/reference/commit-scopes.mdx | 16 +- product_docs/docs/pgd/5/reference/index.json | 352 ++++++++++++++++++ 5 files changed, 382 insertions(+), 28 deletions(-) diff --git a/product_docs/docs/pgd/5.6/commit-scopes/commit-scope-rules.mdx b/product_docs/docs/pgd/5.6/commit-scopes/commit-scope-rules.mdx index 150e8474c8c..e636ae25fbd 100644 --- a/product_docs/docs/pgd/5.6/commit-scopes/commit-scope-rules.mdx +++ b/product_docs/docs/pgd/5.6/commit-scopes/commit-scope-rules.mdx @@ -61,11 +61,11 @@ If you're familiar with PostgreSQL's `synchronous_standby_names` feature, be awa Currently, there are four commit scope kinds. The following is a summary, with links to more details. -### `SYNCHRONOUS_COMMIT` +### `SYNCHRONOUS COMMIT` -Synchronous Commit is a commit scope option that's designed to behave like the native Postgres `synchronous_commit` option, but is usable from within the commit scope environment. Unlike `GROUP COMMIT`, it's a synchronous non-two-phase commit operation. Like `GROUP COMMIT`, it supports an optional `DEGRADE ON` clause. The commit scope group that comes before this option controls the groups and confirmation requirements the `SYNCHRONOUS_COMMIT` uses. +Synchronous Commit is a commit scope option that's designed to behave like the native Postgres `synchronous_commit` option, but is usable from within the commit scope environment. Unlike `GROUP COMMIT`, it's a synchronous non-two-phase commit operation. Like `GROUP COMMIT`, it supports an optional `DEGRADE ON` clause. The commit scope group that comes before this option controls the groups and confirmation requirements the `SYNCHRONOUS COMMIT` uses. -For more details, see [`SYNCHRONOUS_COMMIT`](synchronous_commit). +For more details, see [`SYNCHRONOUS COMMIT`](synchronous_commit). ### `GROUP COMMIT` @@ -94,7 +94,7 @@ For more details, see [`LAG CONTROL`](lag-control). Commit scope rules are composed of one or more operations that work in combination. Use an AND to form a single rule. For example: ``` -MAJORITY (Region_A) SYNCHRONOUS_COMMIT AND ANY 1 (Region_A) LAG CONTROL (MAX_LAG_SIZE = '50MB') +MAJORITY (Region_A) SYNCHRONOUS COMMIT AND ANY 1 (Region_A) LAG CONTROL (MAX_LAG_SIZE = '50MB') ``` The first operation sets up a synchronous commit against a majority of `Region_A`. The second operation adds lag control that starts pushing the commit delay up when any one of the nodes in `Region_A` has more than 50MB of lag. This combination of operations allows the lag control to operate when any node is lagging. diff --git a/product_docs/docs/pgd/5.6/commit-scopes/degrading.mdx b/product_docs/docs/pgd/5.6/commit-scopes/degrading.mdx index 064f2674300..0c3980b09fc 100644 --- a/product_docs/docs/pgd/5.6/commit-scopes/degrading.mdx +++ b/product_docs/docs/pgd/5.6/commit-scopes/degrading.mdx @@ -4,7 +4,7 @@ navTitle: Degrading deepToC: true --- -`SYNCHRONOUS_COMMIT`, `GROUP COMMIT`, and `CAMO` each have the optional capability of degrading the requirements for transactions when particular performance thresholds are crossed. +`SYNCHRONOUS COMMIT`, `GROUP COMMIT`, and `CAMO` each have the optional capability of degrading the requirements for transactions when particular performance thresholds are crossed. When a node is applying a transaction and that transaction times out, it can be useful to trigger a process of degrading the requirements of the transaction to be completed, rather than just rolling back. @@ -24,31 +24,31 @@ This mechanism alone is insufficient for the intended behavior, as this alone wo To avoid this, the PGD manager process also periodically (every 5s) checks the connectivity and apply rate (the one in [bdr.node_replication_rates](/pgd/latest/reference/catalogs-visible/#bdrnode_replication_rates)) and if there are commit scopes that would degrade at that point based on the current state of replication, they will be automatically degraded—such that any transaction using that commit scope when processing after that uses the degraded rule instead of waiting for timeout—until the manager process detects that replication is moving swiftly enough again. -## SYNCHRONOUS_COMMIT and GROUP COMMIT +## SYNCHRONOUS COMMIT and GROUP COMMIT -Both `SYNCHRONOUS_COMMIT` and `GROUP COMMIT` have `timeout` and `require_write_lead` parameters, with defaults of `0` and `false` respectively. You should probably always set the `timeout`, as the default of `0` causes an instant degrade. You can also require that the write leader be the originator of the transaction in order to switch to degraded mode (again, default is `false`). +Both `SYNCHRONOUS COMMIT` and `GROUP COMMIT` have `timeout` and `require_write_lead` parameters, with defaults of `0` and `false` respectively. You should probably always set the `timeout`, as the default of `0` causes an instant degrade. You can also require that the write leader be the originator of the transaction in order to switch to degraded mode (again, default is `false`). -Both `SYNCHRONOUS_COMMIT` and `GROUP COMMIT` also have options regarding which rule you can degrade to—which depends on which rule you are degrading from. +Both `SYNCHRONOUS COMMIT` and `GROUP COMMIT` also have options regarding which rule you can degrade to—which depends on which rule you are degrading from. First of all, you can degrade to asynchronous operation: ```sql -ALL (left_dc) SYNCHRONOUS_COMMIT DEGRADE ON (timeout=20s) TO ASYNC +ALL (left_dc) SYNCHRONOUS COMMIT DEGRADE ON (timeout=20s) TO ASYNC ``` You can also degrade to a less restrictive commit group with the same commit scope kind (again as long as the kind is either `SYNCHRONOUS_COMMIT` or `GROUP COMMIT`). For instance, you can degrade as follows: ```sql -ALL (left_dc) SYNCHRONOUS_COMMIT DEGRADE ON (timeout=20s) TO MAJORITY (left_dc) SYNCHRONOUS_COMMIT +ALL (left_dc) SYNCHRONOUS COMMIT DEGRADE ON (timeout=20s) TO MAJORITY (left_dc) SYNCHRONOUS COMMIT ``` or as follows: ```sql -ANY 3 (left_dc) SYNCHRONOUS_COMMIT DEGRADE ON (timeout=20s) TO ANY 2 (left_dc) SYNCHRONOUS_COMMIT +ANY 3 (left_dc) SYNCHRONOUS COMMIT DEGRADE ON (timeout=20s) TO ANY 2 (left_dc) SYNCHRONOUS COMMIT ``` -But you cannot degrade from `SYNCHRONOUS_COMMIT` to `GROUP COMMIT` or the other way around. +But you cannot degrade from `SYNCHRONOUS COMMIT` to `GROUP COMMIT` or the other way around. ## CAMO diff --git a/product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx b/product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx index f39a6e66271..8e4a5e7b0a5 100644 --- a/product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx +++ b/product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx @@ -3,31 +3,30 @@ title: Synchronous Commit deepToC: true --- -Commit scope kind: `SYNCHRONOUS_COMMIT` -alias: `SYNCHRONOUS COMMIT` +Commit scope kind: `SYNCHRONOUS COMMIT` ## Overview -PGD's `SYNCHRONOUS_COMMIT` is a commit scope kind that works in a way that's more like PostgreSQL's [`synchronous_commit`](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT) option in its underlying operation. Unlike the PostgreSQL option, though, it's configured as a commit scope and is easier to configure and interact with in PGD. +PGD's `SYNCHRONOUS COMMIT` is a commit scope kind that works in a way that's more like PostgreSQL's [`synchronous_commit`](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT) option in its underlying operation. Unlike the PostgreSQL option, though, it's configured as a commit scope and is easier to configure and interact with in PGD. -Unlike other commit scope kinds, such as `GROUP COMMIT` and `CAMO`, the transactions in a `SYNCHRONOUS_COMMIT` operation aren't transformed into a two-phase commit (2PC) transaction. They work more like a Postgres `synchronous_commit`. +Unlike other commit scope kinds, such as `GROUP COMMIT` and `CAMO`, the transactions in a `SYNCHRONOUS COMMIT` operation aren't transformed into a two-phase commit (2PC) transaction. They work more like a Postgres `synchronous_commit`. ## Example -In this example, when this commit scope is in use, any node in the `left_dc` group uses `SYNCHRONOUS_COMMIT` to replicate changes to the other nodes in the `left_dc` group. It looks for a majority of nodes in the `left_dc` group to confirm that they committed the transaction. +In this example, when this commit scope is in use, any node in the `left_dc` group uses `SYNCHRONOUS COMMIT` to replicate changes to the other nodes in the `left_dc` group. It looks for a majority of nodes in the `left_dc` group to confirm that they committed the transaction. ``` SELECT bdr.create_commit_scope( commit_scope_name := 'example_sc_scope', origin_node_group := 'left_dc', - rule := 'MAJORITY (left_dc) SYNCHRONOUS_COMMIT', + rule := 'MAJORITY (left_dc) SYNCHRONOUS COMMIT', wait_for_ready := true ); ``` ## Configuration -`SYNCHRONOUS_COMMIT` supports the optional `DEGRADE ON` clause. See the [`SYNCHRONOUS_COMMIT`](/pgd/latest/reference/commit-scopes/#synchronous_commit) commit scope reference for specific configuration parameters or see [this section](degrading) regarding Degrade on options. +`SYNCHRONOUS COMMIT` supports the optional `DEGRADE ON` clause. See the [`SYNCHRONOUS COMMIT`](/pgd/latest/reference/commit-scopes/#synchronous_commit) commit scope reference for specific configuration parameters or see [this section](degrading) regarding Degrade on options. ## Confirmation @@ -40,4 +39,7 @@ SELECT bdr.create_commit_scope( ## Details -Currently `SYNCHRONOUS_COMMIT` doesn't use the confirmation levels of the commit scope rule syntax. +Currently `SYNCHRONOUS COMMIT` doesn't use the confirmation levels of the commit scope rule syntax. + +In commit scope rules, the original keyword `SYNCHRONOUS_COMMIT` is now aliased to `SYNCHRONOUS COMMIT`. The use of a space instead of an underscore helps distinguish it from Postgres's native `SYNCHRONOUS_COMMIT`. + diff --git a/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx b/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx index 1c2c7378946..4768eecd452 100644 --- a/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx +++ b/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx @@ -42,7 +42,7 @@ commit_scope_kind: { GROUP COMMIT [ ( group_commit_parameter = value [, ... ] ) ] [ ABORT ON ( abort_on_parameter = value ) ] [ DEGRADE ON (degrade_on_parameter = value [, ... ] ) TO commit_scope_degrade_operation ] | CAMO [ DEGRADE ON ( degrade_on_parameter = value [, ... ] ) TO ASYNC ] | LAG CONTROL [ ( lag_control_parameter = value [, ... ] ) ] - | SYNCHRONOUS_COMMIT [ DEGRADE ON (degrade_on_parameter = value ) TO commit_scope_degrade_operation ] } + | SYNCHRONOUS COMMIT [ DEGRADE ON (degrade_on_parameter = value ) TO commit_scope_degrade_operation ] } commit_scope_degrade_operation: commit_scope_group confirmation_level commit_scope_kind @@ -55,12 +55,12 @@ Where `node_group` is the name of a PGD data node group. The `commit_scope_degrade_operation` is either the same commit scope kind with a less restrictive commit scope group as the overall rule being defined, or is asynchronous (`ASYNC`). -For instance, [you can degrade](/pgd/latest/commit-scopes/degrading/) from an `ALL SYNCHRONOUS_COMMIT` to a `MAJORITY SYNCHRONOUS_COMMIT` or a `MAJORITY SYNCHRONOUS_COMMIT` to an `ANY 3 SYNCHRONOUS_COMMIT` or even an `ANY 3 SYNCHRONOUS_COMMIT` to an `ANY 2 SYNCHRONOUS_COMMIT`. You can also degrade from `SYNCRHONOUS_COMMIT` to `ASYNC`. However, you cannot degrade from `SYNCHRONOUS_COMMIT` to `GROUP_COMMIT` or the other way around, regardless of the commit scope groups involved. +For instance, [you can degrade](/pgd/latest/commit-scopes/degrading/) from an `ALL SYNCHRONOUS COMMIT` to a `MAJORITY SYNCHRONOUS COMMIT` or a `MAJORITY SYNCHRONOUS COMMIT` to an `ANY 3 SYNCHRONOUS COMMIT` or even an `ANY 3 SYNCHRONOUS COMMIT` to an `ANY 2 SYNCHRONOUS COMMIT`. You can also degrade from `SYNCHRONOUS COMMIT` to `ASYNC`. However, you cannot degrade from `SYNCHRONOUS COMMIT` to `GROUP COMMIT` or the other way around, regardless of the commit scope groups involved. It is also possible to combine rules using `AND`, each with their own degradation clause: ``` -ALL ORIGIN_GROUP SYNCHRONOUS_COMMIT DEGRADE ON (timeout = 10s) TO MAJORITY ORIGIN_GROUP SYNCHRONOUS COMMIT AND ANY 1 NOT ORIGIN_GROUP SYNCHRONOUS_COMMIT DEGRADE ON (timeout = 20s) TO ASYNC +ALL ORIGIN_GROUP SYNCHRONOUS COMMIT DEGRADE ON (timeout = 10s) TO MAJORITY ORIGIN_GROUP SYNCHRONOUS COMMIT AND ANY 1 NOT ORIGIN_GROUP SYNCHRONOUS COMMIT DEGRADE ON (timeout = 20s) TO ASYNC ``` ## Commit scope targets @@ -73,7 +73,7 @@ Instead of targeting a specific group, you can also use `ORIGIN_GROUP`, which dy SELECT bdr.create_commit_scope( commit_scope_name := 'example_scope', origin_node_group := 'top_level_group', - rule := 'MAJORITY ORIGIN_GROUP SYNCHRONOUS_COMMIT', + rule := 'MAJORITY ORIGIN_GROUP SYNCHRONOUS COMMIT', wait_for_ready := true ); ``` @@ -155,10 +155,10 @@ More details of the commit scope kinds and details of their parameters: Specify Boolean, enum, int, and interval values using the [Postgres GUC parameter value conventions](https://www.postgresql.org/docs/current/config-setting.html#CONFIG-SETTING-NAMES-VALUES). !!! -## SYNCHRONOUS_COMMIT +## SYNCHRONOUS COMMIT ``` -SYNCHRONOUS_COMMIT [ DEGRADE ON (degrade_on_parameter = value ) TO commit_scope_degrade_operation ] +SYNCHRONOUS COMMIT [ DEGRADE ON (degrade_on_parameter = value ) TO commit_scope_degrade_operation ] ``` ### DEGRADE ON parameters @@ -172,11 +172,11 @@ These set the conditions on which the commit scope rule will degrade to a less r ### commit_scope_degrade_operation -The `commit_scope_degrade_operation` must be `SYNCHRONOUS_COMMIT` with a less restrictive commit scope group—or must be asynchronous (`ASYNC`). +The `commit_scope_degrade_operation` must be `SYNCHRONOUS COMMIT` with a less restrictive commit scope group—or must be asynchronous (`ASYNC`). ## GROUP COMMIT -Allows commits to be confirmed by a consensus of nodes, controls conflict resolution settings, and, like [`SYNCHRONOUS_COMMIT`](#synchronous_commit), has optional rule-degredation parameters. +Allows commits to be confirmed by a consensus of nodes, controls conflict resolution settings, and, like [`SYNCHRONOUS COMMIT`](#synchronous_commit), has optional rule-degredation parameters. ``` GROUP COMMIT [ ( group_commit_parameter = value [, ...] ) ] [ ABORT ON ( abort_on_parameter = value ) ] [ DEGRADE ON (degrade_on_parameter = value ) TO commit_scope_degrade_operation ] diff --git a/product_docs/docs/pgd/5/reference/index.json b/product_docs/docs/pgd/5/reference/index.json index fbce200c01e..f88be0ce9be 100644 --- a/product_docs/docs/pgd/5/reference/index.json +++ b/product_docs/docs/pgd/5/reference/index.json @@ -1,4 +1,5 @@ { +<<<<<<< HEAD "bdrcamo_decision_journal": "/pgd/5/reference/catalogs-visible#bdrcamo_decision_journal", "bdrcommit_scopes": "/pgd/5/reference/catalogs-visible#bdrcommit_scopes", "bdrconflict_history": "/pgd/5/reference/catalogs-visible#bdrconflict_history", @@ -348,4 +349,355 @@ "bdrmonitor_version_details_on_all_nodes": "/pgd/5/reference/functions-internal#bdrmonitor_version_details_on_all_nodes", "bdrnode_group_member_info": "/pgd/5/reference/functions-internal#bdrnode_group_member_info", "bdrcolumn_timestamps_create": "/pgd/5/reference/clcd#bdrcolumn_timestamps_create" +======= + "bdrcamo_decision_journal": "/pgd/latest/reference/catalogs-visible#bdrcamo_decision_journal", + "bdrcommit_scopes": "/pgd/latest/reference/catalogs-visible#bdrcommit_scopes", + "bdrconflict_history": "/pgd/latest/reference/catalogs-visible#bdrconflict_history", + "bdrconflict_history_summary": "/pgd/latest/reference/catalogs-visible#bdrconflict_history_summary", + "bdrconsensus_kv_data": "/pgd/latest/reference/catalogs-visible#bdrconsensus_kv_data", + "bdrcrdt_handlers": "/pgd/latest/reference/catalogs-visible#bdrcrdt_handlers", + "bdrddl_replication": "/pgd/latest/reference/pgd-settings#bdrddl_replication", + "bdrdepend": "/pgd/latest/reference/catalogs-visible#bdrdepend", + "bdrglobal_consensus_journal": "/pgd/latest/reference/catalogs-visible#bdrglobal_consensus_journal", + "bdrglobal_consensus_journal_details": "/pgd/latest/reference/catalogs-visible#bdrglobal_consensus_journal_details", + "bdrglobal_consensus_response_journal": "/pgd/latest/reference/catalogs-visible#bdrglobal_consensus_response_journal", + "bdrglobal_lock": "/pgd/latest/reference/catalogs-visible#bdrglobal_lock", + "bdrglobal_locks": "/pgd/latest/reference/catalogs-visible#bdrglobal_locks", + "bdrgroup_camo_details": "/pgd/latest/reference/catalogs-visible#bdrgroup_camo_details", + "bdrgroup_raft_details": "/pgd/latest/reference/catalogs-visible#bdrgroup_raft_details", + "bdrgroup_replslots_details": "/pgd/latest/reference/catalogs-visible#bdrgroup_replslots_details", + "bdrgroup_subscription_summary": "/pgd/latest/reference/catalogs-visible#bdrgroup_subscription_summary", + "bdrgroup_versions_details": "/pgd/latest/reference/catalogs-visible#bdrgroup_versions_details", + "bdrlocal_consensus_snapshot": "/pgd/latest/reference/catalogs-visible#bdrlocal_consensus_snapshot", + "bdrlocal_consensus_state": "/pgd/latest/reference/catalogs-visible#bdrlocal_consensus_state", + "bdrlocal_node": "/pgd/latest/reference/catalogs-visible#bdrlocal_node", + "bdrlocal_node_summary": "/pgd/latest/reference/catalogs-visible#bdrlocal_node_summary", + "bdrlocal_sync_status": "/pgd/latest/reference/catalogs-visible#bdrlocal_sync_status", + "bdrnode": "/pgd/latest/reference/catalogs-visible#bdrnode", + "bdrnode_catchup_info": "/pgd/latest/reference/catalogs-visible#bdrnode_catchup_info", + "bdrnode_catchup_info_details": "/pgd/latest/reference/catalogs-visible#bdrnode_catchup_info_details", + "bdrnode_conflict_resolvers": "/pgd/latest/reference/catalogs-visible#bdrnode_conflict_resolvers", + "bdrnode_group": "/pgd/latest/reference/catalogs-visible#bdrnode_group", + "bdrnode_group_replication_sets": "/pgd/latest/reference/catalogs-visible#bdrnode_group_replication_sets", + "bdrnode_group_summary": "/pgd/latest/reference/catalogs-visible#bdrnode_group_summary", + "bdrnode_local_info": "/pgd/latest/reference/catalogs-visible#bdrnode_local_info", + "bdrnode_log_config": "/pgd/latest/reference/catalogs-visible#bdrnode_log_config", + "bdrnode_peer_progress": "/pgd/latest/reference/catalogs-visible#bdrnode_peer_progress", + "bdrnode_replication_rates": "/pgd/latest/reference/catalogs-visible#bdrnode_replication_rates", + "bdrnode_slots": "/pgd/latest/reference/catalogs-visible#bdrnode_slots", + "bdrnode_summary": "/pgd/latest/reference/catalogs-visible#bdrnode_summary", + "bdrqueue": "/pgd/latest/reference/catalogs-visible#bdrqueue", + "bdrreplication_set": "/pgd/latest/reference/catalogs-visible#bdrreplication_set", + "bdrreplication_set_table": "/pgd/latest/reference/catalogs-visible#bdrreplication_set_table", + "bdrreplication_set_ddl": "/pgd/latest/reference/catalogs-visible#bdrreplication_set_ddl", + "bdrreplication_sets": "/pgd/latest/reference/catalogs-visible#bdrreplication_sets", + "bdrschema_changes": "/pgd/latest/reference/catalogs-visible#bdrschema_changes", + "bdrsequence_alloc": "/pgd/latest/reference/catalogs-visible#bdrsequence_alloc", + "bdrsequences": "/pgd/latest/reference/catalogs-visible#bdrsequences", + "bdrstat_activity": "/pgd/latest/reference/catalogs-visible#bdrstat_activity", + "bdrstat_relation": "/pgd/latest/reference/catalogs-visible#bdrstat_relation", + "bdrstat_subscription": "/pgd/latest/reference/catalogs-visible#bdrstat_subscription", + "bdrsubscription": "/pgd/latest/reference/catalogs-visible#bdrsubscription", + "bdrsubscription_summary": "/pgd/latest/reference/catalogs-visible#bdrsubscription_summary", + "bdrtables": "/pgd/latest/reference/catalogs-visible#bdrtables", + "bdrtaskmgr_work_queue": "/pgd/latest/reference/catalogs-visible#bdrtaskmgr_work_queue", + "bdrtaskmgr_workitem_status": "/pgd/latest/reference/catalogs-visible#bdrtaskmgr_workitem_status", + "bdrtaskmgr_local_work_queue": "/pgd/latest/reference/catalogs-visible#bdrtaskmgr_local_work_queue", + "bdrtaskmgr_local_workitem_status": "/pgd/latest/reference/catalogs-visible#bdrtaskmgr_local_workitem_status", + "bdrtrigger": "/pgd/latest/reference/catalogs-visible#bdrtrigger", + "bdrtriggers": "/pgd/latest/reference/catalogs-visible#bdrtriggers", + "bdrworkers": "/pgd/latest/reference/catalogs-visible#bdrworkers", + "bdrwriters": "/pgd/latest/reference/catalogs-visible#bdrwriters", + "bdrworker_tasks": "/pgd/latest/reference/catalogs-visible#bdrworker_tasks", + "bdrbdr_version": "/pgd/latest/reference/functions#bdrbdr_version", + "bdrbdr_version_num": "/pgd/latest/reference/functions#bdrbdr_version_num", + "bdrget_relation_stats": "/pgd/latest/reference/functions#bdrget_relation_stats", + "bdrget_subscription_stats": "/pgd/latest/reference/functions#bdrget_subscription_stats", + "bdrlocal_node_id": "/pgd/latest/reference/functions#bdrlocal_node_id", + "bdrlast_committed_lsn": "/pgd/latest/reference/functions#bdrlast_committed_lsn", + "transaction_id": "/pgd/latest/reference/functions#transaction_id", + "bdris_node_connected": "/pgd/latest/reference/functions#bdris_node_connected", + "bdris_node_ready": "/pgd/latest/reference/functions#bdris_node_ready", + "bdrconsensus_disable": "/pgd/latest/reference/functions#bdrconsensus_disable", + "bdrconsensus_enable": "/pgd/latest/reference/functions#bdrconsensus_enable", + "bdrconsensus_proto_version": "/pgd/latest/reference/functions#bdrconsensus_proto_version", + "bdrconsensus_snapshot_export": "/pgd/latest/reference/functions#bdrconsensus_snapshot_export", + "bdrconsensus_snapshot_import": "/pgd/latest/reference/functions#bdrconsensus_snapshot_import", + "bdrconsensus_snapshot_verify": "/pgd/latest/reference/functions#bdrconsensus_snapshot_verify", + "bdrget_consensus_status": "/pgd/latest/reference/functions#bdrget_consensus_status", + "bdrget_raft_status": "/pgd/latest/reference/functions#bdrget_raft_status", + "bdrraft_leadership_transfer": "/pgd/latest/reference/functions#bdrraft_leadership_transfer", + "bdrwait_slot_confirm_lsn": "/pgd/latest/reference/functions#bdrwait_slot_confirm_lsn", + "bdrwait_for_apply_queue": "/pgd/latest/reference/functions#bdrwait_for_apply_queue", + "bdrget_node_sub_receive_lsn": "/pgd/latest/reference/functions#bdrget_node_sub_receive_lsn", + "bdrget_node_sub_apply_lsn": "/pgd/latest/reference/functions#bdrget_node_sub_apply_lsn", + "bdrreplicate_ddl_command": "/pgd/latest/reference/functions#bdrreplicate_ddl_command", + "bdrrun_on_all_nodes": "/pgd/latest/reference/functions#bdrrun_on_all_nodes", + "bdrrun_on_nodes": "/pgd/latest/reference/functions#bdrrun_on_nodes", + "bdrrun_on_group": "/pgd/latest/reference/functions#bdrrun_on_group", + "bdrglobal_lock_table": "/pgd/latest/reference/functions#bdrglobal_lock_table", + "bdrwait_for_xid_progress": "/pgd/latest/reference/functions#bdrwait_for_xid_progress", + "bdrlocal_group_slot_name": "/pgd/latest/reference/functions#bdrlocal_group_slot_name", + "bdrnode_group_type": "/pgd/latest/reference/functions#bdrnode_group_type", + "bdralter_node_kind": "/pgd/latest/reference/functions#bdralter_node_kind", + "bdralter_subscription_skip_changes_upto": "/pgd/latest/reference/functions#bdralter_subscription_skip_changes_upto", + "bdrglobal_advisory_lock": "/pgd/latest/reference/functions#bdrglobal_advisory_lock", + "bdrglobal_advisory_unlock": "/pgd/latest/reference/functions#bdrglobal_advisory_unlock", + "bdrmonitor_group_versions": "/pgd/latest/reference/functions#bdrmonitor_group_versions", + "bdrmonitor_group_raft": "/pgd/latest/reference/functions#bdrmonitor_group_raft", + "bdrmonitor_local_replslots": "/pgd/latest/reference/functions#bdrmonitor_local_replslots", + "bdrwal_sender_stats": "/pgd/latest/reference/functions#bdrwal_sender_stats", + "bdrget_decoding_worker_stat": "/pgd/latest/reference/functions#bdrget_decoding_worker_stat", + "bdrlag_control": "/pgd/latest/reference/functions#bdrlag_control", + "bdris_camo_partner_connected": "/pgd/latest/reference/functions#bdris_camo_partner_connected", + "bdris_camo_partner_ready": "/pgd/latest/reference/functions#bdris_camo_partner_ready", + "bdrget_configured_camo_partner": "/pgd/latest/reference/functions#bdrget_configured_camo_partner", + "bdrwait_for_camo_partner_queue": "/pgd/latest/reference/functions#bdrwait_for_camo_partner_queue", + "bdrcamo_transactions_resolved": "/pgd/latest/reference/functions#bdrcamo_transactions_resolved", + "bdrlogical_transaction_status": "/pgd/latest/reference/functions#bdrlogical_transaction_status", + "bdradd_commit_scope": "/pgd/latest/reference/functions#bdradd_commit_scope", + "bdralter_commit_scope": "/pgd/latest/reference/functions#bdralter_commit_scope", + "bdrremove_commit_scope": "/pgd/latest/reference/functions#bdrremove_commit_scope", + "bdrdefault_conflict_detection": "/pgd/latest/reference/pgd-settings#bdrdefault_conflict_detection", + "bdrdefault_sequence_kind": "/pgd/latest/reference/pgd-settings#bdrdefault_sequence_kind", + "bdrdefault_replica_identity": "/pgd/latest/reference/pgd-settings#bdrdefault_replica_identity", + "bdrrole_replication": "/pgd/latest/reference/pgd-settings#bdrrole_replication", + "bdrddl_locking": "/pgd/latest/reference/pgd-settings#bdrddl_locking", + "bdrtruncate_locking": "/pgd/latest/reference/pgd-settings#bdrtruncate_locking", + "bdrglobal_lock_max_locks": "/pgd/latest/reference/pgd-settings#bdrglobal_lock_max_locks", + "bdrglobal_lock_timeout": "/pgd/latest/reference/pgd-settings#bdrglobal_lock_timeout", + "bdrglobal_lock_statement_timeout": "/pgd/latest/reference/pgd-settings#bdrglobal_lock_statement_timeout", + "bdrglobal_lock_idle_timeout": "/pgd/latest/reference/pgd-settings#bdrglobal_lock_idle_timeout", + "bdrlock_table_locking": "/pgd/latest/reference/pgd-settings#bdrlock_table_locking", + "bdrpredictive_checks": "/pgd/latest/reference/pgd-settings#bdrpredictive_checks", + "bdrreplay_progress_frequency": "/pgd/latest/reference/pgd-settings#bdrreplay_progress_frequency", + "bdrstandby_slot_names": "/pgd/latest/reference/pgd-settings#bdrstandby_slot_names", + "bdrwriters_per_subscription": "/pgd/latest/reference/pgd-settings#bdrwriters_per_subscription", + "bdrmax_writers_per_subscription": "/pgd/latest/reference/pgd-settings#bdrmax_writers_per_subscription", + "bdrxact_replication": "/pgd/latest/reference/pgd-settings#bdrxact_replication", + "bdrpermit_unsafe_commands": "/pgd/latest/reference/pgd-settings#bdrpermit_unsafe_commands", + "bdrbatch_inserts": "/pgd/latest/reference/pgd-settings#bdrbatch_inserts", + "bdrmaximum_clock_skew": "/pgd/latest/reference/pgd-settings#bdrmaximum_clock_skew", + "bdrmaximum_clock_skew_action": "/pgd/latest/reference/pgd-settings#bdrmaximum_clock_skew_action", + "bdraccept_connections": "/pgd/latest/reference/pgd-settings#bdraccept_connections", + "bdrstandby_slots_min_confirmed": "/pgd/latest/reference/pgd-settings#bdrstandby_slots_min_confirmed", + "bdrwriter_input_queue_size": "/pgd/latest/reference/pgd-settings#bdrwriter_input_queue_size", + "bdrwriter_output_queue_size": "/pgd/latest/reference/pgd-settings#bdrwriter_output_queue_size", + "bdrmin_worker_backoff_delay": "/pgd/latest/reference/pgd-settings#bdrmin_worker_backoff_delay", + "bdrcrdt_raw_value": "/pgd/latest/reference/pgd-settings#bdrcrdt_raw_value", + "bdrcommit_scope": "/pgd/latest/reference/pgd-settings#bdrcommit_scope", + "bdrcamo_local_mode_delay": "/pgd/latest/reference/pgd-settings#bdrcamo_local_mode_delay", + "bdrcamo_enable_client_warnings": "/pgd/latest/reference/pgd-settings#bdrcamo_enable_client_warnings", + "bdrdefault_streaming_mode": "/pgd/latest/reference/pgd-settings#bdrdefault_streaming_mode", + "bdrlag_control_max_commit_delay": "/pgd/latest/reference/pgd-settings#bdrlag_control_max_commit_delay", + "bdrlag_control_max_lag_size": "/pgd/latest/reference/pgd-settings#bdrlag_control_max_lag_size", + "bdrlag_control_max_lag_time": "/pgd/latest/reference/pgd-settings#bdrlag_control_max_lag_time", + "bdrlag_control_min_conforming_nodes": "/pgd/latest/reference/pgd-settings#bdrlag_control_min_conforming_nodes", + "bdrlag_control_commit_delay_adjust": "/pgd/latest/reference/pgd-settings#bdrlag_control_commit_delay_adjust", + "bdrlag_control_sample_interval": "/pgd/latest/reference/pgd-settings#bdrlag_control_sample_interval", + "bdrlag_control_commit_delay_start": "/pgd/latest/reference/pgd-settings#bdrlag_control_commit_delay_start", + "bdrtimestamp_snapshot_keep": "/pgd/latest/reference/pgd-settings#bdrtimestamp_snapshot_keep", + "bdrdebug_level": "/pgd/latest/reference/pgd-settings#bdrdebug_level", + "bdrtrace_level": "/pgd/latest/reference/pgd-settings#bdrtrace_level", + "bdrtrack_subscription_apply": "/pgd/latest/reference/pgd-settings#bdrtrack_subscription_apply", + "bdrtrack_relation_apply": "/pgd/latest/reference/pgd-settings#bdrtrack_relation_apply", + "bdrtrack_apply_lock_timing": "/pgd/latest/reference/pgd-settings#bdrtrack_apply_lock_timing", + "bdrenable_wal_decoder": "/pgd/latest/reference/pgd-settings#bdrenable_wal_decoder", + "bdrreceive_lcr": "/pgd/latest/reference/pgd-settings#bdrreceive_lcr", + "bdrlcr_cleanup_interval": "/pgd/latest/reference/pgd-settings#bdrlcr_cleanup_interval", + "bdrglobal_connection_timeout": "/pgd/latest/reference/pgd-settings#bdrglobal_connection_timeout", + "bdrglobal_keepalives": "/pgd/latest/reference/pgd-settings#bdrglobal_keepalives", + "bdrglobal_keepalives_idle": "/pgd/latest/reference/pgd-settings#bdrglobal_keepalives_idle", + "bdrglobal_keepalives_interval": "/pgd/latest/reference/pgd-settings#bdrglobal_keepalives_interval", + "bdrglobal_keepalives_count": "/pgd/latest/reference/pgd-settings#bdrglobal_keepalives_count", + "bdrglobal_tcp_user_timeout": "/pgd/latest/reference/pgd-settings#bdrglobal_tcp_user_timeout", + "bdrraft_global_election_timeout": "/pgd/latest/reference/pgd-settings#bdrraft_global_election_timeout", + "bdrraft_group_election_timeout": "/pgd/latest/reference/pgd-settings#bdrraft_group_election_timeout", + "bdrraft_response_timeout": "/pgd/latest/reference/pgd-settings#bdrraft_response_timeout", + "bdrraft_keep_min_entries": "/pgd/latest/reference/pgd-settings#bdrraft_keep_min_entries", + "bdrraft_log_min_apply_duration": "/pgd/latest/reference/pgd-settings#bdrraft_log_min_apply_duration", + "bdrraft_log_min_message_duration": "/pgd/latest/reference/pgd-settings#bdrraft_log_min_message_duration", + "bdrraft_group_max_connections": "/pgd/latest/reference/pgd-settings#bdrraft_group_max_connections", + "bdrbackwards_compatibility": "/pgd/latest/reference/pgd-settings#bdrbackwards_compatibility", + "bdrtrack_replication_estimates": "/pgd/latest/reference/pgd-settings#bdrtrack_replication_estimates", + "bdrlag_tracker_apply_rate_weight": "/pgd/latest/reference/pgd-settings#bdrlag_tracker_apply_rate_weight", + "bdrenable_auto_sync_reconcile": "/pgd/latest/reference/pgd-settings#bdrenable_auto_sync_reconcile", + "list-of-node-states": "/pgd/latest/reference/nodes#list-of-node-states", + "node-management-commands": "/pgd/latest/reference/nodes#node-management-commands", + "bdr_init_physical": "/pgd/latest/reference/nodes#bdr_init_physical", + "bdralter_node_group_option": "/pgd/latest/reference/nodes-management-interfaces#bdralter_node_group_option", + "bdralter_node_interface": "/pgd/latest/reference/nodes-management-interfaces#bdralter_node_interface", + "bdralter_node_option": "/pgd/latest/reference/nodes-management-interfaces#bdralter_node_option", + "bdralter_subscription_enable": "/pgd/latest/reference/nodes-management-interfaces#bdralter_subscription_enable", + "bdralter_subscription_disable": "/pgd/latest/reference/nodes-management-interfaces#bdralter_subscription_disable", + "bdrcreate_node": "/pgd/latest/reference/nodes-management-interfaces#bdrcreate_node", + "bdrcreate_node_group": "/pgd/latest/reference/nodes-management-interfaces#bdrcreate_node_group", + "bdrjoin_node_group": "/pgd/latest/reference/nodes-management-interfaces#bdrjoin_node_group", + "bdrpart_node": "/pgd/latest/reference/nodes-management-interfaces#bdrpart_node", + "bdrpromote_node": "/pgd/latest/reference/nodes-management-interfaces#bdrpromote_node", + "bdrswitch_node_group": "/pgd/latest/reference/nodes-management-interfaces#bdrswitch_node_group", + "bdrwait_for_join_completion": "/pgd/latest/reference/nodes-management-interfaces#bdrwait_for_join_completion", + "bdralter_node_group_config": "/pgd/latest/reference/nodes-management-interfaces#bdralter_node_group_config", + "bdrdrop_node_group": "/pgd/latest/reference/nodes-management-interfaces#bdrdrop_node_group", + "bdrcreate_proxy": "/pgd/latest/reference/routing#bdrcreate_proxy", + "bdralter_proxy_option": "/pgd/latest/reference/routing#bdralter_proxy_option", + "bdrdrop_proxy": "/pgd/latest/reference/routing#bdrdrop_proxy", + "bdrrouting_leadership_transfer": "/pgd/latest/reference/routing#bdrrouting_leadership_transfer", + "cs.commit-scope-syntax": "/pgd/latest/reference/commit-scopes#commit-scope-syntax", + "cs.commit-scope-groups": "/pgd/latest/reference/commit-scopes#commit-scope-groups", + "cs.any": "/pgd/latest/reference/commit-scopes#any", + "cs.any-not": "/pgd/latest/reference/commit-scopes#any-not", + "cs.majority": "/pgd/latest/reference/commit-scopes#majority", + "cs.majority-not": "/pgd/latest/reference/commit-scopes#majority-not", + "cs.all": "/pgd/latest/reference/commit-scopes#all", + "cs.all-not": "/pgd/latest/reference/commit-scopes#all-not", + "cs.confirmation-level": "/pgd/latest/reference/commit-scopes#confirmation-level", + "cs.on-received": "/pgd/latest/reference/commit-scopes#on-received", + "cs.on-replicated": "/pgd/latest/reference/commit-scopes#on-replicated", + "cs.on-durable": "/pgd/latest/reference/commit-scopes#on-durable", + "cs.on-visible": "/pgd/latest/reference/commit-scopes#on-visible", + "cs.commit-scope-kinds": "/pgd/latest/reference/commit-scopes#commit-scope-kinds", + "cs.group-commit": "/pgd/latest/reference/commit-scopes#group-commit", + "cs.group-commit-parameters": "/pgd/latest/reference/commit-scopes#group-commit-parameters", + "cs.abort-on-parameters": "/pgd/latest/reference/commit-scopes#abort-on-parameters", + "cs.transaction_tracking-settings": "/pgd/latest/reference/commit-scopes#transaction_tracking-settings", + "cs.conflict_resolution-settings": "/pgd/latest/reference/commit-scopes#conflict_resolution-settings", + "cs.commit_decision-settings": "/pgd/latest/reference/commit-scopes#commit_decision-settings", + "cs.camo": "/pgd/latest/reference/commit-scopes#camo", + "cs.degrade-on-parameters": "/pgd/latest/reference/commit-scopes#degrade-on-parameters", + "cs.lag-control": "/pgd/latest/reference/commit-scopes#lag-control", + "cs.lag-control-parameters": "/pgd/latest/reference/commit-scopes#lag-control-parameters", + "cs.synchronous_commit": "/pgd/latest/reference/commit-scopes#synchronous_commit", + "conflict-detection": "/pgd/latest/reference/conflicts#conflict-detection", + "list-of-conflict-types": "/pgd/latest/reference/conflicts#list-of-conflict-types", + "conflict-resolution": "/pgd/latest/reference/conflicts#conflict-resolution", + "list-of-conflict-resolvers": "/pgd/latest/reference/conflicts#list-of-conflict-resolvers", + "default-conflict-resolvers": "/pgd/latest/reference/conflicts#default-conflict-resolvers", + "list-of-conflict-resolutions": "/pgd/latest/reference/conflicts#list-of-conflict-resolutions", + "conflict-logging": "/pgd/latest/reference/conflicts#conflict-logging", + "bdralter_table_conflict_detection": "/pgd/latest/reference/conflict_functions#bdralter_table_conflict_detection", + "bdralter_node_set_conflict_resolver": "/pgd/latest/reference/conflict_functions#bdralter_node_set_conflict_resolver", + "bdralter_node_set_log_config": "/pgd/latest/reference/conflict_functions#bdralter_node_set_log_config", + "bdrcreate_replication_set": "/pgd/latest/reference/repsets-management#bdrcreate_replication_set", + "bdralter_replication_set": "/pgd/latest/reference/repsets-management#bdralter_replication_set", + "bdrdrop_replication_set": "/pgd/latest/reference/repsets-management#bdrdrop_replication_set", + "bdralter_node_replication_sets": "/pgd/latest/reference/repsets-management#bdralter_node_replication_sets", + "bdrreplication_set_add_table": "/pgd/latest/reference/repsets-membership#bdrreplication_set_add_table", + "bdrreplication_set_remove_table": "/pgd/latest/reference/repsets-membership#bdrreplication_set_remove_table", + "bdrreplication_set_add_ddl_filter": "/pgd/latest/reference/repsets-ddl-filtering#bdrreplication_set_add_ddl_filter", + "bdrreplication_set_remove_ddl_filter": "/pgd/latest/reference/repsets-ddl-filtering#bdrreplication_set_remove_ddl_filter", + "pgd_bench": "/pgd/latest/reference/testingandtuning#pgd_bench", + "bdralter_sequence_set_kind": "/pgd/latest/reference/sequences#bdralter_sequence_set_kind", + "bdrextract_timestamp_from_snowflakeid": "/pgd/latest/reference/sequences#bdrextract_timestamp_from_snowflakeid", + "bdrextract_nodeid_from_snowflakeid": "/pgd/latest/reference/sequences#bdrextract_nodeid_from_snowflakeid", + "bdrextract_localseqid_from_snowflakeid": "/pgd/latest/reference/sequences#bdrextract_localseqid_from_snowflakeid", + "bdrtimestamp_to_snowflakeid": "/pgd/latest/reference/sequences#bdrtimestamp_to_snowflakeid", + "bdrextract_timestamp_from_timeshard": "/pgd/latest/reference/sequences#bdrextract_timestamp_from_timeshard", + "bdrextract_nodeid_from_timeshard": "/pgd/latest/reference/sequences#bdrextract_nodeid_from_timeshard", + "bdrextract_localseqid_from_timeshard": "/pgd/latest/reference/sequences#bdrextract_localseqid_from_timeshard", + "bdrtimestamp_to_timeshard": "/pgd/latest/reference/sequences#bdrtimestamp_to_timeshard", + "bdrgen_ksuuid_v2": "/pgd/latest/reference/sequences#bdrgen_ksuuid_v2", + "bdrksuuid_v2_cmp": "/pgd/latest/reference/sequences#bdrksuuid_v2_cmp", + "bdrextract_timestamp_from_ksuuid_v2": "/pgd/latest/reference/sequences#bdrextract_timestamp_from_ksuuid_v2", + "bdrgen_ksuuid": "/pgd/latest/reference/sequences#bdrgen_ksuuid", + "bdruuid_v1_cmp": "/pgd/latest/reference/sequences#bdruuid_v1_cmp", + "bdrextract_timestamp_from_ksuuid": "/pgd/latest/reference/sequences#bdrextract_timestamp_from_ksuuid", + "bdrautopartition": "/pgd/latest/reference/autopartition#bdrautopartition", + "bdrdrop_autopartition": "/pgd/latest/reference/autopartition#bdrdrop_autopartition", + "bdrautopartition_wait_for_partitions": "/pgd/latest/reference/autopartition#bdrautopartition_wait_for_partitions", + "bdrautopartition_wait_for_partitions_on_all_nodes": "/pgd/latest/reference/autopartition#bdrautopartition_wait_for_partitions_on_all_nodes", + "bdrautopartition_find_partition": "/pgd/latest/reference/autopartition#bdrautopartition_find_partition", + "bdrautopartition_enable": "/pgd/latest/reference/autopartition#bdrautopartition_enable", + "bdrautopartition_disable": "/pgd/latest/reference/autopartition#bdrautopartition_disable", + "internal-functions": "/pgd/latest/reference/autopartition#internal-functions", + "bdrautopartition_create_partition": "/pgd/latest/reference/autopartition#bdrautopartition_create_partition", + "bdrautopartition_drop_partition": "/pgd/latest/reference/autopartition#bdrautopartition_drop_partition", + "bdrcreate_conflict_trigger": "/pgd/latest/reference/streamtriggers/interfaces#bdrcreate_conflict_trigger", + "bdrcreate_transform_trigger": "/pgd/latest/reference/streamtriggers/interfaces#bdrcreate_transform_trigger", + "bdrdrop_trigger": "/pgd/latest/reference/streamtriggers/interfaces#bdrdrop_trigger", + "bdrtrigger_get_row": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_row", + "bdrtrigger_get_committs": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_committs", + "bdrtrigger_get_xid": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_xid", + "bdrtrigger_get_type": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_type", + "bdrtrigger_get_conflict_type": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_conflict_type", + "bdrtrigger_get_origin_node_id": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_origin_node_id", + "bdrri_fkey_on_del_trigger": "/pgd/latest/reference/streamtriggers/rowfunctions#bdrri_fkey_on_del_trigger", + "tg_name": "/pgd/latest/reference/streamtriggers/rowvariables#tg_name", + "tg_when": "/pgd/latest/reference/streamtriggers/rowvariables#tg_when", + "tg_level": "/pgd/latest/reference/streamtriggers/rowvariables#tg_level", + "tg_op": "/pgd/latest/reference/streamtriggers/rowvariables#tg_op", + "tg_relid": "/pgd/latest/reference/streamtriggers/rowvariables#tg_relid", + "tg_table_name": "/pgd/latest/reference/streamtriggers/rowvariables#tg_table_name", + "tg_table_schema": "/pgd/latest/reference/streamtriggers/rowvariables#tg_table_schema", + "tg_nargs": "/pgd/latest/reference/streamtriggers/rowvariables#tg_nargs", + "tg_argv": "/pgd/latest/reference/streamtriggers/rowvariables#tg_argv", + "bdrautopartition_partitions": "/pgd/latest/reference/catalogs-internal#bdrautopartition_partitions", + "bdrautopartition_rules": "/pgd/latest/reference/catalogs-internal#bdrautopartition_rules", + "bdrddl_epoch": "/pgd/latest/reference/catalogs-internal#bdrddl_epoch", + "bdrevent_history": "/pgd/latest/reference/catalogs-internal#bdrevent_history", + "bdrevent_summary": "/pgd/latest/reference/catalogs-internal#bdrevent_summary", + "bdrnode_config": "/pgd/latest/reference/catalogs-internal#bdrnode_config", + "bdrnode_config_summary": "/pgd/latest/reference/catalogs-internal#bdrnode_config_summary", + "bdrnode_group_config": "/pgd/latest/reference/catalogs-internal#bdrnode_group_config", + "bdrnode_group_routing_config_summary": "/pgd/latest/reference/catalogs-internal#bdrnode_group_routing_config_summary", + "bdrnode_group_routing_info": "/pgd/latest/reference/catalogs-internal#bdrnode_group_routing_info", + "bdrnode_group_routing_summary": "/pgd/latest/reference/catalogs-internal#bdrnode_group_routing_summary", + "bdrnode_routing_config_summary": "/pgd/latest/reference/catalogs-internal#bdrnode_routing_config_summary", + "bdrproxy_config": "/pgd/latest/reference/catalogs-internal#bdrproxy_config", + "bdrproxy_config_summary": "/pgd/latest/reference/catalogs-internal#bdrproxy_config_summary", + "bdrsequence_kind": "/pgd/latest/reference/catalogs-internal#bdrsequence_kind", + "bdrbdr_get_commit_decisions": "/pgd/latest/reference/functions-internal#bdrbdr_get_commit_decisions", + "bdrbdr_track_commit_decision": "/pgd/latest/reference/functions-internal#bdrbdr_track_commit_decision", + "bdrconsensus_kv_fetch": "/pgd/latest/reference/functions-internal#bdrconsensus_kv_fetch", + "bdrconsensus_kv_store": "/pgd/latest/reference/functions-internal#bdrconsensus_kv_store", + "bdrdecode_message_payload": "/pgd/latest/reference/functions-internal#bdrdecode_message_payload", + "bdrdecode_message_response_payload": "/pgd/latest/reference/functions-internal#bdrdecode_message_response_payload", + "bdrdifference_fix_origin_create": "/pgd/latest/reference/functions-internal#bdrdifference_fix_origin_create", + "bdrdifference_fix_session_reset": "/pgd/latest/reference/functions-internal#bdrdifference_fix_session_reset", + "bdrdifference_fix_session_setup": "/pgd/latest/reference/functions-internal#bdrdifference_fix_session_setup", + "bdrdifference_fix_xact_set_avoid_conflict": "/pgd/latest/reference/functions-internal#bdrdifference_fix_xact_set_avoid_conflict", + "bdrdrop_node": "/pgd/latest/reference/functions-internal#bdrdrop_node", + "bdrget_global_locks": "/pgd/latest/reference/functions-internal#bdrget_global_locks", + "bdrget_node_conflict_resolvers": "/pgd/latest/reference/functions-internal#bdrget_node_conflict_resolvers", + "bdrget_slot_flush_timestamp": "/pgd/latest/reference/functions-internal#bdrget_slot_flush_timestamp", + "bdrinternal_alter_sequence_set_kind": "/pgd/latest/reference/functions-internal#bdrinternal_alter_sequence_set_kind", + "bdrinternal_replication_set_add_table": "/pgd/latest/reference/functions-internal#bdrinternal_replication_set_add_table", + "bdrinternal_replication_set_remove_table": "/pgd/latest/reference/functions-internal#bdrinternal_replication_set_remove_table", + "bdrinternal_submit_join_request": "/pgd/latest/reference/functions-internal#bdrinternal_submit_join_request", + "bdrisolation_test_session_is_blocked": "/pgd/latest/reference/functions-internal#bdrisolation_test_session_is_blocked", + "bdrlocal_node_info": "/pgd/latest/reference/functions-internal#bdrlocal_node_info", + "bdrmsgb_connect": "/pgd/latest/reference/functions-internal#bdrmsgb_connect", + "bdrmsgb_deliver_message": "/pgd/latest/reference/functions-internal#bdrmsgb_deliver_message", + "bdrnode_catchup_state_name": "/pgd/latest/reference/functions-internal#bdrnode_catchup_state_name", + "bdrnode_kind_name": "/pgd/latest/reference/functions-internal#bdrnode_kind_name", + "bdrpeer_state_name": "/pgd/latest/reference/functions-internal#bdrpeer_state_name", + "bdrpg_xact_origin": "/pgd/latest/reference/functions-internal#bdrpg_xact_origin", + "bdrrequest_replay_progress_update": "/pgd/latest/reference/functions-internal#bdrrequest_replay_progress_update", + "bdrreset_relation_stats": "/pgd/latest/reference/functions-internal#bdrreset_relation_stats", + "bdrreset_subscription_stats": "/pgd/latest/reference/functions-internal#bdrreset_subscription_stats", + "bdrresynchronize_table_from_node": "/pgd/latest/reference/functions-internal#bdrresynchronize_table_from_node", + "bdrseq_currval": "/pgd/latest/reference/functions-internal#bdrseq_currval", + "bdrseq_lastval": "/pgd/latest/reference/functions-internal#bdrseq_lastval", + "bdrseq_nextval": "/pgd/latest/reference/functions-internal#bdrseq_nextval", + "bdrshow_subscription_status": "/pgd/latest/reference/functions-internal#bdrshow_subscription_status", + "bdrshow_workers": "/pgd/latest/reference/functions-internal#bdrshow_workers", + "bdrshow_writers": "/pgd/latest/reference/functions-internal#bdrshow_writers", + "bdrtaskmgr_set_leader": "/pgd/latest/reference/functions-internal#bdrtaskmgr_set_leader", + "bdrtaskmgr_get_last_completed_workitem": "/pgd/latest/reference/functions-internal#bdrtaskmgr_get_last_completed_workitem", + "bdrtaskmgr_work_queue_check_status": "/pgd/latest/reference/functions-internal#bdrtaskmgr_work_queue_check_status", + "bdrpglogical_proto_version_ranges": "/pgd/latest/reference/functions-internal#bdrpglogical_proto_version_ranges", + "bdrget_min_required_replication_slots": "/pgd/latest/reference/functions-internal#bdrget_min_required_replication_slots", + "bdrget_min_required_worker_processes": "/pgd/latest/reference/functions-internal#bdrget_min_required_worker_processes", + "bdrstat_get_activity": "/pgd/latest/reference/functions-internal#bdrstat_get_activity", + "bdrworker_role_id_name": "/pgd/latest/reference/functions-internal#bdrworker_role_id_name", + "bdrlag_history": "/pgd/latest/reference/functions-internal#bdrlag_history", + "bdrget_raft_instance_by_nodegroup": "/pgd/latest/reference/functions-internal#bdrget_raft_instance_by_nodegroup", + "bdrmonitor_camo_on_all_nodes": "/pgd/latest/reference/functions-internal#bdrmonitor_camo_on_all_nodes", + "bdrmonitor_raft_details_on_all_nodes": "/pgd/latest/reference/functions-internal#bdrmonitor_raft_details_on_all_nodes", + "bdrmonitor_replslots_details_on_all_nodes": "/pgd/latest/reference/functions-internal#bdrmonitor_replslots_details_on_all_nodes", + "bdrmonitor_subscription_details_on_all_nodes": "/pgd/latest/reference/functions-internal#bdrmonitor_subscription_details_on_all_nodes", + "bdrmonitor_version_details_on_all_nodes": "/pgd/latest/reference/functions-internal#bdrmonitor_version_details_on_all_nodes", + "bdrnode_group_member_info": "/pgd/latest/reference/functions-internal#bdrnode_group_member_info", + "bdrcolumn_timestamps_create": "/pgd/latest/reference/clcd#bdrcolumn_timestamps_create" +>>>>>>> b676c968f5 (Removed alias designation and added explanation in Details.) } \ No newline at end of file From d592886dbfa61f850991e5a3d64e875bae409796 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> Date: Wed, 13 Nov 2024 09:56:05 +0000 Subject: [PATCH 17/35] DOCS-1109-document-himesh-bdr-wait_node_confirm_lsn (#6228) * Added bdr_config - reformatted node state table. Signed-off-by: Dj Walker-Morgan * Known issues as of 30Oct update (#6195) * Known issues as of 30Oct update Signed-off-by: Dj Walker-Morgan * small changes. --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh * Update known issues for BFILE Signed-off-by: Dj Walker-Morgan * bdr.wait_node_confirm_lsn added (and more table formatting in functions) Signed-off-by: Dj Walker-Morgan * Update product_docs/docs/pgd/5.6/reference/functions.mdx * added timout and moved privilege info Signed-off-by: Dj Walker-Morgan * Updated according to comments Signed-off-by: Dj Walker-Morgan --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh --- .../docs/pgd/5.6/reference/functions.mdx | 224 +++++++++++------- .../docs/pgd/5.6/reference/index.json | 1 + product_docs/docs/pgd/5.6/reference/index.mdx | 1 + .../pgd/5.6/security/pgd-predefined-roles.mdx | 1 + 4 files changed, 138 insertions(+), 89 deletions(-) diff --git a/product_docs/docs/pgd/5.6/reference/functions.mdx b/product_docs/docs/pgd/5.6/reference/functions.mdx index c7ff9881a58..39436fa4a49 100644 --- a/product_docs/docs/pgd/5.6/reference/functions.mdx +++ b/product_docs/docs/pgd/5.6/reference/functions.mdx @@ -268,11 +268,10 @@ group. ### `bdr.wait_slot_confirm_lsn` -Allows you to wait until the last write on this session was replayed -to one or all nodes. +Allows you to wait until the last write on this session was replayed to one or all nodes. -Waits until a slot passes a certain LSN. If no position is supplied, the -current write position is used on the local node. +Waits until a slot passes a certain LSN. +If no position is supplied, the current write position is used on the local node. If no slot name is passed, it waits until all PGD slots pass the LSN. @@ -282,17 +281,60 @@ If a slot is dropped concurrently, the wait ends for that slot. If a node is currently down and isn't updating its slot, then the wait continues. You might want to set `statement_timeout` to complete earlier in that case. +If you are using [Optimized Topology](../nodes/subscriber_only/optimizing-so), we recommend using [`bdr.wait_node_confirm_lsn`](/pgd/5.6/reference/functions#bdrwait_node_confirm_lsn) instead. +) + #### Synopsis ```sql bdr.wait_slot_confirm_lsn(slot_name text DEFAULT NULL, target_lsn pg_lsn DEFAULT NULL) ``` +#### Notes + +Requires `bdr_application` privileges to use. + +#### Parameters + +| Parameter | Description | +|--------------|-----------------------------------------------------------------------------| +| `slot_name` | Name of the replication slot to wait for. If NULL, waits for all PGD slots. | +| `target_lsn` | LSN to wait for. If NULL, uses the current write LSN on the local node. | + +### `bdr.wait_node_confirm_lsn` + +Wait until a node passes a certain LSN. + +This function allows you to wait until the last write on this session was replayed to one or all nodes. + +Upon being called, the function waits for a node to pass a certain LSN. +If no LSN is supplied, the current wal_flush_lsn (using the `pg_current_wal_flush_lsn()` function) position is used on the local node. +Supplying a node name parameter tells the function to wait for that node to pass the LSN. +If no node name is supplied (by passing NULL), the function waits until all the nodes pass the LSN, + +We recommend using this function if you are using [Optimized Topology](../nodes/subscriber_only/optimizing-so) instead of [`bdr.wait_slot_confirm_lsn`](/pgd/5.6/reference/functions#bdrwait_slot_confirm_lsn). + +This is because in an Optimized Topology, not all nodes have replication slots, so the function `bdr.wait_slot_confirm_lsn` might not work as expected. `bdr.wait_node_confirm_lsn` is designed to work with nodes that don't have replication slots, using alternative straegies to determine the progress of a node. + +If a node is currently down, isn't updating or is simply not able to be connected to, the wait will continue indefinately. To avoid this, set the statement_timeout to the maximum amount of time you are prepared to wait. + +#### Synopsis + +```sql +bdr.wait_node_confirm_lsn(node_name text DEFAULT NULL, target_lsn pg_lsn DEFAULT NULL) +``` + #### Parameters -- `slot_name` — Name of replication slot or, if NULL, all PGD slots (only). -- `target_lsn` — LSN to wait for or, if NULL, use the current write LSN on the - local node. +| Parameter | Description | +|--------------|-----------------------------------------------------------------------------| +| `node_name` | Name of the node to wait for. If NULL, waits for all nodes. | +| `target_lsn` | LSN to wait for. If NULL, uses the current wal_flush_lsn on the local node. | + +#### Notes + +Requires `bdr_superuser` privileges to use. + ### `bdr.wait_for_apply_queue` @@ -327,12 +369,10 @@ bdr.wait_for_apply_queue(peer_node_name TEXT, target_lsn pg_lsn) #### Parameters -- `peer_node_name` — The name of the peer node from which incoming - transactions are expected to be queued and to wait - for. If NULL, waits for all peer node's apply queue to be consumed. -- `target_lsn` — The LSN in the replication stream from the peer node - to wait for, usually learned by way of `bdr.last_committed_lsn` from the - peer node. +| Parameter | Description | +| --------- | ----------- | +| `peer_node_name` | The name of the peer node from which incoming transactions are expected to be queued and to wait for. If NULL, waits for all peer node's apply queue to be consumed. | +| `target_lsn` | The LSN in the replication stream from the peer node to wait for, usually learned by way of `bdr.last_committed_lsn` from the peer node. | ### `bdr.get_node_sub_receive_lsn` @@ -352,12 +392,10 @@ bdr.get_node_sub_receive_lsn(node_name name, committed bool default true) #### Parameters -- `node_name` — The name of the node that's the source of the - replication stream whose LSN is being retrieved. -- `committed` —; The default (true) makes this function take into - account only commits of transactions received rather than the last - LSN overall. This includes actions that have no effect on the subscriber - node. +| Parameter | Description | +| --------- | ----------- | +| `node_name` | The name of the node that's the source of the replication stream whose LSN is being retrieved. | +| `committed` | The default (true) makes this function take into account only commits of transactions received rather than the last LSN overall. This includes actions that have no effect on the subscriber node. | ### `bdr.get_node_sub_apply_lsn` @@ -372,8 +410,9 @@ bdr.get_node_sub_apply_lsn(node_name name) #### Parameters -- `node_name` — the name of the node that's the source of the - replication stream whose LSN is being retrieved. +| Parameter | Description | +| --------- | ----------- | +| `node_name` | The name of the node that's the source of the replication stream whose LSN is being retrieved. | ### `bdr.replicate_ddl_command` @@ -390,10 +429,12 @@ bdr.replicate_ddl_command(ddl_cmd text, #### Parameters -- `ddl_cmd` — DDL command to execute. -- `replication_sets` — An array of replication set names to apply the `ddlcommand` to. If NULL (or the function is only passed the `ddlcommand`), this is set to the active PGD groups's default replication set. -- `ddl_locking` — A string that sets the [`bdr.ddl_locking`](/pgd/latest/reference/pgd-settings#bdrddl_locking) value while replicating. Defaults to the GUC value for `bdr.ddl_locking` on the local system that's running `replicate_ddl_command`. -- `execute_locally` — A Boolean that determines whether the DDL command executes locally. Defaults to true. +| Parameter | Description | +| --------- | ----------- | +| `ddl_cmd` | DDL command to execute. | +| `replication_sets` | An array of replication set names to apply the `ddlcommand` to. If NULL (or the function is only passed the `ddlcommand`), this is set to the active PGD groups's default replication set. | +| `ddl_locking` | A string that sets the [`bdr.ddl_locking`](/pgd/latest/reference/pgd-settings#bdrddl_locking) value while replicating. Defaults to the GUC value for `bdr.ddl_locking` on the local system that's running `replicate_ddl_command`. | +| `execute_locally` | A Boolean that determines whether the DDL command executes locally. Defaults to true. | #### Notes @@ -418,7 +459,9 @@ bdr.run_on_all_nodes(query text) #### Parameters -- `query` — Arbitrary query to execute. +| Parameter | Description | +|-----------|-----------------------------| +| `query` | Arbitrary query to execute. | #### Notes @@ -508,8 +551,10 @@ bdr.run_on_nodes(node_names text[], query text) #### Parameters -- `node_names` — Text ARRAY of node names where query is executed. -- `query` — Arbitrary query to execute. +| Parameter | Description | +|--------------|-------------------------------------------------------| +| `node_names` | Text ARRAY of node names where the query is executed. | +| `query` | Arbitrary query to execute. | #### Notes @@ -547,8 +592,10 @@ bdr.run_on_group(node_group_name text, query text) #### Parameters -- `node_group_name` — Name of node group where query is executed. -- `query` — Arbitrary query to execute. +| Parameter | Description | +|-----------|-------------------------------------------------------| +| `node_group_name` | Name of the node group where the query is executed. | +| `query` | Arbitrary query to execute. | #### Notes @@ -583,7 +630,9 @@ bdr.global_lock_table(relation regclass) #### Parameters -- `relation` — Name or oid of the relation to lock. +| Parameter | Description | +|------------|--------------------------------------| +| `relation` | Name or oid of the relation to lock. | #### Notes @@ -610,13 +659,11 @@ bdr.wait_for_xid_progress(origin_node_id oid, origin_topxid int4, allnodes boole #### Parameters -- `origin_node_id` — Node id of the node where the transaction - originated. - -- `origin_topxid` — XID of the transaction. - -- `allnodes` — If `true` then wait for the transaction to progress on - all nodes. Otherwise wait only for the current node. +| Parameter | Description | +|------------------|----------------------------------------------------------------------------------------------------------| +| `origin_node_id` | Node id of the node where the transaction originated. | +| `origin_topxid` | XID of the transaction. | +| `allnodes` | If `true`, wait for the transaction to progress on all nodes. Otherwise, wait only for the current node. | #### Notes @@ -671,8 +718,10 @@ bdr.alter_node_kind(node_name text, #### Parameters -- `node_name` — Name of the node to change kind. -- `node_kind` — Kind of the node, which can be one of: `data`, `standby`, `witness`, or `subscriber-only`. +| Parameter | Description | +|------------|--------------------------------------| +| `node_name` | Name of the node to change kind. | +| `node_kind` | Kind of the node. | ### `bdr.alter_subscription_skip_changes_upto` @@ -829,8 +878,10 @@ bdr.global_advisory_lock(key1 integer, key2 integer) #### Parameters -- `key1` — First part of the composite key. -- `key2` — second part of the composite key. +| Parameter | Description | +|-----------|-------------| +| `key1` | First part of the composite key. | +| `key2` | Second part of the composite key. | ### `bdr.global_advisory_unlock` @@ -846,7 +897,10 @@ bdr.global_advisory_unlock(key bigint) #### Parameters -- `key` — The object on which an advisory lock is acquired. +| Parameter | Description | +|-----------|---------------------------------------------------| +| `key` | The object on which an advisory lock is acquired. | + #### Synopsis @@ -856,8 +910,10 @@ bdr.global_advisory_unlock(key1 integer, key2 integer) #### Parameters -- `key1` — First part of the composite key. -- `key2` — Second part of the composite key. +| Parameter | Description | +|-----------|-----------------------------------| +| `key1` | First part of the composite key. | +| `key2` | Second part of the composite key. | ## Monitoring functions @@ -894,8 +950,9 @@ bdr.monitor_group_raft() #### Parameters -- `node_group_name` — The node group name to check. - +| Parameter | Description | +|-------------------|-------------------------------| +| `node_group_name` | The node group name to check. | #### Notes @@ -947,13 +1004,12 @@ bdr.wal_sender_stats() #### Output columns -- `pid` — PID of the WAL sender (corresponds to the `pid` column of `pg_stat_replication`). - -- `is_using_lcr` — Whether the WAL sender is sending LCR files. The next columns are `NULL` if `is_using_lcr` is `FALSE`. - -- `decoder_slot_name` — The name of the decoder replication slot. - -- `lcr_file_name` — The name of the current LCR file. +| Column name | Description | +|---------------------|-------------------------------------------------------------------------------------| +| `pid` | PID of the WAL sender. (corresponds to the `pid` column of `pg_stat_replication`). | +| `is_using_lcr` | Whether the WAL sender is sending LCR files. | +| `decoder_slot_name` | Name of the decoder replication slot. | +| `lcr_file_name` | Name of the current LCR file. | ### `bdr.get_decoding_worker_stat` @@ -971,13 +1027,12 @@ bdr.get_decoding_worker_stat() #### Output columns -- `pid` — The PID of the decoding worker (corresponds to the column `active_pid` in `pg_replication_slots`). - -- `decoded_upto_lsn` — LSN up to which the decoding worker read transactional logs. - -- `waiting` — Whether the decoding worker is waiting for new WAL. - -- `waiting_for_lsn` — The LSN of the next expected WAL. +| Column name | Description | +|-------------|-------------| +| `pid` | The PID of the decoding worker (corresponds to the column `active_pid` in `pg_replication_slots`). | +| `decoded_upto_lsn` | LSN up to which the decoding worker read transactional logs. | +| `waiting` | Whether the decoding worker is waiting for new WAL. | +| `waiting_for_lsn` | The LSN of the next expected WAL. | #### Notes @@ -997,32 +1052,21 @@ bdr.lag_control() #### Output columns -- `commit_scope_id` — OID of the commit scope (see [`bdr.commit_scopes`](/pgd/latest/reference/catalogs-visible#bdrcommit_scopes))). - -- `sessions` — Number of sessions referencing the lag control entry. - -- `current_commit_delay` — Current runtime commit delay, in fractional milliseconds. - -- `maximum_commit_delay` — Configured maximum commit delay, in fractional milliseconds. - -- `commit_delay_adjust` — Change to runtime commit delay possible during - a sample interval, in fractional milliseconds. - -- `curent_conforming_nodes` — Current runtime number of nodes conforming to lag measures. - -- `minimum_conforming_nodes` — Configured minimum number of nodes required to - conform to lag measures, below which a commit delay adjustment is applied. - -- `lag_bytes_threshold` — Lag size at which a commit delay is applied, in kilobytes. - -- `maximum_lag_bytes` — Configured maximum lag size, in kilobytes. - -- `lag_time_threshold` — Lag time at which a commit delay is applied, in milliseconds. - -- `maximum_lag_time` — Configured maximum lag time, in milliseconds. +| Column name | Description | +|----------------------------|---------------------------------------------------------------------------------------------------------------------------| +| `commit_scope_id` | OID of the commit scope (see [`bdr.commit_scopes`](/pgd/latest/reference/catalogs-visible#bdrcommit_scopes)). | +| `sessions` | Number of sessions referencing the lag control entry. | +| `current_commit_delay` | Current runtime commit delay, in fractional milliseconds. | +| `maximum_commit_delay` | Configured maximum commit delay, in fractional milliseconds. | +| `commit_delay_adjust` | Change to runtime commit delay possible during a sample interval, in fractional milliseconds. | +| `current_conforming_nodes` | Current runtime number of nodes conforming to lag measures. | +| `minimum_conforming_nodes` | Configured minimum number of nodes required to conform to lag measures, below which a commit delay adjustment is applied. | +| `lag_bytes_threshold` | Lag size at which a commit delay is applied, in kilobytes. | +| `maximum_lag_bytes` | Configured maximum lag size, in kilobytes. | +| `lag_time_threshold` | Lag time at which a commit delay is applied, in milliseconds. | +| `maximum_lag_time` | Configured maximum lag time, in milliseconds. | +| `sample_interval` | Configured minimum time between lag samples and possible commit delay adjustments, in milliseconds. | -- `sample_interval` — Configured minimum time between lag samples and possible - commit delay adjustments, in milliseconds. ## CAMO functions @@ -1103,9 +1147,11 @@ bdr.logical_transaction_status(node_id OID, xid OID, #### Parameters -- `node_id` — The node id of the PGD node the transaction originates from, usually retrieved by the client before `COMMIT` from the [PQ parameter](https://www.postgresql.org/docs/current/libpq-status.html#LIBPQ-PQPARAMETERSTATUS) `bdr.local_node_id`. -- `xid` — The transaction id on the origin node, usually retrieved by the client before `COMMIT` from the [PQ parameter](https://www.postgresql.org/docs/current/libpq-status.html#LIBPQ-PQPARAMETERSTATUS) `transaction_id`. -- `require_camo_partner` — Defaults to true and enables configuration checks. Set to false to disable these checks and query the status of a transaction that wasn't a CAMO transaction. +| Parameter | Description | +|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `node_id` | The node id of the PGD node the transaction originates from, usually retrieved by the client before `COMMIT` from the [PQ parameter](https://www.postgresql.org/docs/current/libpq-status.html#LIBPQ-PQPARAMETERSTATUS) `bdr.local_node_id`. | +| `xid` | The transaction id on the origin node, usually retrieved by the client before `COMMIT` from the [PQ parameter](https://www.postgresql.org/docs/current/libpq-status.html#LIBPQ-PQPARAMETERSTATUS) `transaction_id`. | +| `require_camo_partner` | Defaults to true and enables configuration checks. Set to false to disable these checks and query the status of a transaction that wasn't a CAMO transaction. | #### Return value diff --git a/product_docs/docs/pgd/5.6/reference/index.json b/product_docs/docs/pgd/5.6/reference/index.json index e50fc64ec2b..172600ecabf 100644 --- a/product_docs/docs/pgd/5.6/reference/index.json +++ b/product_docs/docs/pgd/5.6/reference/index.json @@ -87,6 +87,7 @@ "bdrget_raft_status": "/pgd/5.6/reference/functions#bdrget_raft_status", "bdrraft_leadership_transfer": "/pgd/5.6/reference/functions#bdrraft_leadership_transfer", "bdrwait_slot_confirm_lsn": "/pgd/5.6/reference/functions#bdrwait_slot_confirm_lsn", + "bdrwait_node_confirm_lsn": "/pgd/5.6/reference/functions#bdrwait_node_confirm_lsn", "bdrwait_for_apply_queue": "/pgd/5.6/reference/functions#bdrwait_for_apply_queue", "bdrget_node_sub_receive_lsn": "/pgd/5.6/reference/functions#bdrget_node_sub_receive_lsn", "bdrget_node_sub_apply_lsn": "/pgd/5.6/reference/functions#bdrget_node_sub_apply_lsn", diff --git a/product_docs/docs/pgd/5.6/reference/index.mdx b/product_docs/docs/pgd/5.6/reference/index.mdx index 9b3c24cc942..72977f33312 100644 --- a/product_docs/docs/pgd/5.6/reference/index.mdx +++ b/product_docs/docs/pgd/5.6/reference/index.mdx @@ -130,6 +130,7 @@ The reference section is a definitive listing of all functions, views, and comma * [`bdr.raft_leadership_transfer`](functions#bdrraft_leadership_transfer) ### [Utility functions](functions#utility-functions) * [`bdr.wait_slot_confirm_lsn`](functions#bdrwait_slot_confirm_lsn) + * [`bdr.wait_node_confirm_lsn`](functions#bdrwait_node_confirm_lsn) * [`bdr.wait_for_apply_queue`](functions#bdrwait_for_apply_queue) * [`bdr.get_node_sub_receive_lsn`](functions#bdrget_node_sub_receive_lsn) * [`bdr.get_node_sub_apply_lsn`](functions#bdrget_node_sub_apply_lsn) diff --git a/product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx b/product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx index 5e735aa2107..8f537d96032 100644 --- a/product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx +++ b/product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx @@ -16,6 +16,7 @@ This is a role for an admin user that can manage anything PGD related. It allows - ALL PRIVILEGES ON ALL TABLES IN SCHEMA BDR - ALL PRIVILEGES ON ALL ROUTINES IN SCHEMA BDR + ### bdr_read_all_stats This role provides read access to most of the tables, views, and functions that users or applications may need to observe the statistics and state of the PGD cluster. From 0c7b990212fd0de8f94d16ae37ba2b733977fb71 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Wed, 13 Nov 2024 14:01:41 +0000 Subject: [PATCH 18/35] Add bdr.wait_node_confirm_lsn to the bdr_application permissions Signed-off-by: Dj Walker-Morgan --- product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx b/product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx index 8f537d96032..97e74fae2a0 100644 --- a/product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx +++ b/product_docs/docs/pgd/5.6/security/pgd-predefined-roles.mdx @@ -151,6 +151,7 @@ This role is designed for applications that require access to PGD features, obje - [`bdr.trigger_get_xid`](/pgd/latest/reference/streamtriggers/rowfunctions#bdrtrigger_get_xid) - [`bdr.wait_for_camo_partner_queue`](/pgd/latest/reference/functions#bdrwait_for_camo_partner_queue) - [`bdr.wait_slot_confirm_lsn`](/pgd/latest/reference/functions#bdrwait_slot_confirm_lsn) +- [`bdr.wait_node_confirm_lsn`](/pgd/latest/reference/functions#bdrwait_node_confirm_lsn) Many of these functions require additional privileges before you can use them. For example, you must be the table owner to successfully execute From dda7330ff4d9c8532cb6e1a95ac02a69efdfced4 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> Date: Wed, 13 Nov 2024 15:54:07 +0000 Subject: [PATCH 19/35] DOCS-1084 pgd postgres 17 support (and DOCS- (#6215) * Known issues as of 30Oct update (#6195) * Known issues as of 30Oct update Signed-off-by: Dj Walker-Morgan * small changes. --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh * Added description to decoding worker. Signed-off-by: Dj Walker-Morgan * Updated compatibility info and presentation Signed-off-by: Dj Walker-Morgan * Include RHEL 9 Signed-off-by: Dj Walker-Morgan * Fix heading Signed-off-by: Dj Walker-Morgan * typo fix Signed-off-by: Dj Walker-Morgan * Add arm caveats for rhel 9 on arm64 Signed-off-by: Dj Walker-Morgan * Added bdr_config - reformatted node state table. Signed-off-by: Dj Walker-Morgan * Known issues as of 30Oct update (#6195) * Known issues as of 30Oct update Signed-off-by: Dj Walker-Morgan * small changes. --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh * Update known issues for BFILE Signed-off-by: Dj Walker-Morgan --------- Signed-off-by: Dj Walker-Morgan Co-authored-by: Josh Earlenbaugh --- product_docs/docs/pgd/5.6/compatibility.mdx | 57 +++++++++++++++---- product_docs/docs/pgd/5.6/decoding_worker.mdx | 1 + product_docs/docs/pgd/5.6/index.mdx | 16 +----- 3 files changed, 50 insertions(+), 24 deletions(-) diff --git a/product_docs/docs/pgd/5.6/compatibility.mdx b/product_docs/docs/pgd/5.6/compatibility.mdx index 4ac0332e6ad..d7812a703e9 100644 --- a/product_docs/docs/pgd/5.6/compatibility.mdx +++ b/product_docs/docs/pgd/5.6/compatibility.mdx @@ -1,20 +1,55 @@ --- -title: PGD compatibility by PostgreSQL version +title: PGD compatibility navTitle: Compatibility description: Compatibility of EDB Postgres Distributed with different versions of PostgreSQL +deepToC: true --- -The following table shows the major versions of PostgreSQL and each version of EDB Postgres Distributed (PGD) they are compatible with. +## PGD compatibility with PostgreSQL versions -| Postgres
Version | PGD 5 | PGD 4 | PGD 3.7 | PGD 3.6 | -|----------------------|--------------|--------------|------------------|------------------| -| 16 | [5.3+](/pgd/latest/) | | | | -| 15 | [5](/pgd/latest/) | | | | -| 14 | [5](/pgd/latest/) | [4](/pgd/4/) | | | -| 13 | [5](/pgd/latest/) | [4](/pgd/4/) | [3.7](/pgd/3.7/) | | -| 12 | [5](/pgd/latest/) | [4](/pgd/4/) | [3.7](/pgd/3.7/) | | -| 11 | | | [3.7](/pgd/3.7/) | [3.6](/pgd/3.6/) | -| 10 | | | | [3.6](/pgd/3.6/) | +The following table shows the major versions of PostgreSQL and each version of EDB Postgres Distributed (PGD) they are compatible with. +| Postgres Version | PGD 5 | PGD 4 | +|----------------------|------------------------|--------------| +| 17 | [5.6.1+](/pgd/latest/) | | +| 16 | [5.3+](/pgd/latest/) | | +| 15 | [5](/pgd/latest/) | | +| 14 | [5](/pgd/latest/) | [4](/pgd/4/) | +| 13 | [5](/pgd/latest/) | [4](/pgd/4/) | +| 12 | [5](/pgd/latest/) | [4](/pgd/4/) | + +## PGD compatibility with operating systems and architectures + +The following tables show the versions of EDB Postgres Distributed and their compatibility with various operating systems and architectures. + +### Linux x86_64 (amd64) + +| Operating System | PGD 5 | PGD 4 | +|------------------------------------|-------|-------| +| RHEL 8/9 | Yes | Yes | +| Oracle Linux 8/9 | Yes | Yes | +| Rocky Linux/AlmaLinux | Yes | Yes | +| SUSE Linux Enterprise Server 15SP5 | Yes | Yes | +| Ubuntu 20.04/22.04/24.04 | Yes | Yes | +| Debian 11/12 | Yes | Yes | + +### Linux ppc64le + +| Operating System | PGD 5 | PGD 4 | +|------------------|-------|-------| +| RHEL 8/9 | Yes | No | + + +### Linux arm64/aarch64 + +| Operating System | PGD 5¹ | PGD 4 | +|------------------|-------|-------| +| Debian 12 | Yes | No | +| RHEL 9² | Yes | No | + +¹ From PGD 5.6.1 onwards + +² Postgres 12 is not supported on RHEL 9 on arm64/aarch64 + diff --git a/product_docs/docs/pgd/5.6/decoding_worker.mdx b/product_docs/docs/pgd/5.6/decoding_worker.mdx index fa7343354a8..65f934e5972 100644 --- a/product_docs/docs/pgd/5.6/decoding_worker.mdx +++ b/product_docs/docs/pgd/5.6/decoding_worker.mdx @@ -1,5 +1,6 @@ --- title: Decoding worker +description: Decoding worker in PGD reduces CPU overhead and increases replication throughput by enabling a optimized decoding worker process. --- PGD provides an option to enable a decoding worker process that performs diff --git a/product_docs/docs/pgd/5.6/index.mdx b/product_docs/docs/pgd/5.6/index.mdx index 5c3d524b39b..63d4b6b1c99 100644 --- a/product_docs/docs/pgd/5.6/index.mdx +++ b/product_docs/docs/pgd/5.6/index.mdx @@ -8,6 +8,7 @@ redirects: navigation: - rel_notes - known_issues + - compatibility - "#Concepts" - terminology - overview @@ -45,7 +46,6 @@ navigation: - tssnapshots - "#Reference" - reference - - compatibility --- @@ -74,17 +74,7 @@ the peer nodes only after the local commit. You can configure additional levels ## Compatibility -EDB Postgres Distributed 5 is compatible with the package versions shown in the table. - - Package | Versions --------- | ------------ -Community PostgreSQL | 12-16 -EDB Postgres Extended Server | 12-16 -EDB Postgres Advanced Server | 12-16 - -!!! Note Postgres 16 support -Postgres 16 support is available only in EDB Postgres Distributed 5.3 and later. -!!! - +EDB Postgres Distributed 5 is compatible with PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced versions 12-17. See the [compatibility](compatibility) section for more details, including compatibility with different operating systems and architectures. For feature compatibility with compatible servers, see [Choosing a Postgres distribution](planning/choosing_server). +--- From 15ec610656f8f59eb2a93b00050165ccf1ebd50f Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> Date: Thu, 14 Nov 2024 09:17:33 +0000 Subject: [PATCH 20/35] Fixed up unresolved conflicy --- product_docs/docs/pgd/5/reference/index.json | 354 +------------------ 1 file changed, 1 insertion(+), 353 deletions(-) diff --git a/product_docs/docs/pgd/5/reference/index.json b/product_docs/docs/pgd/5/reference/index.json index f88be0ce9be..7fce149a51b 100644 --- a/product_docs/docs/pgd/5/reference/index.json +++ b/product_docs/docs/pgd/5/reference/index.json @@ -1,355 +1,4 @@ { -<<<<<<< HEAD - "bdrcamo_decision_journal": "/pgd/5/reference/catalogs-visible#bdrcamo_decision_journal", - "bdrcommit_scopes": "/pgd/5/reference/catalogs-visible#bdrcommit_scopes", - "bdrconflict_history": "/pgd/5/reference/catalogs-visible#bdrconflict_history", - "bdrconflict_history_summary": "/pgd/5/reference/catalogs-visible#bdrconflict_history_summary", - "bdrconsensus_kv_data": "/pgd/5/reference/catalogs-visible#bdrconsensus_kv_data", - "bdrcrdt_handlers": "/pgd/5/reference/catalogs-visible#bdrcrdt_handlers", - "bdrddl_replication": "/pgd/5/reference/pgd-settings#bdrddl_replication", - "bdrdepend": "/pgd/5/reference/catalogs-visible#bdrdepend", - "bdrglobal_consensus_journal": "/pgd/5/reference/catalogs-visible#bdrglobal_consensus_journal", - "bdrglobal_consensus_journal_details": "/pgd/5/reference/catalogs-visible#bdrglobal_consensus_journal_details", - "bdrglobal_consensus_response_journal": "/pgd/5/reference/catalogs-visible#bdrglobal_consensus_response_journal", - "bdrglobal_lock": "/pgd/5/reference/catalogs-visible#bdrglobal_lock", - "bdrglobal_locks": "/pgd/5/reference/catalogs-visible#bdrglobal_locks", - "bdrgroup_camo_details": "/pgd/5/reference/catalogs-visible#bdrgroup_camo_details", - "bdrgroup_raft_details": "/pgd/5/reference/catalogs-visible#bdrgroup_raft_details", - "bdrgroup_replslots_details": "/pgd/5/reference/catalogs-visible#bdrgroup_replslots_details", - "bdrgroup_subscription_summary": "/pgd/5/reference/catalogs-visible#bdrgroup_subscription_summary", - "bdrgroup_versions_details": "/pgd/5/reference/catalogs-visible#bdrgroup_versions_details", - "bdrlocal_consensus_snapshot": "/pgd/5/reference/catalogs-visible#bdrlocal_consensus_snapshot", - "bdrlocal_consensus_state": "/pgd/5/reference/catalogs-visible#bdrlocal_consensus_state", - "bdrlocal_node": "/pgd/5/reference/catalogs-visible#bdrlocal_node", - "bdrlocal_node_summary": "/pgd/5/reference/catalogs-visible#bdrlocal_node_summary", - "bdrlocal_sync_status": "/pgd/5/reference/catalogs-visible#bdrlocal_sync_status", - "bdrnode": "/pgd/5/reference/catalogs-visible#bdrnode", - "bdrnode_catchup_info": "/pgd/5/reference/catalogs-visible#bdrnode_catchup_info", - "bdrnode_catchup_info_details": "/pgd/5/reference/catalogs-visible#bdrnode_catchup_info_details", - "bdrnode_conflict_resolvers": "/pgd/5/reference/catalogs-visible#bdrnode_conflict_resolvers", - "bdrnode_group": "/pgd/5/reference/catalogs-visible#bdrnode_group", - "bdrnode_group_replication_sets": "/pgd/5/reference/catalogs-visible#bdrnode_group_replication_sets", - "bdrnode_group_summary": "/pgd/5/reference/catalogs-visible#bdrnode_group_summary", - "bdrnode_local_info": "/pgd/5/reference/catalogs-visible#bdrnode_local_info", - "bdrnode_log_config": "/pgd/5/reference/catalogs-visible#bdrnode_log_config", - "bdrnode_peer_progress": "/pgd/5/reference/catalogs-visible#bdrnode_peer_progress", - "bdrnode_replication_rates": "/pgd/5/reference/catalogs-visible#bdrnode_replication_rates", - "bdrnode_slots": "/pgd/5/reference/catalogs-visible#bdrnode_slots", - "bdrnode_summary": "/pgd/5/reference/catalogs-visible#bdrnode_summary", - "bdrqueue": "/pgd/5/reference/catalogs-visible#bdrqueue", - "bdrreplication_set": "/pgd/5/reference/catalogs-visible#bdrreplication_set", - "bdrreplication_set_table": "/pgd/5/reference/catalogs-visible#bdrreplication_set_table", - "bdrreplication_set_ddl": "/pgd/5/reference/catalogs-visible#bdrreplication_set_ddl", - "bdrreplication_sets": "/pgd/5/reference/catalogs-visible#bdrreplication_sets", - "bdrschema_changes": "/pgd/5/reference/catalogs-visible#bdrschema_changes", - "bdrsequence_alloc": "/pgd/5/reference/catalogs-visible#bdrsequence_alloc", - "bdrsequences": "/pgd/5/reference/catalogs-visible#bdrsequences", - "bdrstat_activity": "/pgd/5/reference/catalogs-visible#bdrstat_activity", - "bdrstat_relation": "/pgd/5/reference/catalogs-visible#bdrstat_relation", - "bdrstat_subscription": "/pgd/5/reference/catalogs-visible#bdrstat_subscription", - "bdrsubscription": "/pgd/5/reference/catalogs-visible#bdrsubscription", - "bdrsubscription_summary": "/pgd/5/reference/catalogs-visible#bdrsubscription_summary", - "bdrtables": "/pgd/5/reference/catalogs-visible#bdrtables", - "bdrtaskmgr_work_queue": "/pgd/5/reference/catalogs-visible#bdrtaskmgr_work_queue", - "bdrtaskmgr_workitem_status": "/pgd/5/reference/catalogs-visible#bdrtaskmgr_workitem_status", - "bdrtaskmgr_local_work_queue": "/pgd/5/reference/catalogs-visible#bdrtaskmgr_local_work_queue", - "bdrtaskmgr_local_workitem_status": "/pgd/5/reference/catalogs-visible#bdrtaskmgr_local_workitem_status", - "bdrtrigger": "/pgd/5/reference/catalogs-visible#bdrtrigger", - "bdrtriggers": "/pgd/5/reference/catalogs-visible#bdrtriggers", - "bdrworkers": "/pgd/5/reference/catalogs-visible#bdrworkers", - "bdrwriters": "/pgd/5/reference/catalogs-visible#bdrwriters", - "bdrworker_tasks": "/pgd/5/reference/catalogs-visible#bdrworker_tasks", - "bdrbdr_version": "/pgd/5/reference/functions#bdrbdr_version", - "bdrbdr_version_num": "/pgd/5/reference/functions#bdrbdr_version_num", - "bdrget_relation_stats": "/pgd/5/reference/functions#bdrget_relation_stats", - "bdrget_subscription_stats": "/pgd/5/reference/functions#bdrget_subscription_stats", - "bdrlocal_node_id": "/pgd/5/reference/functions#bdrlocal_node_id", - "bdrlast_committed_lsn": "/pgd/5/reference/functions#bdrlast_committed_lsn", - "transaction_id": "/pgd/5/reference/functions#transaction_id", - "bdris_node_connected": "/pgd/5/reference/functions#bdris_node_connected", - "bdris_node_ready": "/pgd/5/reference/functions#bdris_node_ready", - "bdrconsensus_disable": "/pgd/5/reference/functions#bdrconsensus_disable", - "bdrconsensus_enable": "/pgd/5/reference/functions#bdrconsensus_enable", - "bdrconsensus_proto_version": "/pgd/5/reference/functions#bdrconsensus_proto_version", - "bdrconsensus_snapshot_export": "/pgd/5/reference/functions#bdrconsensus_snapshot_export", - "bdrconsensus_snapshot_import": "/pgd/5/reference/functions#bdrconsensus_snapshot_import", - "bdrconsensus_snapshot_verify": "/pgd/5/reference/functions#bdrconsensus_snapshot_verify", - "bdrget_consensus_status": "/pgd/5/reference/functions#bdrget_consensus_status", - "bdrget_raft_status": "/pgd/5/reference/functions#bdrget_raft_status", - "bdrraft_leadership_transfer": "/pgd/5/reference/functions#bdrraft_leadership_transfer", - "bdrwait_slot_confirm_lsn": "/pgd/5/reference/functions#bdrwait_slot_confirm_lsn", - "bdrwait_for_apply_queue": "/pgd/5/reference/functions#bdrwait_for_apply_queue", - "bdrget_node_sub_receive_lsn": "/pgd/5/reference/functions#bdrget_node_sub_receive_lsn", - "bdrget_node_sub_apply_lsn": "/pgd/5/reference/functions#bdrget_node_sub_apply_lsn", - "bdrreplicate_ddl_command": "/pgd/5/reference/functions#bdrreplicate_ddl_command", - "bdrrun_on_all_nodes": "/pgd/5/reference/functions#bdrrun_on_all_nodes", - "bdrrun_on_nodes": "/pgd/5/reference/functions#bdrrun_on_nodes", - "bdrrun_on_group": "/pgd/5/reference/functions#bdrrun_on_group", - "bdrglobal_lock_table": "/pgd/5/reference/functions#bdrglobal_lock_table", - "bdrwait_for_xid_progress": "/pgd/5/reference/functions#bdrwait_for_xid_progress", - "bdrlocal_group_slot_name": "/pgd/5/reference/functions#bdrlocal_group_slot_name", - "bdrnode_group_type": "/pgd/5/reference/functions#bdrnode_group_type", - "bdralter_node_kind": "/pgd/5/reference/functions#bdralter_node_kind", - "bdralter_subscription_skip_changes_upto": "/pgd/5/reference/functions#bdralter_subscription_skip_changes_upto", - "bdrglobal_advisory_lock": "/pgd/5/reference/functions#bdrglobal_advisory_lock", - "bdrglobal_advisory_unlock": "/pgd/5/reference/functions#bdrglobal_advisory_unlock", - "bdrmonitor_group_versions": "/pgd/5/reference/functions#bdrmonitor_group_versions", - "bdrmonitor_group_raft": "/pgd/5/reference/functions#bdrmonitor_group_raft", - "bdrmonitor_local_replslots": "/pgd/5/reference/functions#bdrmonitor_local_replslots", - "bdrwal_sender_stats": "/pgd/5/reference/functions#bdrwal_sender_stats", - "bdrget_decoding_worker_stat": "/pgd/5/reference/functions#bdrget_decoding_worker_stat", - "bdrlag_control": "/pgd/5/reference/functions#bdrlag_control", - "bdris_camo_partner_connected": "/pgd/5/reference/functions#bdris_camo_partner_connected", - "bdris_camo_partner_ready": "/pgd/5/reference/functions#bdris_camo_partner_ready", - "bdrget_configured_camo_partner": "/pgd/5/reference/functions#bdrget_configured_camo_partner", - "bdrwait_for_camo_partner_queue": "/pgd/5/reference/functions#bdrwait_for_camo_partner_queue", - "bdrcamo_transactions_resolved": "/pgd/5/reference/functions#bdrcamo_transactions_resolved", - "bdrlogical_transaction_status": "/pgd/5/reference/functions#bdrlogical_transaction_status", - "bdradd_commit_scope": "/pgd/5/reference/functions#bdradd_commit_scope", - "bdralter_commit_scope": "/pgd/5/reference/functions#bdralter_commit_scope", - "bdrremove_commit_scope": "/pgd/5/reference/functions#bdrremove_commit_scope", - "bdrdefault_conflict_detection": "/pgd/5/reference/pgd-settings#bdrdefault_conflict_detection", - "bdrdefault_sequence_kind": "/pgd/5/reference/pgd-settings#bdrdefault_sequence_kind", - "bdrdefault_replica_identity": "/pgd/5/reference/pgd-settings#bdrdefault_replica_identity", - "bdrrole_replication": "/pgd/5/reference/pgd-settings#bdrrole_replication", - "bdrddl_locking": "/pgd/5/reference/pgd-settings#bdrddl_locking", - "bdrtruncate_locking": "/pgd/5/reference/pgd-settings#bdrtruncate_locking", - "bdrglobal_lock_max_locks": "/pgd/5/reference/pgd-settings#bdrglobal_lock_max_locks", - "bdrglobal_lock_timeout": "/pgd/5/reference/pgd-settings#bdrglobal_lock_timeout", - "bdrglobal_lock_statement_timeout": "/pgd/5/reference/pgd-settings#bdrglobal_lock_statement_timeout", - "bdrglobal_lock_idle_timeout": "/pgd/5/reference/pgd-settings#bdrglobal_lock_idle_timeout", - "bdrlock_table_locking": "/pgd/5/reference/pgd-settings#bdrlock_table_locking", - "bdrpredictive_checks": "/pgd/5/reference/pgd-settings#bdrpredictive_checks", - "bdrreplay_progress_frequency": "/pgd/5/reference/pgd-settings#bdrreplay_progress_frequency", - "bdrstandby_slot_names": "/pgd/5/reference/pgd-settings#bdrstandby_slot_names", - "bdrwriters_per_subscription": "/pgd/5/reference/pgd-settings#bdrwriters_per_subscription", - "bdrmax_writers_per_subscription": "/pgd/5/reference/pgd-settings#bdrmax_writers_per_subscription", - "bdrxact_replication": "/pgd/5/reference/pgd-settings#bdrxact_replication", - "bdrpermit_unsafe_commands": "/pgd/5/reference/pgd-settings#bdrpermit_unsafe_commands", - "bdrbatch_inserts": "/pgd/5/reference/pgd-settings#bdrbatch_inserts", - "bdrmaximum_clock_skew": "/pgd/5/reference/pgd-settings#bdrmaximum_clock_skew", - "bdrmaximum_clock_skew_action": "/pgd/5/reference/pgd-settings#bdrmaximum_clock_skew_action", - "bdraccept_connections": "/pgd/5/reference/pgd-settings#bdraccept_connections", - "bdrstandby_slots_min_confirmed": "/pgd/5/reference/pgd-settings#bdrstandby_slots_min_confirmed", - "bdrwriter_input_queue_size": "/pgd/5/reference/pgd-settings#bdrwriter_input_queue_size", - "bdrwriter_output_queue_size": "/pgd/5/reference/pgd-settings#bdrwriter_output_queue_size", - "bdrmin_worker_backoff_delay": "/pgd/5/reference/pgd-settings#bdrmin_worker_backoff_delay", - "bdrcrdt_raw_value": "/pgd/5/reference/pgd-settings#bdrcrdt_raw_value", - "bdrcommit_scope": "/pgd/5/reference/pgd-settings#bdrcommit_scope", - "bdrcamo_local_mode_delay": "/pgd/5/reference/pgd-settings#bdrcamo_local_mode_delay", - "bdrcamo_enable_client_warnings": "/pgd/5/reference/pgd-settings#bdrcamo_enable_client_warnings", - "bdrdefault_streaming_mode": "/pgd/5/reference/pgd-settings#bdrdefault_streaming_mode", - "bdrlag_control_max_commit_delay": "/pgd/5/reference/pgd-settings#bdrlag_control_max_commit_delay", - "bdrlag_control_max_lag_size": "/pgd/5/reference/pgd-settings#bdrlag_control_max_lag_size", - "bdrlag_control_max_lag_time": "/pgd/5/reference/pgd-settings#bdrlag_control_max_lag_time", - "bdrlag_control_min_conforming_nodes": "/pgd/5/reference/pgd-settings#bdrlag_control_min_conforming_nodes", - "bdrlag_control_commit_delay_adjust": "/pgd/5/reference/pgd-settings#bdrlag_control_commit_delay_adjust", - "bdrlag_control_sample_interval": "/pgd/5/reference/pgd-settings#bdrlag_control_sample_interval", - "bdrlag_control_commit_delay_start": "/pgd/5/reference/pgd-settings#bdrlag_control_commit_delay_start", - "bdrtimestamp_snapshot_keep": "/pgd/5/reference/pgd-settings#bdrtimestamp_snapshot_keep", - "bdrdebug_level": "/pgd/5/reference/pgd-settings#bdrdebug_level", - "bdrtrace_level": "/pgd/5/reference/pgd-settings#bdrtrace_level", - "bdrtrack_subscription_apply": "/pgd/5/reference/pgd-settings#bdrtrack_subscription_apply", - "bdrtrack_relation_apply": "/pgd/5/reference/pgd-settings#bdrtrack_relation_apply", - "bdrtrack_apply_lock_timing": "/pgd/5/reference/pgd-settings#bdrtrack_apply_lock_timing", - "bdrenable_wal_decoder": "/pgd/5/reference/pgd-settings#bdrenable_wal_decoder", - "bdrreceive_lcr": "/pgd/5/reference/pgd-settings#bdrreceive_lcr", - "bdrlcr_cleanup_interval": "/pgd/5/reference/pgd-settings#bdrlcr_cleanup_interval", - "bdrglobal_connection_timeout": "/pgd/5/reference/pgd-settings#bdrglobal_connection_timeout", - "bdrglobal_keepalives": "/pgd/5/reference/pgd-settings#bdrglobal_keepalives", - "bdrglobal_keepalives_idle": "/pgd/5/reference/pgd-settings#bdrglobal_keepalives_idle", - "bdrglobal_keepalives_interval": "/pgd/5/reference/pgd-settings#bdrglobal_keepalives_interval", - "bdrglobal_keepalives_count": "/pgd/5/reference/pgd-settings#bdrglobal_keepalives_count", - "bdrglobal_tcp_user_timeout": "/pgd/5/reference/pgd-settings#bdrglobal_tcp_user_timeout", - "bdrraft_global_election_timeout": "/pgd/5/reference/pgd-settings#bdrraft_global_election_timeout", - "bdrraft_group_election_timeout": "/pgd/5/reference/pgd-settings#bdrraft_group_election_timeout", - "bdrraft_response_timeout": "/pgd/5/reference/pgd-settings#bdrraft_response_timeout", - "bdrraft_keep_min_entries": "/pgd/5/reference/pgd-settings#bdrraft_keep_min_entries", - "bdrraft_log_min_apply_duration": "/pgd/5/reference/pgd-settings#bdrraft_log_min_apply_duration", - "bdrraft_log_min_message_duration": "/pgd/5/reference/pgd-settings#bdrraft_log_min_message_duration", - "bdrraft_group_max_connections": "/pgd/5/reference/pgd-settings#bdrraft_group_max_connections", - "bdrbackwards_compatibility": "/pgd/5/reference/pgd-settings#bdrbackwards_compatibility", - "bdrtrack_replication_estimates": "/pgd/5/reference/pgd-settings#bdrtrack_replication_estimates", - "bdrlag_tracker_apply_rate_weight": "/pgd/5/reference/pgd-settings#bdrlag_tracker_apply_rate_weight", - "bdrenable_auto_sync_reconcile": "/pgd/5/reference/pgd-settings#bdrenable_auto_sync_reconcile", - "list-of-node-states": "/pgd/5/reference/nodes#list-of-node-states", - "node-management-commands": "/pgd/5/reference/nodes#node-management-commands", - "bdr_init_physical": "/pgd/5/reference/nodes#bdr_init_physical", - "bdralter_node_group_option": "/pgd/5/reference/nodes-management-interfaces#bdralter_node_group_option", - "bdralter_node_interface": "/pgd/5/reference/nodes-management-interfaces#bdralter_node_interface", - "bdralter_node_option": "/pgd/5/reference/nodes-management-interfaces#bdralter_node_option", - "bdralter_subscription_enable": "/pgd/5/reference/nodes-management-interfaces#bdralter_subscription_enable", - "bdralter_subscription_disable": "/pgd/5/reference/nodes-management-interfaces#bdralter_subscription_disable", - "bdrcreate_node": "/pgd/5/reference/nodes-management-interfaces#bdrcreate_node", - "bdrcreate_node_group": "/pgd/5/reference/nodes-management-interfaces#bdrcreate_node_group", - "bdrjoin_node_group": "/pgd/5/reference/nodes-management-interfaces#bdrjoin_node_group", - "bdrpart_node": "/pgd/5/reference/nodes-management-interfaces#bdrpart_node", - "bdrpromote_node": "/pgd/5/reference/nodes-management-interfaces#bdrpromote_node", - "bdrswitch_node_group": "/pgd/5/reference/nodes-management-interfaces#bdrswitch_node_group", - "bdrwait_for_join_completion": "/pgd/5/reference/nodes-management-interfaces#bdrwait_for_join_completion", - "bdralter_node_group_config": "/pgd/5/reference/nodes-management-interfaces#bdralter_node_group_config", - "bdrdrop_node_group": "/pgd/5/reference/nodes-management-interfaces#bdrdrop_node_group", - "bdrcreate_proxy": "/pgd/5/reference/routing#bdrcreate_proxy", - "bdralter_proxy_option": "/pgd/5/reference/routing#bdralter_proxy_option", - "bdrdrop_proxy": "/pgd/5/reference/routing#bdrdrop_proxy", - "bdrrouting_leadership_transfer": "/pgd/5/reference/routing#bdrrouting_leadership_transfer", - "cs.commit-scope-syntax": "/pgd/5/reference/commit-scopes#commit-scope-syntax", - "cs.commit-scope-groups": "/pgd/5/reference/commit-scopes#commit-scope-groups", - "cs.any": "/pgd/5/reference/commit-scopes#any", - "cs.any-not": "/pgd/5/reference/commit-scopes#any-not", - "cs.majority": "/pgd/5/reference/commit-scopes#majority", - "cs.majority-not": "/pgd/5/reference/commit-scopes#majority-not", - "cs.all": "/pgd/5/reference/commit-scopes#all", - "cs.all-not": "/pgd/5/reference/commit-scopes#all-not", - "cs.confirmation-level": "/pgd/5/reference/commit-scopes#confirmation-level", - "cs.on-received": "/pgd/5/reference/commit-scopes#on-received", - "cs.on-replicated": "/pgd/5/reference/commit-scopes#on-replicated", - "cs.on-durable": "/pgd/5/reference/commit-scopes#on-durable", - "cs.on-visible": "/pgd/5/reference/commit-scopes#on-visible", - "cs.commit-scope-kinds": "/pgd/5/reference/commit-scopes#commit-scope-kinds", - "cs.group-commit": "/pgd/5/reference/commit-scopes#group-commit", - "cs.group-commit-parameters": "/pgd/5/reference/commit-scopes#group-commit-parameters", - "cs.abort-on-parameters": "/pgd/5/reference/commit-scopes#abort-on-parameters", - "cs.transaction_tracking-settings": "/pgd/5/reference/commit-scopes#transaction_tracking-settings", - "cs.conflict_resolution-settings": "/pgd/5/reference/commit-scopes#conflict_resolution-settings", - "cs.commit_decision-settings": "/pgd/5/reference/commit-scopes#commit_decision-settings", - "cs.camo": "/pgd/5/reference/commit-scopes#camo", - "cs.degrade-on-parameters": "/pgd/5/reference/commit-scopes#degrade-on-parameters", - "cs.lag-control": "/pgd/5/reference/commit-scopes#lag-control", - "cs.lag-control-parameters": "/pgd/5/reference/commit-scopes#lag-control-parameters", - "cs.synchronous_commit": "/pgd/5/reference/commit-scopes#synchronous_commit", - "conflict-detection": "/pgd/5/reference/conflicts#conflict-detection", - "list-of-conflict-types": "/pgd/5/reference/conflicts#list-of-conflict-types", - "conflict-resolution": "/pgd/5/reference/conflicts#conflict-resolution", - "list-of-conflict-resolvers": "/pgd/5/reference/conflicts#list-of-conflict-resolvers", - "default-conflict-resolvers": "/pgd/5/reference/conflicts#default-conflict-resolvers", - "list-of-conflict-resolutions": "/pgd/5/reference/conflicts#list-of-conflict-resolutions", - "conflict-logging": "/pgd/5/reference/conflicts#conflict-logging", - "bdralter_table_conflict_detection": "/pgd/5/reference/conflict_functions#bdralter_table_conflict_detection", - "bdralter_node_set_conflict_resolver": "/pgd/5/reference/conflict_functions#bdralter_node_set_conflict_resolver", - "bdralter_node_set_log_config": "/pgd/5/reference/conflict_functions#bdralter_node_set_log_config", - "bdrcreate_replication_set": "/pgd/5/reference/repsets-management#bdrcreate_replication_set", - "bdralter_replication_set": "/pgd/5/reference/repsets-management#bdralter_replication_set", - "bdrdrop_replication_set": "/pgd/5/reference/repsets-management#bdrdrop_replication_set", - "bdralter_node_replication_sets": "/pgd/5/reference/repsets-management#bdralter_node_replication_sets", - "bdrreplication_set_add_table": "/pgd/5/reference/repsets-membership#bdrreplication_set_add_table", - "bdrreplication_set_remove_table": "/pgd/5/reference/repsets-membership#bdrreplication_set_remove_table", - "bdrreplication_set_add_ddl_filter": "/pgd/5/reference/repsets-ddl-filtering#bdrreplication_set_add_ddl_filter", - "bdrreplication_set_remove_ddl_filter": "/pgd/5/reference/repsets-ddl-filtering#bdrreplication_set_remove_ddl_filter", - "pgd_bench": "/pgd/5/reference/testingandtuning#pgd_bench", - "bdralter_sequence_set_kind": "/pgd/5/reference/sequences#bdralter_sequence_set_kind", - "bdrextract_timestamp_from_snowflakeid": "/pgd/5/reference/sequences#bdrextract_timestamp_from_snowflakeid", - "bdrextract_nodeid_from_snowflakeid": "/pgd/5/reference/sequences#bdrextract_nodeid_from_snowflakeid", - "bdrextract_localseqid_from_snowflakeid": "/pgd/5/reference/sequences#bdrextract_localseqid_from_snowflakeid", - "bdrtimestamp_to_snowflakeid": "/pgd/5/reference/sequences#bdrtimestamp_to_snowflakeid", - "bdrextract_timestamp_from_timeshard": "/pgd/5/reference/sequences#bdrextract_timestamp_from_timeshard", - "bdrextract_nodeid_from_timeshard": "/pgd/5/reference/sequences#bdrextract_nodeid_from_timeshard", - "bdrextract_localseqid_from_timeshard": "/pgd/5/reference/sequences#bdrextract_localseqid_from_timeshard", - "bdrtimestamp_to_timeshard": "/pgd/5/reference/sequences#bdrtimestamp_to_timeshard", - "bdrgen_ksuuid_v2": "/pgd/5/reference/sequences#bdrgen_ksuuid_v2", - "bdrksuuid_v2_cmp": "/pgd/5/reference/sequences#bdrksuuid_v2_cmp", - "bdrextract_timestamp_from_ksuuid_v2": "/pgd/5/reference/sequences#bdrextract_timestamp_from_ksuuid_v2", - "bdrgen_ksuuid": "/pgd/5/reference/sequences#bdrgen_ksuuid", - "bdruuid_v1_cmp": "/pgd/5/reference/sequences#bdruuid_v1_cmp", - "bdrextract_timestamp_from_ksuuid": "/pgd/5/reference/sequences#bdrextract_timestamp_from_ksuuid", - "bdrautopartition": "/pgd/5/reference/autopartition#bdrautopartition", - "bdrdrop_autopartition": "/pgd/5/reference/autopartition#bdrdrop_autopartition", - "bdrautopartition_wait_for_partitions": "/pgd/5/reference/autopartition#bdrautopartition_wait_for_partitions", - "bdrautopartition_wait_for_partitions_on_all_nodes": "/pgd/5/reference/autopartition#bdrautopartition_wait_for_partitions_on_all_nodes", - "bdrautopartition_find_partition": "/pgd/5/reference/autopartition#bdrautopartition_find_partition", - "bdrautopartition_enable": "/pgd/5/reference/autopartition#bdrautopartition_enable", - "bdrautopartition_disable": "/pgd/5/reference/autopartition#bdrautopartition_disable", - "internal-functions": "/pgd/5/reference/autopartition#internal-functions", - "bdrautopartition_create_partition": "/pgd/5/reference/autopartition#bdrautopartition_create_partition", - "bdrautopartition_drop_partition": "/pgd/5/reference/autopartition#bdrautopartition_drop_partition", - "bdrcreate_conflict_trigger": "/pgd/5/reference/streamtriggers/interfaces#bdrcreate_conflict_trigger", - "bdrcreate_transform_trigger": "/pgd/5/reference/streamtriggers/interfaces#bdrcreate_transform_trigger", - "bdrdrop_trigger": "/pgd/5/reference/streamtriggers/interfaces#bdrdrop_trigger", - "bdrtrigger_get_row": "/pgd/5/reference/streamtriggers/rowfunctions#bdrtrigger_get_row", - "bdrtrigger_get_committs": "/pgd/5/reference/streamtriggers/rowfunctions#bdrtrigger_get_committs", - "bdrtrigger_get_xid": "/pgd/5/reference/streamtriggers/rowfunctions#bdrtrigger_get_xid", - "bdrtrigger_get_type": "/pgd/5/reference/streamtriggers/rowfunctions#bdrtrigger_get_type", - "bdrtrigger_get_conflict_type": "/pgd/5/reference/streamtriggers/rowfunctions#bdrtrigger_get_conflict_type", - "bdrtrigger_get_origin_node_id": "/pgd/5/reference/streamtriggers/rowfunctions#bdrtrigger_get_origin_node_id", - "bdrri_fkey_on_del_trigger": "/pgd/5/reference/streamtriggers/rowfunctions#bdrri_fkey_on_del_trigger", - "tg_name": "/pgd/5/reference/streamtriggers/rowvariables#tg_name", - "tg_when": "/pgd/5/reference/streamtriggers/rowvariables#tg_when", - "tg_level": "/pgd/5/reference/streamtriggers/rowvariables#tg_level", - "tg_op": "/pgd/5/reference/streamtriggers/rowvariables#tg_op", - "tg_relid": "/pgd/5/reference/streamtriggers/rowvariables#tg_relid", - "tg_table_name": "/pgd/5/reference/streamtriggers/rowvariables#tg_table_name", - "tg_table_schema": "/pgd/5/reference/streamtriggers/rowvariables#tg_table_schema", - "tg_nargs": "/pgd/5/reference/streamtriggers/rowvariables#tg_nargs", - "tg_argv": "/pgd/5/reference/streamtriggers/rowvariables#tg_argv", - "bdrautopartition_partitions": "/pgd/5/reference/catalogs-internal#bdrautopartition_partitions", - "bdrautopartition_rules": "/pgd/5/reference/catalogs-internal#bdrautopartition_rules", - "bdrddl_epoch": "/pgd/5/reference/catalogs-internal#bdrddl_epoch", - "bdrevent_history": "/pgd/5/reference/catalogs-internal#bdrevent_history", - "bdrevent_summary": "/pgd/5/reference/catalogs-internal#bdrevent_summary", - "bdrnode_config": "/pgd/5/reference/catalogs-internal#bdrnode_config", - "bdrnode_config_summary": "/pgd/5/reference/catalogs-internal#bdrnode_config_summary", - "bdrnode_group_config": "/pgd/5/reference/catalogs-internal#bdrnode_group_config", - "bdrnode_group_routing_config_summary": "/pgd/5/reference/catalogs-internal#bdrnode_group_routing_config_summary", - "bdrnode_group_routing_info": "/pgd/5/reference/catalogs-internal#bdrnode_group_routing_info", - "bdrnode_group_routing_summary": "/pgd/5/reference/catalogs-internal#bdrnode_group_routing_summary", - "bdrnode_routing_config_summary": "/pgd/5/reference/catalogs-internal#bdrnode_routing_config_summary", - "bdrproxy_config": "/pgd/5/reference/catalogs-internal#bdrproxy_config", - "bdrproxy_config_summary": "/pgd/5/reference/catalogs-internal#bdrproxy_config_summary", - "bdrsequence_kind": "/pgd/5/reference/catalogs-internal#bdrsequence_kind", - "bdrbdr_get_commit_decisions": "/pgd/5/reference/functions-internal#bdrbdr_get_commit_decisions", - "bdrbdr_track_commit_decision": "/pgd/5/reference/functions-internal#bdrbdr_track_commit_decision", - "bdrconsensus_kv_fetch": "/pgd/5/reference/functions-internal#bdrconsensus_kv_fetch", - "bdrconsensus_kv_store": "/pgd/5/reference/functions-internal#bdrconsensus_kv_store", - "bdrdecode_message_payload": "/pgd/5/reference/functions-internal#bdrdecode_message_payload", - "bdrdecode_message_response_payload": "/pgd/5/reference/functions-internal#bdrdecode_message_response_payload", - "bdrdifference_fix_origin_create": "/pgd/5/reference/functions-internal#bdrdifference_fix_origin_create", - "bdrdifference_fix_session_reset": "/pgd/5/reference/functions-internal#bdrdifference_fix_session_reset", - "bdrdifference_fix_session_setup": "/pgd/5/reference/functions-internal#bdrdifference_fix_session_setup", - "bdrdifference_fix_xact_set_avoid_conflict": "/pgd/5/reference/functions-internal#bdrdifference_fix_xact_set_avoid_conflict", - "bdrdrop_node": "/pgd/5/reference/functions-internal#bdrdrop_node", - "bdrget_global_locks": "/pgd/5/reference/functions-internal#bdrget_global_locks", - "bdrget_node_conflict_resolvers": "/pgd/5/reference/functions-internal#bdrget_node_conflict_resolvers", - "bdrget_slot_flush_timestamp": "/pgd/5/reference/functions-internal#bdrget_slot_flush_timestamp", - "bdrinternal_alter_sequence_set_kind": "/pgd/5/reference/functions-internal#bdrinternal_alter_sequence_set_kind", - "bdrinternal_replication_set_add_table": "/pgd/5/reference/functions-internal#bdrinternal_replication_set_add_table", - "bdrinternal_replication_set_remove_table": "/pgd/5/reference/functions-internal#bdrinternal_replication_set_remove_table", - "bdrinternal_submit_join_request": "/pgd/5/reference/functions-internal#bdrinternal_submit_join_request", - "bdrisolation_test_session_is_blocked": "/pgd/5/reference/functions-internal#bdrisolation_test_session_is_blocked", - "bdrlocal_node_info": "/pgd/5/reference/functions-internal#bdrlocal_node_info", - "bdrmsgb_connect": "/pgd/5/reference/functions-internal#bdrmsgb_connect", - "bdrmsgb_deliver_message": "/pgd/5/reference/functions-internal#bdrmsgb_deliver_message", - "bdrnode_catchup_state_name": "/pgd/5/reference/functions-internal#bdrnode_catchup_state_name", - "bdrnode_kind_name": "/pgd/5/reference/functions-internal#bdrnode_kind_name", - "bdrpeer_state_name": "/pgd/5/reference/functions-internal#bdrpeer_state_name", - "bdrpg_xact_origin": "/pgd/5/reference/functions-internal#bdrpg_xact_origin", - "bdrrequest_replay_progress_update": "/pgd/5/reference/functions-internal#bdrrequest_replay_progress_update", - "bdrreset_relation_stats": "/pgd/5/reference/functions-internal#bdrreset_relation_stats", - "bdrreset_subscription_stats": "/pgd/5/reference/functions-internal#bdrreset_subscription_stats", - "bdrresynchronize_table_from_node": "/pgd/5/reference/functions-internal#bdrresynchronize_table_from_node", - "bdrseq_currval": "/pgd/5/reference/functions-internal#bdrseq_currval", - "bdrseq_lastval": "/pgd/5/reference/functions-internal#bdrseq_lastval", - "bdrseq_nextval": "/pgd/5/reference/functions-internal#bdrseq_nextval", - "bdrshow_subscription_status": "/pgd/5/reference/functions-internal#bdrshow_subscription_status", - "bdrshow_workers": "/pgd/5/reference/functions-internal#bdrshow_workers", - "bdrshow_writers": "/pgd/5/reference/functions-internal#bdrshow_writers", - "bdrtaskmgr_set_leader": "/pgd/5/reference/functions-internal#bdrtaskmgr_set_leader", - "bdrtaskmgr_get_last_completed_workitem": "/pgd/5/reference/functions-internal#bdrtaskmgr_get_last_completed_workitem", - "bdrtaskmgr_work_queue_check_status": "/pgd/5/reference/functions-internal#bdrtaskmgr_work_queue_check_status", - "bdrpglogical_proto_version_ranges": "/pgd/5/reference/functions-internal#bdrpglogical_proto_version_ranges", - "bdrget_min_required_replication_slots": "/pgd/5/reference/functions-internal#bdrget_min_required_replication_slots", - "bdrget_min_required_worker_processes": "/pgd/5/reference/functions-internal#bdrget_min_required_worker_processes", - "bdrstat_get_activity": "/pgd/5/reference/functions-internal#bdrstat_get_activity", - "bdrworker_role_id_name": "/pgd/5/reference/functions-internal#bdrworker_role_id_name", - "bdrlag_history": "/pgd/5/reference/functions-internal#bdrlag_history", - "bdrget_raft_instance_by_nodegroup": "/pgd/5/reference/functions-internal#bdrget_raft_instance_by_nodegroup", - "bdrmonitor_camo_on_all_nodes": "/pgd/5/reference/functions-internal#bdrmonitor_camo_on_all_nodes", - "bdrmonitor_raft_details_on_all_nodes": "/pgd/5/reference/functions-internal#bdrmonitor_raft_details_on_all_nodes", - "bdrmonitor_replslots_details_on_all_nodes": "/pgd/5/reference/functions-internal#bdrmonitor_replslots_details_on_all_nodes", - "bdrmonitor_subscription_details_on_all_nodes": "/pgd/5/reference/functions-internal#bdrmonitor_subscription_details_on_all_nodes", - "bdrmonitor_version_details_on_all_nodes": "/pgd/5/reference/functions-internal#bdrmonitor_version_details_on_all_nodes", - "bdrnode_group_member_info": "/pgd/5/reference/functions-internal#bdrnode_group_member_info", - "bdrcolumn_timestamps_create": "/pgd/5/reference/clcd#bdrcolumn_timestamps_create" -======= "bdrcamo_decision_journal": "/pgd/latest/reference/catalogs-visible#bdrcamo_decision_journal", "bdrcommit_scopes": "/pgd/latest/reference/catalogs-visible#bdrcommit_scopes", "bdrconflict_history": "/pgd/latest/reference/catalogs-visible#bdrconflict_history", @@ -699,5 +348,4 @@ "bdrmonitor_version_details_on_all_nodes": "/pgd/latest/reference/functions-internal#bdrmonitor_version_details_on_all_nodes", "bdrnode_group_member_info": "/pgd/latest/reference/functions-internal#bdrnode_group_member_info", "bdrcolumn_timestamps_create": "/pgd/latest/reference/clcd#bdrcolumn_timestamps_create" ->>>>>>> b676c968f5 (Removed alias designation and added explanation in Details.) -} \ No newline at end of file +} From 0b7ba2b62d5f4a6472ba8d284829af7d48eaa481 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan <126472455+djw-m@users.noreply.github.com> Date: Thu, 14 Nov 2024 09:19:33 +0000 Subject: [PATCH 21/35] Update product_docs/docs/pgd/5.6/reference/functions.mdx --- product_docs/docs/pgd/5.6/reference/functions.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_docs/docs/pgd/5.6/reference/functions.mdx b/product_docs/docs/pgd/5.6/reference/functions.mdx index 39436fa4a49..a4dc42e6251 100644 --- a/product_docs/docs/pgd/5.6/reference/functions.mdx +++ b/product_docs/docs/pgd/5.6/reference/functions.mdx @@ -333,7 +333,7 @@ bdr.wait_node_confirm_lsn(node_name text DEFAULT NULL, target_lsn pg_lsn DEFAULT #### Notes -Requires `bdr_superuser` privileges to use. +Requires `bdr_application` privileges to use. ### `bdr.wait_for_apply_queue` From bae7adfc971bc57826386ee107aeff385de84fe3 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Thu, 14 Nov 2024 09:58:32 +0000 Subject: [PATCH 22/35] Fix up synchronous commit anchors from _ to - Signed-off-by: Dj Walker-Morgan --- .../docs/pgd/5.6/commit-scopes/synchronous_commit.mdx | 2 +- product_docs/docs/pgd/5.6/reference/commit-scopes.mdx | 4 ++-- product_docs/docs/pgd/5.6/reference/index.json | 2 +- product_docs/docs/pgd/5.6/reference/index.mdx | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx b/product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx index 8e4a5e7b0a5..668c0a13808 100644 --- a/product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx +++ b/product_docs/docs/pgd/5.6/commit-scopes/synchronous_commit.mdx @@ -26,7 +26,7 @@ SELECT bdr.create_commit_scope( ## Configuration -`SYNCHRONOUS COMMIT` supports the optional `DEGRADE ON` clause. See the [`SYNCHRONOUS COMMIT`](/pgd/latest/reference/commit-scopes/#synchronous_commit) commit scope reference for specific configuration parameters or see [this section](degrading) regarding Degrade on options. +`SYNCHRONOUS COMMIT` supports the optional `DEGRADE ON` clause. See the [`SYNCHRONOUS COMMIT`](/pgd/latest/reference/commit-scopes/#synchronous-commit) commit scope reference for specific configuration parameters or see [this section](degrading) regarding Degrade on options. ## Confirmation diff --git a/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx b/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx index 4768eecd452..1dfcedd54a9 100644 --- a/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx +++ b/product_docs/docs/pgd/5.6/reference/commit-scopes.mdx @@ -144,7 +144,7 @@ This is the default visibility. A transaction is confirmed after all of its chan More details of the commit scope kinds and details of their parameters: -- [Synchronous Commit](#synchronous_commit) +- [Synchronous Commit](#synchronous-commit) - [Group Commit](#group-commit) - [CAMO (Commit At Most Once)](#camo) - [Lag Control](#lag-control) @@ -176,7 +176,7 @@ The `commit_scope_degrade_operation` must be `SYNCHRONOUS COMMIT` with a less re ## GROUP COMMIT -Allows commits to be confirmed by a consensus of nodes, controls conflict resolution settings, and, like [`SYNCHRONOUS COMMIT`](#synchronous_commit), has optional rule-degredation parameters. +Allows commits to be confirmed by a consensus of nodes, controls conflict resolution settings, and, like [`SYNCHRONOUS COMMIT`](#synchronous-commit), has optional rule-degredation parameters. ``` GROUP COMMIT [ ( group_commit_parameter = value [, ...] ) ] [ ABORT ON ( abort_on_parameter = value ) ] [ DEGRADE ON (degrade_on_parameter = value ) TO commit_scope_degrade_operation ] diff --git a/product_docs/docs/pgd/5.6/reference/index.json b/product_docs/docs/pgd/5.6/reference/index.json index 172600ecabf..aecf10565b2 100644 --- a/product_docs/docs/pgd/5.6/reference/index.json +++ b/product_docs/docs/pgd/5.6/reference/index.json @@ -224,7 +224,7 @@ "cs.on-durable": "/pgd/5.6/reference/commit-scopes#on-durable", "cs.on-visible": "/pgd/5.6/reference/commit-scopes#on-visible", "cs.commit-scope-kinds": "/pgd/5.6/reference/commit-scopes#commit-scope-kinds", - "cs.synchronous_commit": "/pgd/5.6/reference/commit-scopes#synchronous_commit", + "cs.synchronous-commit": "/pgd/5.6/reference/commit-scopes#synchronous-commit", "cs.degrade-on-parameters": "/pgd/5.6/reference/commit-scopes#degrade-on-parameters", "cs.group-commit": "/pgd/5.6/reference/commit-scopes#group-commit", "cs.group-commit-parameters": "/pgd/5.6/reference/commit-scopes#group-commit-parameters", diff --git a/product_docs/docs/pgd/5.6/reference/index.mdx b/product_docs/docs/pgd/5.6/reference/index.mdx index 72977f33312..fd221b4083b 100644 --- a/product_docs/docs/pgd/5.6/reference/index.mdx +++ b/product_docs/docs/pgd/5.6/reference/index.mdx @@ -307,7 +307,7 @@ The reference section is a definitive listing of all functions, views, and comma * [ON durable](commit-scopes#on-durable) * [ON visible](commit-scopes#on-visible) * [Commit Scope kinds](commit-scopes#commit-scope-kinds) - * [SYNCHRONOUS_COMMIT](commit-scopes#synchronous_commit) + * [SYNCHRONOUS COMMIT](commit-scopes#synchronous-commit) * [DEGRADE ON parameters](commit-scopes#degrade-on-parameters) * [commit_scope_degrade_operation](commit-scopes#commit_scope_degrade_operation) * [GROUP COMMIT](commit-scopes#group-commit) From 8408a4561196f2403749039c1df3150106c80061 Mon Sep 17 00:00:00 2001 From: Josh Earlenbaugh Date: Mon, 18 Nov 2024 11:39:00 -0500 Subject: [PATCH 23/35] Update 5.6 docs to reflect multi-row conflicts possibility given unblocked EXCLUDE constraints in 5.6 (#6204) * Changed language to mention EXCLUDE constraints causing mult-row conflicts possibility in conflicts reference. * Added Exclusion constraint conflicts section back to Types of Conflict page with updated language for 5.6 * Changed sentence in reference describing ultiple_unique_constraints. * Changed multiple_unique_conflicts description. * Changed language to reflect nuance regarding UNIQUE and EXCLUDE constraints causing multi-row conflicts. --- .../conflicts/02_types_of_conflict.mdx | 20 ++++++++++++------- .../docs/pgd/5.6/reference/conflicts.mdx | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/product_docs/docs/pgd/5.6/conflict-management/conflicts/02_types_of_conflict.mdx b/product_docs/docs/pgd/5.6/conflict-management/conflicts/02_types_of_conflict.mdx index 36263c80a82..1e99c4a5f61 100644 --- a/product_docs/docs/pgd/5.6/conflict-management/conflicts/02_types_of_conflict.mdx +++ b/product_docs/docs/pgd/5.6/conflict-management/conflicts/02_types_of_conflict.mdx @@ -31,16 +31,22 @@ To resolve this conflict type, you can also use column-level conflict resolution You can effectively eliminate this type of conflict by using [global sequences](../../sequences/#pgd-global-sequences). -### INSERT operations that violate multiple UNIQUE constraints +### INSERT operations that violate UNIQUE or EXCLUDE constraints -An `INSERT`/`INSERT` conflict can violate more than one `UNIQUE` constraint, of which one might be the `PRIMARY KEY`. If a new row violates more than one `UNIQUE` constraint and that results in a conflict against more than one other row, then applying the replication change produces a `multiple_unique_conflicts` conflict. +An `INSERT`/`INSERT` conflict can violate more than one `UNIQUE` constraint, of which one might be the `PRIMARY KEY`. +With the addition of `EXCLUDE` constraint support in PGD 5.6, an `INSERT`/`INSERT`conflict can also violate one or more `EXCLUDE` constraints. -In case of such a conflict, you must remove some rows for replication to continue. Depending on the resolver setting for `multiple_unique_conflicts`, the apply process either exits with error, skips the incoming row, or deletes some of the rows. The deletion tries to preserve the row with the correct `PRIMARY KEY` and delete the others. +If a new row violates more than one `UNIQUE` constraint and that results in a conflict against more than one other row, or a new row violates more than one `EXCLUDE` constraint or a single `EXCLUDE` constraint, either of which results in a conflict against more than one other row, then applying the replication change produces a `multiple_unique_conflicts` conflict. + +In case of such a conflict, you must remove some rows for replication to continue. +Depending on the resolver setting for `multiple_unique_conflicts`, the apply process either exits with error, skips the incoming row, or deletes some of the rows. +The deletion tries to preserve the row with the correct `PRIMARY KEY` and delete the others. !!! Warning - In case of multiple rows conflicting this way, if the result of conflict resolution is to proceed with the insert operation, some of the data is always deleted. +In case of multiple rows conflicting this way, if the result of conflict resolution is to proceed with the insert operation, some of the data is always deleted. +!!! -You can also define a different behavior using a conflict trigger. +You can also define a different behavior using a [conflict trigger](/pgd/latest/striggers/#conflict-triggers). ### UPDATE/UPDATE conflicts @@ -165,9 +171,9 @@ changes, make those changes using Eager Replication. !!! Warning In case the conflict resolution of `update_pkey_exists` conflict results in update, one of the rows is always deleted. -### UPDATE operations that violate multiple UNIQUE constraints +### UPDATE operations that violate UNIQUE or EXCLUDE constraints -Like [INSERT operations that violate multiple UNIQUE constraints](#insert-operations-that-violate-multiple-unique-constraints), when an incoming `UPDATE` violates more than one `UNIQUE` index (or the `PRIMARY KEY`), PGD raises a `multiple_unique_conflicts` conflict. +Like [INSERT operations that violate multiple UNIQUE/EXLUDE constraints](#insert-operations-that-violate-unique-or-exclude-constraints), when an incoming `UPDATE` violates more than one `UNIQUE`/`EXCLUDE index (including the `PRIMARY KEY`) or violates a single `EXCLUDE` index such that more than one row is in conflict, PGD raises a `multiple_unique_conflicts` conflict. PGD supports deferred unique constraints. If a transaction can commit on the source, then it applies cleanly on target, unless it sees conflicts. However, you can't use a deferred primary key as a REPLICA IDENTITY, so the use cases are already limited by that and the warning about using multiple unique constraints. diff --git a/product_docs/docs/pgd/5.6/reference/conflicts.mdx b/product_docs/docs/pgd/5.6/reference/conflicts.mdx index 998328da90c..1f7abd45414 100644 --- a/product_docs/docs/pgd/5.6/reference/conflicts.mdx +++ b/product_docs/docs/pgd/5.6/reference/conflicts.mdx @@ -18,7 +18,7 @@ PGD recognizes the following conflict types, which can be used as the `conflict_ | `update_missing` | An incoming update is trying to modify a row that doesn't exist. | | `update_recently_deleted` | An incoming update is trying to modify a row that was recently deleted. | | `update_pkey_exists` | An incoming update has modified the `PRIMARY KEY` to a value that already exists on the node that's applying the change. | -| `multiple_unique_conflicts` | The incoming row conflicts with multiple UNIQUE constraints/indexes in the target table. | +| `multiple_unique_conflicts`| An incoming row conflicts with multiple rows per UNIQUE/EXCLUDE indexes of the target table. | | `delete_recently_updated` | An incoming delete with an older commit timestamp than the most recent update of the row on the current node or when using [row version conflict detection](../conflict-management/conflicts/03_conflict_detection/#row-version-conflict-detection). | | `delete_missing` | An incoming delete is trying to remove a row that doesn't exist. | | `target_column_missing` | The target table is missing one or more columns present in the incoming row. | From 38ba6f18652b29a8298a7f2f01ea86f11073c777 Mon Sep 17 00:00:00 2001 From: Florin Irion Date: Wed, 20 Nov 2024 17:05:12 +0100 Subject: [PATCH 24/35] PGD 5.6.1 release notes BDR-5715 --- product_docs/docs/pgd/5.6/rel_notes/index.mdx | 2 + .../pgd/5.6/rel_notes/src/relnote_5.6.1.yml | 154 ++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml diff --git a/product_docs/docs/pgd/5.6/rel_notes/index.mdx b/product_docs/docs/pgd/5.6/rel_notes/index.mdx index 8f59ccaf404..143f7ea75c5 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/index.mdx +++ b/product_docs/docs/pgd/5.6/rel_notes/index.mdx @@ -4,6 +4,7 @@ navTitle: Release notes description: Release notes for EDB Postgres Distributed 5.6 and later navigation: - pgd_5.6.0_rel_notes + - pgd_5.6.1_rel_notes --- @@ -13,3 +14,4 @@ The EDB Postgres Distributed documentation describes the latest version of EDB P | Release Date | EDB Postgres Distributed | BDR extension | PGD CLI | PGD Proxy | |---|---|---|---|---| | 15 Oct 2024 | [5.6.0](./pgd_5.6.0_rel_notes) | 5.6.0 | 5.6.0 | 5.6.0 | +| 25 Nov 2024 | [5.6.1](./pgd_5.6.1_rel_notes) | 5.6.1 | 5.6.1 | 5.6.1 | diff --git a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml new file mode 100644 index 00000000000..3908c435fea --- /dev/null +++ b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml @@ -0,0 +1,154 @@ +product: EDB Postgres Distributed +version: 5.6.1 +date: 25 November 2024 +meta: + bdrextension: 5.6.1 + pgdcli: 5.6.1 + pgdproxy: 5.6.1 +intro: | + EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. +highlights: | + - Add Postgres 17 support + - ARM64 Processor support +relnotes: +- relnote: Add Postgres 17 support + component: BDR + component_version: 5.6.1 + details: | + Support for Postgres 17 has been added for all flavors (PG, PGE, and EPAS) starting with 17.2. + jira: BDR-5410 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: ARM64 Processor Support + component: BDR + component_version: 5.6.1 + details: | + Support ARM architecture for EDB Postgres Distributed on Debian 12 and RHEL 9. + jira: BDR-5410 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Address walsender crash that happend during configuration reload. + component: BDR + component_version: 5.6.1 + details: | + Ensure that pglogical GUCs are overridden only when operating within the pglogical worker. + If this is not the case, MyPGLogicalWorker will be NULL, resulting in a segmentation fault + when the walsender attempts a configuration reload from the + pgl_wait_for_standby_confirmation() function. + jira: BDR-5661 + addresses: "42100" + type: Enhancement + severity: High + impact: High +- relnote: Fix unintended eager connection related to consensus connections among Subscriber Only group members + component: BDR + component_version: 5.6.1 + details: | + The msgbroker module used to establish consensus connections lazily, meaning that connections + were created only when the first message was sent to a specific destination. This method + negatively affected the latency of Raft leader elections. The behavior was modified to create + connections to consensus peers eagerly. However, this change resulted in an unintended + consequence: a fully meshed consensus network among subscriber-only nodes, which may conflict + with customer network designs. This patch keeps the eager connection setup but limits it to + voting nodes only, reverting to a lazy connection setup for non-voting nodes. + jira: BDR-5666 + addresses: "42041" + type: Bug-fix + severity: High + impact: High +- relnote: Fix autopatition task scheduling. + component: BDR + component_version: 5.6.1 + details: | + To improve reliability, shuffle the scheduling of autopartition tasks. This way, tasks + that are prone to failure won't consistently impact the success of other tasks. + jira: BDR-5638 + addresses: "41998" + type: Bug-fix + severity: High + impact: High +- relnote: Fix parting subscription with standbys. + component: BDR + component_version: 5.6.1 + details: | + The parting subscription used to hang, failing to wait for standbys when the + bdr.standby_slot_names parameter was defined. + jira: BDR-5658 + addresses: "41821" + type: Bug-fix + severity: High + impact: High +- relnote: Add `bdr.wait_node_confirm_lsn()`. + component: BDR + component_version: 5.6.1 + details: | + The function `bdr.wait_node_confirm_lsn()` has been introduced to wait until a specific node + reaches a designated Log Sequence Number (LSN). It first checks the `confirmed_flush_lsn` of + the replication slot for the specified node. If that information is not available, the function + connects to the node and queries `pg_replication_origin_progress()`, using the invoking node as + the origin. + If the `nodename` parameter is NULL, the function will wait for all nodes to reach the specified + LSN. If the `target` LSN is NULL, it will wait for the current `wal_flush_lsn`. + jira: BDR-5200 + addresses: "" + type: Bug-fix + severity: High + impact: High +- relnote: Enhancements in SO Node Management and Progress Tracking. + component: BDR + component_version: 5.6.1 + details: | + An update addresses the movement of group slots in SO nodes, ensuring they don't appear as peers in + progress updates. Improvements include enhanced watermark management for SO leaders in the Himesh + configuration, where write leaders now include watermarks in their updates. Watermarks are broadcasted + to simplify progress tracking on idle clusters. The peer progress mapping for SO nodes has been corrected, + and the tap test for group slot movement has been revised. + Additionally, the `bdr_get_all_origins` function now considers SO node origins. + jira: BDR-5549 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Communicating LSN Progress in Optimized Topology Configurations. + component: BDR + component_version: 5.6.1 + details: | + While there are no connections from non-leader data nodes to subscriber-only nodes in an optimized + topology configuration, the LSN progress of all data nodes is periodically communicated to these + subscriber-only nodes through logical replication. + jira: BDR-5549 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Fix parting SO node with multiple origins. + component: BDR + component_version: 5.6.1 + details: | + All relevant origins must be removed when parting SO node + With himesh, parting an SO node should result in removing all origins it + has, not just the one related to its SO group leader. + When parting a data node, even though there is no subscription to it + from SO node, the origin should be removed + DO not make SO node target of a part catchup subscription when himesh + enabled + jira: BDR-5552 + addresses: "" + type: Bug-fix + severity: High + impact: High +- relnote: Don't create slots for subscriber only nodes on witness nodes. + component: BDR + component_version: 5.6.1 + details: | + Subscriber only nodes should not have slots on witness nodes. + jira: BDR-5618 + addresses: "" + type: Bug-fix + severity: High + impact: High + From 8d815e623364caa2c7fe721c649c176e92f32bb7 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Wed, 20 Nov 2024 16:43:32 +0000 Subject: [PATCH 25/35] Generated pages and recatagorised some items Signed-off-by: Dj Walker-Morgan --- product_docs/docs/pgd/5.6/rel_notes/index.mdx | 4 +- .../pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx | 84 +++++++++++++++++++ .../pgd/5.6/rel_notes/src/relnote_5.6.1.yml | 8 +- 3 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx diff --git a/product_docs/docs/pgd/5.6/rel_notes/index.mdx b/product_docs/docs/pgd/5.6/rel_notes/index.mdx index 143f7ea75c5..b2e64835755 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/index.mdx +++ b/product_docs/docs/pgd/5.6/rel_notes/index.mdx @@ -3,8 +3,8 @@ title: EDB Postgres Distributed 5.6+ release notes navTitle: Release notes description: Release notes for EDB Postgres Distributed 5.6 and later navigation: - - pgd_5.6.0_rel_notes - pgd_5.6.1_rel_notes + - pgd_5.6.0_rel_notes --- @@ -13,5 +13,5 @@ The EDB Postgres Distributed documentation describes the latest version of EDB P | Release Date | EDB Postgres Distributed | BDR extension | PGD CLI | PGD Proxy | |---|---|---|---|---| -| 15 Oct 2024 | [5.6.0](./pgd_5.6.0_rel_notes) | 5.6.0 | 5.6.0 | 5.6.0 | | 25 Nov 2024 | [5.6.1](./pgd_5.6.1_rel_notes) | 5.6.1 | 5.6.1 | 5.6.1 | +| 15 Oct 2024 | [5.6.0](./pgd_5.6.0_rel_notes) | 5.6.0 | 5.6.0 | 5.6.0 | diff --git a/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx b/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx new file mode 100644 index 00000000000..0f3d540302e --- /dev/null +++ b/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx @@ -0,0 +1,84 @@ +--- +title: EDB Postgres Distributed 5.6.1 release notes +navTitle: Version 5.6.1 +--- + +Released: 25 November 2024 + +EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. + +## Highlights + +- Add Postgres 17 support +- ARM64 Processor support + +## Features + + + + +
ComponentVersionDescriptionAddresses
BDR5.6.1
Add Postgres 17 support

Support for Postgres 17 has been added for all flavors (PG, PGE, and EPAS) starting with 17.2.

+
BDR5.6.1
ARM64 Processor Support

Support ARM architecture for EDB Postgres Distributed on Debian 12 and RHEL 9.

+
+ + +## Enhancements + + + + + +
ComponentVersionDescriptionAddresses
BDR5.6.1
Add bdr.wait_node_confirm_lsn().

The function bdr.wait_node_confirm_lsn() has been introduced to wait until a specific node +reaches a designated Log Sequence Number (LSN). It first checks the confirmed_flush_lsn of +the replication slot for the specified node. If that information is not available, the function +connects to the node and queries pg_replication_origin_progress(), using the invoking node as +the origin. +If the nodename parameter is NULL, the function will wait for all nodes to reach the specified +LSN. If the target LSN is NULL, it will wait for the current wal_flush_lsn.

+
BDR5.6.1
Enhancements in SO Node Management and Progress Tracking.

An update addresses the movement of group slots in SO nodes, ensuring they don't appear as peers in +progress updates. Improvements include enhanced watermark management for SO leaders in the Himesh +configuration, where write leaders now include watermarks in their updates. Watermarks are broadcasted +to simplify progress tracking on idle clusters. The peer progress mapping for SO nodes has been corrected, +and the tap test for group slot movement has been revised. +Additionally, the bdr_get_all_origins function now considers SO node origins.

+
BDR5.6.1
Communicating LSN Progress in Optimized Topology Configurations.

While there are no connections from non-leader data nodes to subscriber-only nodes in an optimized +topology configuration, the LSN progress of all data nodes is periodically communicated to these +subscriber-only nodes through logical replication.

+
+ + +## Bug Fixes + + + + + + + + +
ComponentVersionDescriptionAddresses
BDR5.6.1
Address walsender crash that happend during configuration reload.

Ensure that pglogical GUCs are overridden only when operating within the pglogical worker. +If this is not the case, MyPGLogicalWorker will be NULL, resulting in a segmentation fault +when the walsender attempts a configuration reload from the +pgl_wait_for_standby_confirmation() function.

+
42100
BDR5.6.1
Fix unintended eager connection related to consensus connections among Subscriber Only group members

The msgbroker module used to establish consensus connections lazily, meaning that connections +were created only when the first message was sent to a specific destination. This method +negatively affected the latency of Raft leader elections. The behavior was modified to create +connections to consensus peers eagerly. However, this change resulted in an unintended +consequence: a fully meshed consensus network among subscriber-only nodes, which may conflict +with customer network designs. This patch keeps the eager connection setup but limits it to +voting nodes only, reverting to a lazy connection setup for non-voting nodes.

+
42041
BDR5.6.1
Fix autopatition task scheduling.

To improve reliability, shuffle the scheduling of autopartition tasks. This way, tasks +that are prone to failure won't consistently impact the success of other tasks.

+
41998
BDR5.6.1
Fix parting subscription with standbys.

The parting subscription used to hang, failing to wait for standbys when the +bdr.standby_slot_names parameter was defined.

+
41821
BDR5.6.1
Fix parting SO node with multiple origins.

All relevant origins must be removed when parting SO node +With himesh, parting an SO node should result in removing all origins it +has, not just the one related to its SO group leader. +When parting a data node, even though there is no subscription to it +from SO node, the origin should be removed +DO not make SO node target of a part catchup subscription when himesh +enabled

+
BDR5.6.1
Don't create slots for subscriber only nodes on witness nodes.

Subscriber only nodes should not have slots on witness nodes.

+
+ + diff --git a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml index 3908c435fea..2d691a04ab8 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml +++ b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml @@ -18,7 +18,7 @@ relnotes: Support for Postgres 17 has been added for all flavors (PG, PGE, and EPAS) starting with 17.2. jira: BDR-5410 addresses: "" - type: Enhancement + type: Feature severity: High impact: High - relnote: ARM64 Processor Support @@ -28,7 +28,7 @@ relnotes: Support ARM architecture for EDB Postgres Distributed on Debian 12 and RHEL 9. jira: BDR-5410 addresses: "" - type: Enhancement + type: Feature severity: High impact: High - relnote: Address walsender crash that happend during configuration reload. @@ -41,7 +41,7 @@ relnotes: pgl_wait_for_standby_confirmation() function. jira: BDR-5661 addresses: "42100" - type: Enhancement + type: Bug-fix severity: High impact: High - relnote: Fix unintended eager connection related to consensus connections among Subscriber Only group members @@ -95,7 +95,7 @@ relnotes: LSN. If the `target` LSN is NULL, it will wait for the current `wal_flush_lsn`. jira: BDR-5200 addresses: "" - type: Bug-fix + type: Enhancement severity: High impact: High - relnote: Enhancements in SO Node Management and Progress Tracking. From c1bd56a7a159da7e6fab76f6bf6e8c84eb1624da Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Thu, 21 Nov 2024 09:25:21 +0000 Subject: [PATCH 26/35] Added proxy rel note, set past tense. Signed-off-by: Dj Walker-Morgan --- .../pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx | 31 +++++++------- .../pgd/5.6/rel_notes/src/relnote_5.6.1.yml | 40 ++++++++++++------- 2 files changed, 42 insertions(+), 29 deletions(-) diff --git a/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx b/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx index 0f3d540302e..ac5e69aaf0a 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx +++ b/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx @@ -9,15 +9,16 @@ EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. ## Highlights -- Add Postgres 17 support -- ARM64 Processor support +- Postgres 17 support +- ARM64 processor support ## Features - - +
ComponentVersionDescriptionAddresses
BDR5.6.1
Add Postgres 17 support

Support for Postgres 17 has been added for all flavors (PG, PGE, and EPAS) starting with 17.2.

+ + -
ComponentVersionDescriptionAddresses
BDR5.6.1
Added Postgres 17 support

Support for Postgres 17 has been added for all flavors (PostgreSQL, EDB Postgres Extended, +and EDB Postgres Advanced Server) starting with version 17.2.

BDR5.6.1
ARM64 Processor Support

Support ARM architecture for EDB Postgres Distributed on Debian 12 and RHEL 9.

+
BDR5.6.1
Added ARM64 processor Support

Support ARM architecture for EDB Postgres Distributed on Debian 12 and RHEL 9.

@@ -25,7 +26,7 @@ EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. ## Enhancements - - - @@ -50,12 +51,12 @@ subscriber-only nodes through logical replication.

## Bug Fixes
ComponentVersionDescriptionAddresses
BDR5.6.1
Add bdr.wait_node_confirm_lsn().

The function bdr.wait_node_confirm_lsn() has been introduced to wait until a specific node +

BDR5.6.1
Added bdr.wait_node_confirm_lsn().

The function bdr.wait_node_confirm_lsn() has been introduced to wait until a specific node reaches a designated Log Sequence Number (LSN). It first checks the confirmed_flush_lsn of the replication slot for the specified node. If that information is not available, the function connects to the node and queries pg_replication_origin_progress(), using the invoking node as @@ -33,14 +34,14 @@ the origin. If the nodename parameter is NULL, the function will wait for all nodes to reach the specified LSN. If the target LSN is NULL, it will wait for the current wal_flush_lsn.

BDR5.6.1
Enhancements in SO Node Management and Progress Tracking.

An update addresses the movement of group slots in SO nodes, ensuring they don't appear as peers in +

BDR5.6.1
Improvements made in SO Node Management and Progress Tracking.

An update addresses the movement of group slots in SO nodes, ensuring they don't appear as peers in progress updates. Improvements include enhanced watermark management for SO leaders in the Himesh configuration, where write leaders now include watermarks in their updates. Watermarks are broadcasted to simplify progress tracking on idle clusters. The peer progress mapping for SO nodes has been corrected, and the tap test for group slot movement has been revised. Additionally, the bdr_get_all_origins function now considers SO node origins.

BDR5.6.1
Communicating LSN Progress in Optimized Topology Configurations.

While there are no connections from non-leader data nodes to subscriber-only nodes in an optimized +

BDR5.6.1
LSN Progress in Optimized Topology Configurations is now communicated.

While there are no connections from non-leader data nodes to subscriber-only nodes in an optimized topology configuration, the LSN progress of all data nodes is periodically communicated to these subscriber-only nodes through logical replication.

- - - - - - +
ComponentVersionDescriptionAddresses
BDR5.6.1
Address walsender crash that happend during configuration reload.

Ensure that pglogical GUCs are overridden only when operating within the pglogical worker. +

BDR5.6.1
Addressed walsender crash that happend during configuration reload.

Ensure that pglogical GUCs are overridden only when operating within the pglogical worker. If this is not the case, MyPGLogicalWorker will be NULL, resulting in a segmentation fault when the walsender attempts a configuration reload from the pgl_wait_for_standby_confirmation() function.

42100
BDR5.6.1
Fix unintended eager connection related to consensus connections among Subscriber Only group members

The msgbroker module used to establish consensus connections lazily, meaning that connections +

BDR5.6.1
Fixed unintended eager connection related to consensus connections among Subscriber Only group members

The msgbroker module used to establish consensus connections lazily, meaning that connections were created only when the first message was sent to a specific destination. This method negatively affected the latency of Raft leader elections. The behavior was modified to create connections to consensus peers eagerly. However, this change resulted in an unintended @@ -63,13 +64,13 @@ consequence: a fully meshed consensus network among subscriber-only nodes, which with customer network designs. This patch keeps the eager connection setup but limits it to voting nodes only, reverting to a lazy connection setup for non-voting nodes.

42041
BDR5.6.1
Fix autopatition task scheduling.

To improve reliability, shuffle the scheduling of autopartition tasks. This way, tasks +

BDR5.6.1
Fixed autopatition task scheduling.

To improve reliability, shuffle the scheduling of autopartition tasks. This way, tasks that are prone to failure won't consistently impact the success of other tasks.

41998
BDR5.6.1
Fix parting subscription with standbys.

The parting subscription used to hang, failing to wait for standbys when the +

BDR5.6.1
Fixed parting subscription with standbys.

The parting subscription used to hang, failing to wait for standbys when the bdr.standby_slot_names parameter was defined.

41821
BDR5.6.1
Fix parting SO node with multiple origins.

All relevant origins must be removed when parting SO node +

BDR5.6.1
Fixed parting SO node with multiple origins.

All relevant origins must be removed when parting SO node With himesh, parting an SO node should result in removing all origins it has, not just the one related to its SO group leader. When parting a data node, even though there is no subscription to it @@ -77,7 +78,9 @@ from SO node, the origin should be removed DO not make SO node target of a part catchup subscription when himesh enabled

BDR5.6.1
Don't create slots for subscriber only nodes on witness nodes.

Subscriber only nodes should not have slots on witness nodes.

+
BDR5.6.1
Stopped creation of slots for subscriber only nodes on witness nodes.

Subscriber only nodes should not have slots on witness nodes.

+
PGD Proxy5.6.1
Fixed routing strategy for read nodes.

Corrected routing strategy for read nodes after a network partition.

diff --git a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml index 2d691a04ab8..1691a41e8ed 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml +++ b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml @@ -8,20 +8,21 @@ meta: intro: | EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. highlights: | - - Add Postgres 17 support - - ARM64 Processor support + - Postgres 17 support + - ARM64 processor support relnotes: -- relnote: Add Postgres 17 support +- relnote: Added Postgres 17 support component: BDR component_version: 5.6.1 details: | - Support for Postgres 17 has been added for all flavors (PG, PGE, and EPAS) starting with 17.2. + Support for Postgres 17 has been added for all flavors (PostgreSQL, EDB Postgres Extended, + and EDB Postgres Advanced Server) starting with version 17.2. jira: BDR-5410 addresses: "" type: Feature severity: High impact: High -- relnote: ARM64 Processor Support +- relnote: Added ARM64 processor Support component: BDR component_version: 5.6.1 details: | @@ -31,7 +32,7 @@ relnotes: type: Feature severity: High impact: High -- relnote: Address walsender crash that happend during configuration reload. +- relnote: Addressed walsender crash that happend during configuration reload. component: BDR component_version: 5.6.1 details: | @@ -44,7 +45,7 @@ relnotes: type: Bug-fix severity: High impact: High -- relnote: Fix unintended eager connection related to consensus connections among Subscriber Only group members +- relnote: Fixed unintended eager connection related to consensus connections among Subscriber Only group members component: BDR component_version: 5.6.1 details: | @@ -60,7 +61,7 @@ relnotes: type: Bug-fix severity: High impact: High -- relnote: Fix autopatition task scheduling. +- relnote: Fixed autopatition task scheduling. component: BDR component_version: 5.6.1 details: | @@ -71,7 +72,7 @@ relnotes: type: Bug-fix severity: High impact: High -- relnote: Fix parting subscription with standbys. +- relnote: Fixed parting subscription with standbys. component: BDR component_version: 5.6.1 details: | @@ -82,7 +83,7 @@ relnotes: type: Bug-fix severity: High impact: High -- relnote: Add `bdr.wait_node_confirm_lsn()`. +- relnote: Added `bdr.wait_node_confirm_lsn()`. component: BDR component_version: 5.6.1 details: | @@ -98,7 +99,7 @@ relnotes: type: Enhancement severity: High impact: High -- relnote: Enhancements in SO Node Management and Progress Tracking. +- relnote: Improvements made in SO Node Management and Progress Tracking. component: BDR component_version: 5.6.1 details: | @@ -113,7 +114,7 @@ relnotes: type: Enhancement severity: High impact: High -- relnote: Communicating LSN Progress in Optimized Topology Configurations. +- relnote: LSN Progress in Optimized Topology Configurations is now communicated. component: BDR component_version: 5.6.1 details: | @@ -125,7 +126,7 @@ relnotes: type: Enhancement severity: High impact: High -- relnote: Fix parting SO node with multiple origins. +- relnote: Fixed parting SO node with multiple origins. component: BDR component_version: 5.6.1 details: | @@ -141,7 +142,7 @@ relnotes: type: Bug-fix severity: High impact: High -- relnote: Don't create slots for subscriber only nodes on witness nodes. +- relnote: Stopped creation of slots for subscriber only nodes on witness nodes. component: BDR component_version: 5.6.1 details: | @@ -151,4 +152,13 @@ relnotes: type: Bug-fix severity: High impact: High - +- relnote: Fixed routing strategy for read nodes. + component: PGD Proxy + component_version: 5.6.1 + details: | + Corrected routing strategy for read nodes after a network partition. + jira: BDR-5216 + addresses: "" + type: Bug-fix + severity: Medium + impact: Medium From 0c96fec798d57d3a3e744448c840773afe39487a Mon Sep 17 00:00:00 2001 From: Petr Jelinek Date: Thu, 21 Nov 2024 12:07:30 +0100 Subject: [PATCH 27/35] Update relnote_5.6.1.yml Add couple missing changes to release 5.6.1 notes --- .../pgd/5.6/rel_notes/src/relnote_5.6.1.yml | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml index 1691a41e8ed..e62ff6c7547 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml +++ b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml @@ -152,6 +152,30 @@ relnotes: type: Bug-fix severity: High impact: High +- relnote: Allow (some) disallowed DDL when bdr.permit_unsafe_commands is enabled + component: BDR + component_version: 5.6.1 + details: | + Some DDL commands can be safe in situations PGD does not allow them yet. For example rewriting + ALTER TABLE that only does immutable conversions. The `bdr.permit_unsafe_commands` now allows user + to override the safety check and execute the command anyway, if they are know the command is safe. + jira: "" + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Don't wait for DEGRADE clause in every session + component: BDR + component_version: 5.6.1 + details: | + When using commit scope with DEGRADE clause, the transactions are supposed to start in DEGRADE + mode already if system detects that it's in degraded state, so that the timeout is not + applied on every commit. + jira: BDR-5651 + addresses: "" + type: Bug-fix + severity: High + impact: High - relnote: Fixed routing strategy for read nodes. component: PGD Proxy component_version: 5.6.1 From abcbc1d28289fdc9c5263a8d773a34e09a9fb55a Mon Sep 17 00:00:00 2001 From: Petr Jelinek Date: Thu, 21 Nov 2024 13:56:11 +0100 Subject: [PATCH 28/35] Update ddl-command-handling.mdx Update allowed DDL commands and overrides --- .../docs/pgd/5.6/ddl/ddl-command-handling.mdx | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/product_docs/docs/pgd/5.6/ddl/ddl-command-handling.mdx b/product_docs/docs/pgd/5.6/ddl/ddl-command-handling.mdx index fad0aa6f068..9fdf01482ac 100644 --- a/product_docs/docs/pgd/5.6/ddl/ddl-command-handling.mdx +++ b/product_docs/docs/pgd/5.6/ddl/ddl-command-handling.mdx @@ -118,7 +118,7 @@ under the following table. | CREATE STATISTICS | Y | Y | DDL | | CREATE SUBSCRIPTION | Y | Y | DDL | | CREATE SYNONYM | Y | Y | DDL | -| CREATE TABLE | [Details](#bdr_ddl_allowed_CreateStmt) | Y | DDL | +| CREATE TABLE | Y | Y | DDL | | CREATE TABLE AS | [Details](#bdr_ddl_allowed_CreateTableAsStmt) | Y | DDL | | CREATE TABLESPACE | Y | N | N | | CREATE TEXT SEARCH CONFIGURATION | Y | Y | DDL | @@ -253,10 +253,12 @@ Some variants of `ALTER TABLE` currently aren't allowed on a PGD node: - `ADD COLUMN ... DEFAULT (non-immutable expression)` — This is not allowed because it currently results in different data on different nodes. See [Adding a column](ddl-workarounds/#adding-a-column) for a suggested workaround. -- `ALTER TABLE ... SET WITH[OUT] OIDS` — Isn't supported for the same reasons - as in `CREATE TABLE`. + This can be overriden using `bdr.permit_unsafe_commands` if user is sure the command is + safe. - `ALTER COLUMN ... SET STORAGE external` — Is rejected if the column is one of the columns of the replica identity for the table. + This can be overriden using `bdr.permit_unsafe_commands` if user is sure the command is + safe. - `RENAME` — Can't rename an Autopartitioned table. - `SET SCHEMA` — Can't set the schema of an Autopartitioned table. - `ALTER COLUMN ... TYPE` — Changing a column's type isn't supported if the @@ -272,6 +274,8 @@ Some variants of `ALTER TABLE` currently aren't allowed on a PGD node: AccessExclusiveLock for extended periods on larger tables, so such commands are likely to be infeasible on highly available databases in any case. See [Changing a column's type](ddl-workarounds/#changing-a-columns-type) for a suggested workaround. + This can be overriden using `bdr.permit_unsafe_commands` if user is sure the command is + safe. - `ALTER TABLE ... ADD FOREIGN KEY` — Isn't supported if current user doesn't have permission to read the referenced table or if the referenced table has RLS restrictions enabled that the current user can't bypass. @@ -500,13 +504,6 @@ break the replication due to the `writer` worker throwing the error: `cannot cha Generally `CREATE SEQUENCE` is supported, but when using global sequences, some options have no effect. -
- -### CREATE TABLE - -Generally `CREATE TABLE` is supported, but `CREATE TABLE WITH OIDS` isn't -allowed on a PGD node. -
### CREATE TABLE AS and SELECT INTO From 2cb24b6b187d1393e34d3b5a7841eb299eeeed24 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Thu, 21 Nov 2024 14:11:38 +0000 Subject: [PATCH 29/35] Final edits for 5.6.1 release notes Signed-off-by: Dj Walker-Morgan --- .../docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx | 6 +++++- .../docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml | 12 ++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx b/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx index ac5e69aaf0a..7d5b4b340b4 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx +++ b/product_docs/docs/pgd/5.6/rel_notes/pgd_5.6.1_rel_notes.mdx @@ -14,7 +14,7 @@ EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. ## Features - +
ComponentVersionDescriptionAddresses
@@ -45,6 +45,8 @@ Additionally, the bdr_get_all_origins function now considers SO nod topology configuration, the LSN progress of all data nodes is periodically communicated to these subscriber-only nodes through logical replication.

+
ComponentVersionDescriptionAddresses
BDR5.6.1
Added Postgres 17 support

Support for Postgres 17 has been added for all flavors (PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server) starting with version 17.2.

BDR5.6.1
Some DDL commands are now allowed by bdr.permit_unsafe_commands when set.

The bdr.permit_unsafe_commands parameter now allows some DDL commands that were previously disallowed. Specifically ALTER COLUMN...TYPE...USING can now be permitted if the user knows the operation is safe.

+
@@ -80,6 +82,8 @@ enabled

BDR5.6.1
Stopped creation of slots for subscriber only nodes on witness nodes.

Subscriber only nodes should not have slots on witness nodes.

BDR5.6.1
Ensure no waiting for DEGRADE timeout when in an already degraded state.

When using commit scope with DEGRADE clause, if system detects that it's in degraded state, transactions should start in the DEGRADE mode. This ensures that the timeout is not applied on every commit.

+
PGD Proxy5.6.1
Fixed routing strategy for read nodes.

Corrected routing strategy for read nodes after a network partition.

diff --git a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml index e62ff6c7547..ddfd29bf032 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml +++ b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml @@ -152,25 +152,21 @@ relnotes: type: Bug-fix severity: High impact: High -- relnote: Allow (some) disallowed DDL when bdr.permit_unsafe_commands is enabled +- relnote: Some DDL commands are now allowed by `bdr.permit_unsafe_commands` when set. component: BDR component_version: 5.6.1 details: | - Some DDL commands can be safe in situations PGD does not allow them yet. For example rewriting - ALTER TABLE that only does immutable conversions. The `bdr.permit_unsafe_commands` now allows user - to override the safety check and execute the command anyway, if they are know the command is safe. + The `bdr.permit_unsafe_commands` parameter now allows some DDL commands that were previously disallowed. Specifically `ALTER COLUMN...TYPE...USING` can now be permitted if the user knows the operation is safe. jira: "" addresses: "" type: Enhancement severity: High impact: High -- relnote: Don't wait for DEGRADE clause in every session +- relnote: Ensure no waiting for DEGRADE timeout when in an already degraded state. component: BDR component_version: 5.6.1 details: | - When using commit scope with DEGRADE clause, the transactions are supposed to start in DEGRADE - mode already if system detects that it's in degraded state, so that the timeout is not - applied on every commit. + When using commit scope with DEGRADE clause, if system detects that it's in degraded state, transactions should start in the DEGRADE mode. This ensures that the timeout is not applied on every commit. jira: BDR-5651 addresses: "" type: Bug-fix From ec99b4eda983b47bf66e848fc0780437eb384d47 Mon Sep 17 00:00:00 2001 From: gvasquezvargas Date: Mon, 25 Nov 2024 12:11:23 +0100 Subject: [PATCH 30/35] PGE 17: version bumps --- .../pge/17/installing/component_locations.mdx | 36 +++++++++---------- .../docs/pge/17/upgrading/major_upgrade.mdx | 32 ++++++++--------- .../upgrading/minor_upgrade/apt_upgrade.mdx | 12 +++---- .../upgrading/minor_upgrade/dnf_upgrade.mdx | 30 ++++++++-------- 4 files changed, 55 insertions(+), 55 deletions(-) diff --git a/product_docs/docs/pge/17/installing/component_locations.mdx b/product_docs/docs/pge/17/installing/component_locations.mdx index 90d1525fda4..4c4a1f70932 100644 --- a/product_docs/docs/pge/17/installing/component_locations.mdx +++ b/product_docs/docs/pge/17/installing/component_locations.mdx @@ -15,19 +15,19 @@ The RPM installers place EDB Postgres Extended Server components in the director | Component | Location | |-----------------------------|--------------------------------| -| Executables | `/usr/edb/pge16/bin` | -| Libraries | `/usr/edb/pge16/lib` | -| Cluster configuration files | `/var/lib/edb-pge/16` | -| Documentation | `/usr/edb/pge16/share/man` | -| Contrib | `/usr/edb/pge16/share/contrib` | -| Data | `/var/lib/edb-pge/16/data` | -| Logs | `/var/log/edb/pge16` | -| Lock files | `/var/lock/edb/pge16` | -| Backup area | `/var/lib/edb-pge/16/backups` | -| Templates | `/usr/edb/pge16/share` | -| Procedural Languages | `/usr/edb/pge16/lib` | -| Development Headers | `/usr/edb/pge16/include` | -| Shared data | `/usr/edb/pge16/share` | +| Executables | `/usr/edb/pge17/bin` | +| Libraries | `/usr/edb/pge17/lib` | +| Cluster configuration files | `/var/lib/edb-pge/17` | +| Documentation | `/usr/edb/pge17/share/man` | +| Contrib | `/usr/edb/pge17/share/contrib` | +| Data | `/var/lib/edb-pge/17/data` | +| Logs | `/var/log/edb/pge17` | +| Lock files | `/var/lock/edb/pge17` | +| Backup area | `/var/lib/edb-pge/17/backups` | +| Templates | `/usr/edb/pge17/share` | +| Procedural Languages | `/usr/edb/pge17/lib` | +| Development Headers | `/usr/edb/pge17/include` | +| Shared data | `/usr/edb/pge17/share` | ## Debian/Ubuntu Locations @@ -35,9 +35,9 @@ The Debian package manager places EDB Postgres Extended Server components in the | Component | Location | |-----------------------------|------------------------------------| -| Executables | `/usr/lib/edb-pge/16/bin` | -| Libraries | `/usr/lib/edb-pge/16/lib` | -| Cluster configuration files | `/var/lib/edb-pge/16/main` | -| Data | `/var/lib/edb-pge/16/main` | +| Executables | `/usr/lib/edb-pge/17/bin` | +| Libraries | `/usr/lib/edb-pge/17/lib` | +| Cluster configuration files | `/var/lib/edb-pge/17/main` | +| Data | `/var/lib/edb-pge/17/main` | | Logs | `/var/log/edb-pge/` | -| Lock files | `/var/lock/edb/pge16` | +| Lock files | `/var/lock/edb/pge17` | diff --git a/product_docs/docs/pge/17/upgrading/major_upgrade.mdx b/product_docs/docs/pge/17/upgrading/major_upgrade.mdx index c8845a87db4..711706ffbce 100644 --- a/product_docs/docs/pge/17/upgrading/major_upgrade.mdx +++ b/product_docs/docs/pge/17/upgrading/major_upgrade.mdx @@ -29,7 +29,7 @@ If a problem occurs during the upgrade process, you can [revert to the previous ## Worked example -This worked example upgrades an EDB Postgres Extended Server 15 database to EDB Postgres Extended Server 16. +This worked example upgrades an EDB Postgres Extended Server 16 database to EDB Postgres Extended Server 17. !!!note You can perform major upgrades of EDB Postgres Extended Server instances in the same way you upgrade an EDB Postgres Advanced Server installation. If you need more information about the pg_upgrade utility, command line options, troubleshooting, and more, see [Upgrading an installation with pg_upgrade](/epas/latest/upgrading/major_upgrade/). @@ -40,7 +40,7 @@ Use [pg_dumpall](https://www.postgresql.org/docs/current/app-pg-dumpall.html), [ ### Installing the target EDB Postgres Extended Server version -[Install EDB Postgres Extended Server](../installing/) version 16. Only install the packages. Don't perform any other configurations. +[Install EDB Postgres Extended Server](../installing/) version 17. Only install the packages. Don't perform any other configurations. ### Creating a target server @@ -49,20 +49,20 @@ If you don't want to create a new target instance but want to reuse an existing 1. As postgres, create an empty directory for the new server: ``` - mkdir /var/lib/edb-pge/16/upgrade_target + mkdir /var/lib/edb-pge/17/upgrade_target ``` 1. As root, ensure the postgres user owns the directory: ``` - sudo chown postgres /var/lib/edb-pge/16/upgrade_target - sudo chgrp postgres /var/lib/edb-pge/16/upgrade_target + sudo chown postgres /var/lib/edb-pge/17/upgrade_target + sudo chgrp postgres /var/lib/edb-pge/17/upgrade_target ``` 1. As postgres, initialize the new server: ``` - /usr/lib/edb-pge/16/bin/initdb -D /var/lib/edb-pge/16/upgrade_target + /usr/lib/edb-pge/17/bin/initdb -D /var/lib/edb-pge/17/upgrade_target ``` This command initializes a CONFIG directory with all configuration files for the encrypted server. @@ -72,19 +72,19 @@ If you don't want to create a new target instance but want to reuse an existing 1. Start the target server: ``` - /usr/lib/edb-pge/16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade_target start + /usr/lib/edb-pge/17/bin/pg_ctl -D /var/lib/edb-pge/17/upgrade_target start ``` !!!note You can also start the server with the `logfile` option enabled to print errors into a logfile: - `/usr/lib/edb-pge/16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade_target -l logfile start` + `/usr/lib/edb-pge/17/bin/pg_ctl -D /var/lib/edb-pge/17/upgrade_target -l logfile start` In this case, ensure the postgres user has rights to write to the log directory. 1. Connect to the server: ``` - /usr/lib/edb-pge/16/bin/psql -p 5432 + /usr/lib/edb-pge/17/bin/psql -p 5432 ``` !!!note @@ -97,8 +97,8 @@ If you don't want to create a new target instance but want to reuse an existing 1. Stop both the source and target servers: ``` - /usr/lib/edb-pge/15/bin/pg_ctl -D /var/lib/edb-pge/15/upgrade-source stop - /usr/lib/edb-pge/16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade-target stop + /usr/lib/edb-pge/16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade-source stop + /usr/lib/edb-pge/17/bin/pg_ctl -D /var/lib/edb-pge/17/upgrade-target stop ``` 1. To test for incompatibilities, run the `pg_upgrade` command in check mode. @@ -106,7 +106,7 @@ If you don't want to create a new target instance but want to reuse an existing With `-b` and `-B`, specify the source and target BIN directories. With `-d` and `-D`, specify the source and target CONFIG directories: ``` - /usr/lib/edb-pge/16/bin/pg_upgrade -b /usr/lib/edb-pge/15/bin -B /usr/lib/edb-pge/16/bin -d /var/lib/edb-pge/15/upgrade-source -D /var/lib/edb-pge/16/upgrade-target --check + /usr/lib/edb-pge/17/bin/pg_upgrade -b /usr/lib/edb-pge/16/bin -B /usr/lib/edb-pge/17/bin -d /var/lib/edb-pge/16/upgrade-source -D /var/lib/edb-pge/17/upgrade-target --check ``` !!!note @@ -115,19 +115,19 @@ If you don't want to create a new target instance but want to reuse an existing 1. To copy data from the source server to the target server, run the `pg_upgrade` command in normal mode: ``` - /usr/lib/edb-pge/16/bin/pg_upgrade -b /usr/lib/edb-pge/15/bin -B /usr/lib/edb-pge/16/bin -d /var/lib/edb-pge/15/upgrade-source -D /var/lib/edb-pge/16/upgrade-target + /usr/lib/edb-pge/17/bin/pg_upgrade -b /usr/lib/edb-pge/16/bin -B /usr/lib/edb-pge/17/bin -d /var/lib/edb-pge/16/upgrade-source -D /var/lib/edb-pge/17/upgrade-target ``` 1. Start the target server: ``` - /usr/lib/edb-pge/16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade-target start + /usr/lib/edb-pge/17/bin/pg_ctl -D /var/lib/edb-pge/17/upgrade-target start ``` 1. Connect to the target database server: ``` - /usr/lib/edb-as/16/bin/psql -p 5432 + /usr/lib/edb-as/17/bin/psql -p 5432 ``` 1. Perform a spot check to ensure the databases, tables, schemas, and resources you had in the unencrypted server are available in the new server. For example, list all databases, explore the database objects, views, and so on. @@ -141,7 +141,7 @@ After you verify that pg_upgrade migrated the data successfully, and the service 1. Clean up the database and its statistics: ``` - /usr/lib/edb-pge/16/bin/vacuumdb --all --analyze-in-stages + /usr/lib/edb-pge/17/bin/vacuumdb --all --analyze-in-stages ``` 1. Remove all data files of the unencrypted server with the script generated by `pg_upgrade`: diff --git a/product_docs/docs/pge/17/upgrading/minor_upgrade/apt_upgrade.mdx b/product_docs/docs/pge/17/upgrading/minor_upgrade/apt_upgrade.mdx index 18cc18753e7..4ae55beda71 100644 --- a/product_docs/docs/pge/17/upgrading/minor_upgrade/apt_upgrade.mdx +++ b/product_docs/docs/pge/17/upgrading/minor_upgrade/apt_upgrade.mdx @@ -22,10 +22,10 @@ If you used `apt-get` to install a Debian package of EDB Postgres Extended Serve sudo apt-get install ``` - For example, if you want to upgrade to the latest minor version of EDB Postgres Extended Server 16, run: + For example, if you want to upgrade to the latest minor version of EDB Postgres Extended Server 17, run: ```shell - sudo apt-get install edb-postgresextended-16 + sudo apt-get install edb-postgresextended-17 ``` !!!Note @@ -38,19 +38,19 @@ If you used `apt-get` to install a Debian package of EDB Postgres Extended Serve 1. To finalize the upgrade, restart the server. Replace `` with the path to the data directory of the server or servers you're upgrading: ```shell - /usr/lib/edb-pge/16/bin/pg_ctl -D restart + /usr/lib/edb-pge/17/bin/pg_ctl -D restart ``` For example: ```shell - /usr/lib/edb-pge/16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade restart + /usr/lib/edb-pge/17/bin/pg_ctl -D /var/lib/edb-pge/17/upgrade restart ``` 1. Verify the expected database version is running by connecting to psql: ```shell - /usr/lib/edb-pge/16/bin/psql + /usr/lib/edb-pge/17/bin/psql ``` Check the server version: @@ -60,6 +60,6 @@ If you used `apt-get` to install a Debian package of EDB Postgres Extended Serve __OUTPUT__ server_version -------------------------------------------------------------------- - 16.3 (EDB Postgres Extended Server 16.3.0) (Ubuntu 0:16.3-1.jammy) + 17.2 (EDB Postgres Extended Server 17.2.0) (Ubuntu 0:17.2-1.jammy) (1 row) ``` diff --git a/product_docs/docs/pge/17/upgrading/minor_upgrade/dnf_upgrade.mdx b/product_docs/docs/pge/17/upgrading/minor_upgrade/dnf_upgrade.mdx index c5b91cb3063..821e2790674 100644 --- a/product_docs/docs/pge/17/upgrading/minor_upgrade/dnf_upgrade.mdx +++ b/product_docs/docs/pge/17/upgrading/minor_upgrade/dnf_upgrade.mdx @@ -24,10 +24,10 @@ If you used `dnf` to install an RPM package of EDB Postgres Extended Server (on sudo dnf check-update ``` - For example, if you want to upgrade to the latest minor version of EDB Postgres Extended Server 16, run: + For example, if you want to upgrade to the latest minor version of EDB Postgres Extended Server 17, run: ```shell - sudo dnf check-update edb-postgresextended16 + sudo dnf check-update edb-postgresextended17 ``` !!!Note @@ -36,16 +36,16 @@ If you used `dnf` to install an RPM package of EDB Postgres Extended Server (on 1. Once you've figured the name and version of the package you want to install, use `dnf update` to install the package: ```shell - sudo dnf update edb-postgresextended16 + sudo dnf update edb-postgresextended17 __OUTPUT__ ================================================================================ Package Arch Version Repository Size ================================================================================ Upgrading: - edb-postgresextended16 x86_64 16.3-2.el9 enterprisedb-enterprise 1.7 M - edb-postgresextended16-contrib x86_64 16.3-2.el9 enterprisedb-enterprise 724 k - edb-postgresextended16-libs x86_64 16.3-2.el9 enterprisedb-enterprise 330 k - edb-postgresextended16-server x86_64 16.3-2.el9 enterprisedb-enterprise 6.8 M + edb-postgresextended17 x86_64 17.2-1.el9 enterprisedb-enterprise 1.7 M + edb-postgresextended17-contrib x86_64 17.2-1.el9 enterprisedb-enterprise 724 k + edb-postgresextended17-libs x86_64 17.2-1.el9 enterprisedb-enterprise 330 k + edb-postgresextended17-server x86_64 17.2-1.el9 enterprisedb-enterprise 6.8 M Transaction Summary ================================================================================ @@ -60,28 +60,28 @@ If you used `dnf` to install an RPM package of EDB Postgres Extended Server (on ```shell y __OUTPUT__ - edb-postgresextended16-16.3-2.el9.x86_64 - edb-postgresextended16-contrib-16.3-2.el9.x86_64 - edb-postgresextended16-libs-16.3-2.el9.x86_64 - edb-postgresextended16-server-16.3-2.el9.x86_64 + edb-postgresextended17-17.2-1.el9.x86_64 + edb-postgresextended17-contrib-17.2-1.el9.x86_64 + edb-postgresextended17-libs-17.2-1.el9.x86_64 + edb-postgresextended17-server-17.2-1.el9.x86_64 ``` 1. To finalize the upgrade, restart the server. Replace `` with the path to the data directory of the server or servers you're upgrading: ```shell - /usr/edb/pge16/bin/pg_ctl -D restart + /usr/edb/pge17/bin/pg_ctl -D restart ``` For example: ```shell - /usr/edb/pge16/bin/pg_ctl -D /var/lib/edb-pge/16/upgrade restart + /usr/edb/pge17/bin/pg_ctl -D /var/lib/edb-pge/17/upgrade restart ``` 1. Verify the expected database version is running by connecting to psql: ```shell - /usr/edb/pge16/bin/psql + /usr/edb/pge17/bin/psql ``` Check the server version: @@ -91,6 +91,6 @@ If you used `dnf` to install an RPM package of EDB Postgres Extended Server (on __OUTPUT__ server_version -------------------------------------------- - 16.3 (EDB Postgres Extended Server 16.3.0) + 17.2 (EDB Postgres Extended Server 17.2.0) ``` \ No newline at end of file From cc1b6638c4056b9fee63ed3cefcf6498bc1a864f Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Thu, 21 Nov 2024 17:34:38 +0000 Subject: [PATCH 31/35] First import commit Signed-off-by: Dj Walker-Morgan --- product_docs/docs/tpa/23/architecture-M1.mdx | 97 +++++--- .../tpa/23/architecture-PGD-Always-ON.mdx | 10 +- product_docs/docs/tpa/23/reference/barman.mdx | 14 ++ product_docs/docs/tpa/23/reference/harp.mdx | 5 +- .../docs/tpa/23/reference/pgbouncer.mdx | 24 +- .../postgres_extension_configuration.mdx | 2 +- .../reference/tpaexec-download-packages.mdx | 2 +- product_docs/docs/tpa/23/rel_notes/index.mdx | 2 + .../src/draft/tpa_23.35_rel_notes.yml | 142 ----------- .../23/rel_notes/src/tpa_23.35_rel_notes.yml | 232 ++++++++++++++++++ .../tpa/23/rel_notes/tpa_23.35_rel_notes.mdx | 55 +++++ .../docs/tpa/23/tpaexec-configure.mdx | 25 +- product_docs/docs/tpa/23/tpaexec-hooks.mdx | 2 +- 13 files changed, 412 insertions(+), 200 deletions(-) delete mode 100644 product_docs/docs/tpa/23/rel_notes/src/draft/tpa_23.35_rel_notes.yml create mode 100644 product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml create mode 100644 product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx diff --git a/product_docs/docs/tpa/23/architecture-M1.mdx b/product_docs/docs/tpa/23/architecture-M1.mdx index 64718467585..848001483ce 100644 --- a/product_docs/docs/tpa/23/architecture-M1.mdx +++ b/product_docs/docs/tpa/23/architecture-M1.mdx @@ -5,11 +5,8 @@ originalFilePath: architecture-M1.md --- -A Postgres cluster with one or more active locations, each with the same -number of Postgres nodes and an extra Barman node. Optionally, there can -also be a location containing only a witness node, or a location -containing only a single node, even if the active locations have more -than one. +A Postgres cluster with a single primary node and physical replication +to a number of standby nodes including backup and failover management. This architecture is suitable for production and is also suited to testing, demonstrating and learning due to its simplicity and ability to @@ -19,25 +16,53 @@ If you select subscription-only EDB software with this architecture it will be sourced from EDB Repos 2.0 and you will need to [provide a token](reference/edb_repositories/). -## Application and backup failover - -The M1 architecture implements failover management in that it ensures -that a replica will be promoted to take the place of the primary should -the primary become unavailable. However it *does not provide any -automatic facility to reroute application traffic to the primary*. If -you require, automatic failover of application traffic you will need to -configure this at the application itself (for example using multi-host -connections) or by using an appropriate proxy or load balancer and the -facilities offered by your selected failover manager. - -The above is also true of the connection between the backup node and the -primary created by TPA. The backup will not be automatically adjusted to -target the new primary in the event of failover, instead it will remain -connected to the original primary. If you are performing a manual -failover and wish to connect the backup to the new primary, you may -simply re-run `tpaexec deploy`. If you wish to automatically change the -backup source, you should implement this using your selected failover -manager as noted above. +## Failover management + +The M1 architecture always includes a failover manager. Supported +options are repmgr, EDB Failover Manager (EFM) and Patroni. In all +cases, the failover manager will be configured by default to ensure that +a replica will be promoted to take the place of the primary should the +primary become unavailable. + +### Application failover + +The M1 architecture does not generally provide an automatic facility to +reroute application traffic to the primary. There are several ways you +can add this capability to your cluster. + +In TPA: + +- If you choose repmgr as the failover manager and enable PgBouncer, you + can include the `repmgr_redirect_pgbouncer: true` hash under + `cluster_vars` in `config.yml`. This causes repmgr to automatically + reconfigure PgBouncer to route traffic to the new primary on failover. + +- If you choose Patroni as the failover manager and enable PgBouncer, + Patroni will automatically reconfigure PgBouncer to route traffic to + the new primary on failover. + +- If you choose EFM as the failover manager, you can use the + `efm_conf_settings` hash under `cluster_vars` in `config.yml` to + [configure EFM to use a virtual IP address + (VIP)](/efm/latest/04_configuring_efm/05_using_vip_addresses/). This + is an additional IP address which will always route to the primary + node. + +- Place an appropriate proxy or load balancer between the cluster and + you application and use a [TPA hook](tpaexec-hooks/) to configure + your selected failover manager to update it with the route to the new + primary on failover. + +- Handle failover at the application itself, for example by using + multi-host connection strings. + +### Backup failover + +TPA does not configure any kind of 'backup failover'. If the Postgres +node from which you are backing up is down, backups will simply halt +until the node is back online. To manually connect the backup to the new +primary, edit `config.yml` to add the `backup` hash to the new primary +instance and re-run `tpaexec deploy`. ## Cluster configuration @@ -78,18 +103,18 @@ More detail on the options is provided in the following section. #### Additional Options -| Parameter | Description | Behaviour if omitted | -| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | -| `--platform` | One of `aws`, `docker`, `bare`. | Defaults to `aws`. | -| `--location-names` | A space-separated list of location names. The number of active locations is equal to the number of names supplied, minus one for each of the witness-only location and the single-node location if they are requested. | A single location called "main" is used. | -| `--primary-location` | The location where the primary server will be. Must be a member of `location-names`. | The first listed location is used. | -| `--data-nodes-per-location` | A number from 1 upwards. In each location, one node will be configured to stream directly from the cluster's primary node, and the other nodes, if present, will stream from that one. | Defaults to 2. | -| `--witness-only-location` | A location name, must be a member of `location-names`. | No witness-only location is added. | -| `--single-node-location` | A location name, must be a member of `location-names`. | No single-node location is added. | -| `--enable-haproxy` | 2 additional nodes will be added as a load balancer layer.
Only supported with Patroni as the failover manager. | HAproxy nodes will not be added to the cluster. | -| `--enable-pgbouncer` | PgBouncer will be configured in the Postgres nodes to pool connections for the primary. | PgBouncer will not be configured in the cluster. | -| `--patroni-dcs` | Select the Distributed Configuration Store backend for patroni.
Only option is `etcd` at this time.
Only supported with Patroni as the failover manager. | Defaults to `etcd`. | -| `--efm-bind-by-hostname` | Enable efm to use hostnames instead of IP addresses to configure the cluster `bind.address`. | Defaults to use IP addresses | +| Parameter | Description | Behaviour if omitted | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | +| `--platform` | One of `aws`, `docker`, `bare`. | Defaults to `aws`. | +| `--location-names` | A space-separated list of location names. The number of locations is equal to the number of names supplied. | A single location called "main" is used. | +| `--primary-location` | The location where the primary server will be. Must be a member of `location-names`. | The first listed location is used. | +| `--data-nodes-per-location` | A number from 1 upwards. In each location, one node will be configured to stream directly from the cluster's primary node, and the other nodes, if present, will stream from that one. | Defaults to 2. | +| `--witness-only-location` | A location name, must be a member of `location-names`. This location will be populated with a single witness node only. | No witness-only location is added. | +| `--single-node-location` | A location name, must be a member of `location-names`. This location will be populated with a single data node only. | No single-node location is added. | +| `--enable-haproxy` | Two additional nodes will be added as a load balancer layer.
Only supported with Patroni as the failover manager. | HAproxy nodes will not be added to the cluster. | +| `--enable-pgbouncer` | PgBouncer will be configured in the Postgres nodes to pool connections for the primary. | PgBouncer will not be configured in the cluster. | +| `--patroni-dcs` | Select the Distributed Configuration Store backend for patroni.
Only option is `etcd` at this time.
Only supported with Patroni as the failover manager. | Defaults to `etcd`. | +| `--efm-bind-by-hostname` | Enable efm to use hostnames instead of IP addresses to configure the cluster `bind.address`. | Defaults to use IP addresses |

diff --git a/product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx b/product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx index 948cf5d1aba..375317fa225 100644 --- a/product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx +++ b/product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx @@ -5,10 +5,10 @@ originalFilePath: architecture-PGD-Always-ON.md --- -!!! Note +!!!Note + This architecture is for Postgres Distributed 5 only. -If you require PGD 4 or 3.7 please use [BDR-Always-ON](architecture-BDR-Always-ON/). -!!! +If you require PGD 4 or 3.7 please use [BDR-Always-ON](BDR-Always-ON/). EDB Postgres Distributed 5 in an Always-ON configuration, suitable for use in test and production. @@ -85,9 +85,9 @@ data centre that provides a level of redundancy, in whatever way this definition makes sense to your use case. For example, AWS regions, your own data centres, or any other designation to identify where your servers are hosted. +!!! - -!!! Note Note for AWS users +!!! Note for AWS users If you are using TPA to provision an AWS cluster, the locations will be mapped to separate availability zones within the `--region` you diff --git a/product_docs/docs/tpa/23/reference/barman.mdx b/product_docs/docs/tpa/23/reference/barman.mdx index 80f7546e683..f0fd713c9d0 100644 --- a/product_docs/docs/tpa/23/reference/barman.mdx +++ b/product_docs/docs/tpa/23/reference/barman.mdx @@ -90,3 +90,17 @@ them to each other's authorized_keys file. The postgres user must be able to ssh to the barman server in order to archive WAL segments (if configured), and the barman user must be able to ssh to the Postgres instance to take or restore backups. + +## `barman` and `barman_role` Postgres users + +TPA will create two Postgres users, `barman` and `barman_role`. + +TPA versions `<23.35` created the `barman` Postgres user as a `superuser`. + +Beginning with `23.35` the `barman` user is created with `NOSUPERUSER`, +so any re-deploys on existing clusters will remove the `superuser` attribute +from the `barman` Postgres user. Instead, the `barman_role` is granted the +required set of privileges and the `barman` user is granted `barman_role` membership. + +This avoids granting the `superuser` attribute to the `barman` user, using the set +of privileges provided in the [Barman Manual](https://docs.pgbarman.org/release/latest/#postgresql-connection). diff --git a/product_docs/docs/tpa/23/reference/harp.mdx b/product_docs/docs/tpa/23/reference/harp.mdx index 281f9e5515a..27dfdc5a9ed 100644 --- a/product_docs/docs/tpa/23/reference/harp.mdx +++ b/product_docs/docs/tpa/23/reference/harp.mdx @@ -13,7 +13,7 @@ to `harp`, which is the default for BDR-Always-ON clusters. You must provide the `harp-manager` and `harp-proxy` packages. Please contact EDB to obtain access to these packages. -## Configuring HARP +## Variables for HARP configuration See the [HARP documentation](https://www.enterprisedb.com/docs/pgd/4/harp/04_configuration/) for more details on HARP configuration. @@ -41,6 +41,7 @@ for more details on HARP configuration. | `harp_proxy_max_client_conn` | `75` | Maximum number of client connections accepted by harp-proxy (`max_client_conn`) | | `harp_ssl_password_command` | None | a custom command that should receive the obfuscated sslpassword in the stdin and provide the handled sslpassword via stdout. | | `harp_db_request_timeout` | `10s` | similar to dcs -> request_timeout, but for connection to the database itself. | +| `harp_local_etcd_only` | None | limit harp manager endpoints list to only contain the local etcd node instead of all etcd nodes | You can use the [harp-config hook](../tpaexec-hooks/#harp-config) @@ -114,7 +115,7 @@ provide api endpoints to monitor service's health. The variable can contain these keys: -``` +```yaml enable: false secure: false cert_file: "/etc/tpa/harp_proxy/harp_proxy.crt" diff --git a/product_docs/docs/tpa/23/reference/pgbouncer.mdx b/product_docs/docs/tpa/23/reference/pgbouncer.mdx index 567d840caac..8e36b4528d6 100644 --- a/product_docs/docs/tpa/23/reference/pgbouncer.mdx +++ b/product_docs/docs/tpa/23/reference/pgbouncer.mdx @@ -1,16 +1,28 @@ --- -description: Adding pgbouncer to your Postgres cluster. -title: Configuring pgbouncer +description: Adding PgBouncer to your Postgres cluster. +title: Configuring PgBouncer originalFilePath: pgbouncer.md --- -TPA will install and configure pgbouncer on instances whose `role` +TPA will install and configure PgBouncer on instances whose `role` contains `pgbouncer`. -By default, pgbouncer listens for connections on port 6432 and forwards -connections to `127.0.0.1:5432` (which may be either Postgres or -[haproxy](haproxy/), depending on the architecture). +By default, PgBouncer listens for connections on port 6432 and, if no +`pgbouncer_backend` is specified, forwards connections to +`127.0.0.1:5432` (which may be either Postgres or [haproxy](haproxy/), +depending on the architecture). + +!!!Note Using PgBouncer to route traffic to the primary + +If you are using the M1 architecture with repmgr you can set +`repmgr_redirect_pgbouncer: true` hash under `cluster_vars` to have +PgBouncer connections directed to the primary. The PgBouncer will be +automatically updated on failover to route to the new primary. You +should use this option in combination with setting `pgbouncer_backend` +to the primary instance name to ensure that the cluster is initially +deployed with PgBouncer configured to route to the primary. +!!! You can set the following variables on any `pgbouncer` instance. diff --git a/product_docs/docs/tpa/23/reference/postgres_extension_configuration.mdx b/product_docs/docs/tpa/23/reference/postgres_extension_configuration.mdx index 6986d73ecc8..52ee6a54fa8 100644 --- a/product_docs/docs/tpa/23/reference/postgres_extension_configuration.mdx +++ b/product_docs/docs/tpa/23/reference/postgres_extension_configuration.mdx @@ -25,7 +25,7 @@ the package containing the extension. - [Adding the *vector* extension through configuration](reconciling-local-changes/) - [Specifying extensions for configured databases](postgres_databases/) -- [Including shared preload entries for extensions](postgresql.conf/#shared_preload_libraries) +- [Including shared preload entries for extensions](postgresql.conf/#shared-preload-libraries) - [Installing Postgres-related packages](postgres_installation_method_pkg/) ## TPA recognized extensions diff --git a/product_docs/docs/tpa/23/reference/tpaexec-download-packages.mdx b/product_docs/docs/tpa/23/reference/tpaexec-download-packages.mdx index 801d59d2ece..b548d2c526e 100644 --- a/product_docs/docs/tpa/23/reference/tpaexec-download-packages.mdx +++ b/product_docs/docs/tpa/23/reference/tpaexec-download-packages.mdx @@ -24,7 +24,7 @@ are supported. container of the target operating system and uses that system's package manager to resolve dependencies and download all necessary packages. The required Docker setup for download-packages is the same as that for - [using Docker as a deployment platform](../platform-docker). + [using Docker as a deployment platform](#platform-docker). ## Usage diff --git a/product_docs/docs/tpa/23/rel_notes/index.mdx b/product_docs/docs/tpa/23/rel_notes/index.mdx index 9a3fd7f6f59..651be5a8139 100644 --- a/product_docs/docs/tpa/23/rel_notes/index.mdx +++ b/product_docs/docs/tpa/23/rel_notes/index.mdx @@ -3,6 +3,7 @@ title: Trusted Postgres Architect release notes navTitle: Release notes description: Release notes for Trusted Postgres Architect and later navigation: + - tpa_23.35_rel_notes - tpa_23.34.1_rel_notes - tpa_23.34_rel_notes - tpa_23.33_rel_notes @@ -36,6 +37,7 @@ The Trusted Postgres Architect documentation describes the latest version of Tru | Trusted Postgres Architect version | Release Date | |---|---| +| [23.35](./tpa_23.35_rel_notes) | 25 Nov 2024 | | [23.34.1](./tpa_23.34.1_rel_notes) | 09 Sep 2024 | | [23.34](./tpa_23.34_rel_notes) | 22 Aug 2024 | | [23.33](./tpa_23.33_rel_notes) | 24 Jun 2024 | diff --git a/product_docs/docs/tpa/23/rel_notes/src/draft/tpa_23.35_rel_notes.yml b/product_docs/docs/tpa/23/rel_notes/src/draft/tpa_23.35_rel_notes.yml deleted file mode 100644 index a3c080918cd..00000000000 --- a/product_docs/docs/tpa/23/rel_notes/src/draft/tpa_23.35_rel_notes.yml +++ /dev/null @@ -1,142 +0,0 @@ -product: Trusted Postgres Architect -version: 23.35 -date: 29 October 2024 -intro: | - New features, enhancements, bug fixes, and other changes in Trusted Postgres Architect 23.35 include the following: -highlights: | - - More Trust - - More Postgres - - More Architect -relnotes: -- details: | - `PermissionsStartOnly` has been deprecated and is now achieved via `ExecStartPost=+/bin/bash...` syntax. - relnote: Remove deprecated `PermissionStartOnly` in postgres.service.j2 template - impact: low - jira: - - TPA-762 - type: Change -- details: | - Fixed a bug whereby the test that ensures the current pgd-proxy configuration - matches the expected configuration would fail for version < 5.5.0. This fix ensures - that TPA won't try to query configuration keys added in version 5.5.0. - impact: low - jira: - - TPA-819 - relnote: Fix tpaexec test for pgd-proxy config verification - type: Bug Fix -- details: | - The PostGIS package will automatically be added when a user specifies `postgis` - as an entry in either `postgres_extensions` or the list of extensions named under - `postgres_databases`. Also enables the CRB (Code Ready Builder) repository for - RHEL-compatible distributions so PostGIS dependencies can be installed. - impact: low - jira: - - TPA-771 - relnote: Add `postgis` to list of recognized extensions - type: Change -- details: | - Certain required privileges are granted to Postgres role, `barman_role`, - which is then granted to the `barman` Postgres user. This avoids creating the - `barman` user as a superuser. This role can also be granted to other Postgres - users by adding it to their `granted_roles` list using `postgres/createuser`. The - `barman_role` is created as part of the Barman tasks; if Barman is not used, this - role will not be created. Therefore, the task that grants privileges to this role - is only executed if the `barman_role` username is in the list of Postgres users - that are created. The ''barman'' user now has `NOSUPERUSER` explicitly specified - as a role attribute. If a cluster was deployed with a previous TPA version (which - created the ''barman'' user as a superuser), deploying with this version will - remove the `superuser` role attribute from the `barman` user. - impact: low - jira: - - TPA-148 - - TPA-818 - relnote: The `barman` Postgres user should not be a superuser - type: Change -- details: | - A `primary_slot_name` is configured on the primary node to ensure the - old primary uses a physical slot for replication during an EFM switchover. However, - ''bdr_init_physical'' attempts to use it for node initialisation and hangs indefinitely - since the slot does not exist in a PGD installation. This `primary_slot_name` - is now conditionally set explicitly when the `failover_manager` is EFM to avoid - setting it unnecessarily. - impact: low - jira: - - TPA-712 - relnote: '`primary_slot_name` added for EFM compatibility interferes with `bdr_init_physical` ' - type: Bug Fix -- details: | - If the `pgdcli_package_version` is specified in `config.yml`, the `bash-completion` - package is incorrectly named because the `packages_for` filter erroneously appends - the `pgdcli_package_version` to the package name. This results in an attempt - to download a nonexistant package. The `bash-completion` package is now appended - to the list after the `packages_for` filter, since it''s version is independent - from the `pgdcli_package_version`. - impact: low - jira: - - TPA-794 - relnote: Download correct `bash-completion` package version - type: Bug Fix -- details: | - Fixed an issue whereby in some cases error messages would be repeated - even after successful tasks. - impact: low - jira: - - TPA-812 - relnote: Clear error message stack after each task - type: Bug Fix -- details: | - Improve postgres-monitor script to better manage recoverable errors and - add retries on network errors to ensure that it won''t return failure when it - just didn't allow enough time for postgres service to be fully started. - impact: low - jira: - - TPA-796 - relnote: Improve postgres-monitor script - type: Change -- details: | - Fixed an issue whereby new replicas in patroni clusters would fail with - errors related to replication slots. - impact: low - jira: - - TPA-792 - - TPA-781 - relnote: Enable new replicas in patroni clusters - type: Bug Fix -- details: | - A support ticket questioned why the `pemserver` and `barman` nodes are - added to the `Allowed node host list` in EFM when they are not relevant to EFM - functions. Refactored the task that writes the `efm.node` configuration to only - include those nodes that have `efm` in their list of roles. - impact: low - jira: - - TPA-817 - relnote: Only add nodes with `efm` role to cluster `efm.nodes` file - type: Change -- details: | - 'If `--enable-pem` and `--enable-pg-backup-api` are passed to `tpaexec - configure`, `pem-agent` is added twice to the `barman` node if it is also a `witness`. Fixed - by by consolidating both `if` statements together to only evaluate the conditions - once. ' - impact: low - jira: - - TPA-793 - relnote: Add `pem-agent` role on barman nodes at most once for M1 architecture - type: Bug Fix -- details: | - Fixed a bug whereby if the user excluded the `pkg` selector, later pem-related - tasks would fail because the pem_python_executable fact had not been set. - impact: low - jira: - - TPA-814 - relnote: set pem_python_executable outside pkg role - type: Bug Fix -- details: | - The `--efm-install-path` and `--efm-cluster-name` flags are set when a PEM - server is registered on an EFM node. The `Streaming Replication`, `Failover - Manager Node Status` and `Failover Manager Cluster Info` probes are enabled when - a PEM agent is registered on an EFM node. ' - impact: low - jira: - - TPA-586 - relnote: Enable EFM probes when a PEM agent is registered on an EFM node - type: Change \ No newline at end of file diff --git a/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml b/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml new file mode 100644 index 00000000000..76c5f0fa288 --- /dev/null +++ b/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml @@ -0,0 +1,232 @@ +product: Trusted Postgres Architect +version: 23.35 +date: 25 November 2024 +intro: | + New features, enhancements, bug fixes, and other changes in Trusted Postgres Architect 23.35 include the following: +highlights: | + - Support for PGD Lightweight architecture + - Postgis is now a recognized extension. + - Docker `configure` creates named networks with static IP addresses. + - Support for RedHat Enterprise Linux 9 for ARM architectures. + - Support for PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server 17. + - Options for STIG/CIS compliance. + +relnotes: + - details: + "`PermissionsStartOnly` has been deprecated and is now achieved via `ExecStartPost=+/bin/bash...` + syntax" + impact: low + jira: + - TPA-762 + relnote: Remove deprecated `PermissionStartOnly` in postgres.service.j2 template + type: Change + - details: + Fixed a bug whereby the test that ensures the current pgd-proxy configuration + matches the expected configuration would fail for version < 5.5.0. This fix ensures + that TPA won't try to query configuration keys added in version 5.5.0. + impact: low + jira: + - TPA-819 + relnote: Fix tpaexec test for pgd-proxy config verification + type: Bug Fix + - details: + The PostGIS package will automatically be added when a user specifies `postgis` + as an entry in either `postgres_extensions` or the list of extensions named under + `postgres_databases`. Also enables the CRB (Code Ready Builder) repository for + RHEL-compatible distributions so PostGIS dependencies can be installed. + impact: low + jira: + - TPA-771 + relnote: Add `postgis` to list of recognized extensions + type: Enhancement + - details: + Certain required privileges are granted to Postgres role, `barman_role`, + which is then granted to the `barman` Postgres user. This avoids creating the + `barman` user as a superuser. This role can also be granted to other Postgres + users by adding it to their `granted_roles` list using `postgres/createuser`. + The `barman_role` is created as part of the Barman tasks; if Barman is not used, + this role will not be created. Therefore, the task that grants privileges to this + role is only executed if the `barman_role` username is in the list of Postgres + users that are created. The 'barman' user now has `NOSUPERUSER` explicitly specified + as a role attribute. If a cluster was deployed with a previous TPA version (which + created the 'barman' user as a superuser), deploying with this version will remove + the `superuser` role attribute from the `barman` user. + impact: low + jira: + - TPA-148 + - TPA-818 + relnote: The `barman` Postgres user is no longer a superuser + type: Change + - details: + Add new optional var `harp_local_etcd_only` available when using etcd with + HARP. This option tells HARP manager to connect to local etcd node. This recommendation + follows the best practices learnt by doing the same when `bdr` as consensus procotol + is being used. The default mode of adding multiple endpoints can lead to performance + issues in some cases. This option is added to give more control to the user. + impact: low + jira: + - TPA-821 + relnote: Add new option `harp_local_etcd_only` when using etcd with HARP + type: Change + addresses: 41931 + - details: + A `primary_slot_name` is configured on the primary node to ensure the old + primary uses a physical slot for replication during an EFM switchover. However, + 'bdr_init_physical' attempts to use it for node initialisation and hangs indefinitely + since the slot does not exist in a PGD installation. This `primary_slot_name` + is now conditionally set explicitly when the `failover_manager` is EFM to avoid + setting it unnecessarily. + impact: low + jira: + - TPA-712 + relnote: "Fix case where `primary_slot_name` added for EFM compatibility interferes with `bdr_init_physical`" + type: Bug Fix + addresses: 36064 + - details: + If the `pgdcli_package_version` is specified in `config.yml`, the `bash-completion` + package is incorrectly named because the `packages_for` filter erroneously appends + the `pgdcli_package_version` to the package name. This results in an attempt to + download a nonexistant package. The `bash-completion` package is now appended + to the list after the `packages_for` filter, since it's version is independent + from the `pgdcli_package_version`. + impact: low + jira: + - TPA-794 + relnote: Download correct `bash-completion` package version + type: Bug Fix + addresses: 38773 + - details: + TPA is now able to generate a PGD Lightweight architecture comprised of + three nodes in two locations (2 nodes in Primary and one in Disaster Recovery) + designed to ease migrations from physical replication. Users can now run `tpaexec + configure lw -a Lightweight --postgresql 15`. + impact: low + jira: + - TPA-838 + relnote: Add support for PGD Lightweight architecture + type: Enhancement + - details: + TPA now clears the error message stack after each task to ensure messages + are not spuriously repeated + impact: low + jira: + - TPA-812 + relnote: + Fix an issue whereby in some cases error messages would be repeated even + after successful tasks. + type: Bug Fix + - details: + Improve postgres-monitor script to better manage recoverable errors and + add retries on network errors to ensure that it won't return failure when it just + didn't allow enough time for postgres service to be fully started. + impact: low + jira: + - TPA-796 + relnote: Improve postgres-monitor script + type: Change + addresses: 39191 + - details: + Fixed an issue whereby new replicas in Patroni clusters would fail with + errors related to replication slots. + impact: low + jira: + - TPA-792 + - TPA-781 + relnote: Fix issue that prevented the addition of replicas to Patroni clusters + type: Bug Fix + - details: Previously the `pemserver` and `barman` nodes were + added to the `Allowed node host list` in EFM when they were not relevant to EFM + functions. Refactored the task that writes the `efm.node` configuration to only + include those nodes that have `efm` in their list of roles. + impact: low + jira: + - TPA-817 + relnote: Only add nodes with `efm` role to cluster `efm.nodes` file + type: Change + - details: + If `--enable-pem` and `--enable-pg-backup-api` are passed to `tpaexec configure`, + `pem-agent` is added twice to the `barman` node if it is also a `witness`. Fixed + by consolidating both `if` statements together to only evaluate the conditions + once. + impact: low + jira: + - TPA-793 + relnote: Add `pem-agent` role on barman nodes at most once for M1 architecture + type: Bug Fix + - details: + Fixed a bug whereby if the user excluded the `pkg` selector, later PEM-related + tasks would fail because the `pem_python_executable` fact had not been set. + impact: low + jira: + - TPA-814 + relnote: Set `pem_python_executable` outside of the `pkg` role + type: Bug Fix + - details: + The `--efm-install-path` and `--efm-cluster-name` flags are set when a + PEM server is registered on an EFM node. The `Streaming Replication`, `Failover + Manager Node Status` and `Failover Manager Cluster Info` probes are enabled when + a PEM agent is registered on an EFM node. + impact: low + jira: + - TPA-586 + relnote: Enable EFM probes when a PEM agent is registered on an EFM node + type: Enhancement + - details: + TPA now supports command-line options to create a cluster configured to + conform to many of the requirements of the STIG and CIS security standards. These + options cause TPA to set postgresql.conf settings as defined in the relevant + standards, to install required extensions, to configure other aspects of system + behaviour such as filesystem permissions and user connection limits, and to check + for other requirements such as FIPS crypto standards which TPA can't directly + impose. The clusters thus generated are not certified by TPA to conform to the + standards, but much of the groundwork of creating a conforming cluster is now + automated. + impact: low + jira: + - TPA-366 + - TPA-836 + - TPA-837 + relnote: Support STIG/CIS compliance + type: Enhancement + - details: + The configure command will now automatically add a named network and static + IP addresses to config.yml when Docker is the selected platform. The network name + is the same as the cluster name and the address range follows the existing semantics + of the --network option with the exception that only one subnet is used for the + whole cluster rather than one per location. If a subnet prefix is not specified + by the user, TPA will attempt to select a prefix which results in a subnet large + enough to fit the whole cluster. The key `ip_address` may now be used to specify + a static IP for a Docker instance as long as a named network is specified in the + config.yml. + impact: low + jira: + - TPA-261 + - TPA-407 + - TPA-434 + relnote: Have `configure` create a user-defined network on Docker + type: Enhancement + - details: Packages are now published targeting RHEL 9 ARM64, and TPA supports + deployments using this architecture and OS. Also updated the list of supported + AWS images to include the RedHat 9 ARM64 AMI provided by Amazon. The default `instance_type` + for ARM64 EC2 instances has been updated from `a1` to `t4g`, which is the current + generation processor available for burstable general purpose workloads. + impact: low + jira: + - TPA-780 + relnote: Support RedHat Enterprise Linux 9 for ARM architectures + type: Enhancement + - details: + Clusters can be configured to use PostgreSQL, EDB Postgres Extended and + EDB Postgres Advanced Server version 17. Barman no longer needs to install the + postgres server package to get the `pg_receivewal` binary when using EDB Postgres + Advanced Server 17 or EDB Postgres Extended 17 since the binary has been added + to the client package for these versions. TPA raises an architecture error when a cluster + is configured with `repmgr` as the failover_manager as it is not available for + Postgres 17. Updated documentation to reflect supported versions. + impact: low + jira: + - TPA-803 + relnote: + Support PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server + 17 + type: Enhancement \ No newline at end of file diff --git a/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx b/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx new file mode 100644 index 00000000000..bb3646a6512 --- /dev/null +++ b/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx @@ -0,0 +1,55 @@ +--- +title: Trusted Postgres Architect 23.35 release notes +navTitle: Version 23.35 +--- + +Released: 25 November 2024 + +New features, enhancements, bug fixes, and other changes in Trusted Postgres Architect 23.35 include the following: + +## Highlights + +- Support for PGD Lightweight architecture +- Postgis is now a recognized extension. +- Docker `configure` creates named networks with static IP addresses. +- Support for RedHat Enterprise Linux 9 for ARM architectures. +- Support for PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server 17. +- Options for STIG/CIS compliance. + +## Enhancements + + + + + + + + + +
DescriptionAddresses
Add postgis to list of recognized extensions

The PostGIS package will automatically be added when a user specifies postgis as an entry in either postgres_extensions or the list of extensions named under postgres_databases. Also enables the CRB (Code Ready Builder) repository for RHEL-compatible distributions so PostGIS dependencies can be installed.

Add support for PGD Lightweight architecture

TPA is now able to generate a PGD Lightweight architecture comprised of three nodes in two locations (2 nodes in Primary and one in Disaster Recovery) designed to ease migrations from physical replication. Users can now run tpaexec configure lw -a Lightweight --postgresql 15.

Enable EFM probes when a PEM agent is registered on an EFM node

The --efm-install-path and --efm-cluster-name flags are set when a PEM server is registered on an EFM node. The Streaming Replication, Failover Manager Node Status and Failover Manager Cluster Info probes are enabled when a PEM agent is registered on an EFM node.

Support STIG/CIS compliance

TPA now supports command-line options to create a cluster configured to conform to many of the requirements of the STIG and CIS security standards. These options cause TPA to set postgresql.conf settings as defined in the relevant standards, to install required extensions, to configure other aspects of system behaviour such as filesystem permissions and user connection limits, and to check for other requirements such as FIPS crypto standards which TPA can't directly impose. The clusters thus generated are not certified by TPA to conform to the standards, but much of the groundwork of creating a conforming cluster is now automated.

Have configure create a user-defined network on Docker

The configure command will now automatically add a named network and static IP addresses to config.yml when Docker is the selected platform. The network name is the same as the cluster name and the address range follows the existing semantics of the --network option with the exception that only one subnet is used for the whole cluster rather than one per location. If a subnet prefix is not specified by the user, TPA will attempt to select a prefix which results in a subnet large enough to fit the whole cluster. The key ip_address may now be used to specify a static IP for a Docker instance as long as a named network is specified in the config.yml.

Support RedHat Enterprise Linux 9 for ARM architectures

Packages are now published targeting RHEL 9 ARM64, and TPA supports deployments using this architecture and OS. Also updated the list of supported AWS images to include the RedHat 9 ARM64 AMI provided by Amazon. The default instance_type for ARM64 EC2 instances has been updated from a1 to t4g, which is the current generation processor available for burstable general purpose workloads.

Support PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server 17

Clusters can be configured to use PostgreSQL, EDB Postgres Extended and EDB Postgres Advanced Server version 17. Barman no longer needs to install the postgres server package to get the pg_receivewal binary when using EDB Postgres Advanced Server 17 or EDB Postgres Extended 17 since the binary has been added to the client package for these versions. TPA raises an architecture error when a cluster is configured with repmgr as the failover_manager as it is not available for Postgres 17. Updated documentation to reflect supported versions.

+ + +## Changes + + + + + + + +
DescriptionAddresses
Remove deprecated PermissionStartOnly in postgres.service.j2 template

PermissionsStartOnly has been deprecated and is now achieved via ExecStartPost=+/bin/bash... syntax

The barman Postgres user is no longer a superuser

Certain required privileges are granted to Postgres role, barman_role, which is then granted to the barman Postgres user. This avoids creating the barman user as a superuser. This role can also be granted to other Postgres users by adding it to their granted_roles list using postgres/createuser. The barman_role is created as part of the Barman tasks; if Barman is not used, this role will not be created. Therefore, the task that grants privileges to this role is only executed if the barman_role username is in the list of Postgres users that are created. The 'barman' user now has NOSUPERUSER explicitly specified as a role attribute. If a cluster was deployed with a previous TPA version (which created the 'barman' user as a superuser), deploying with this version will remove the superuser role attribute from the barman user.

Add new option harp_local_etcd_only when using etcd with HARP

Add new optional var harp_local_etcd_only available when using etcd with HARP. This option tells HARP manager to connect to local etcd node. This recommendation follows the best practices learnt by doing the same when bdr as consensus procotol is being used. The default mode of adding multiple endpoints can lead to performance issues in some cases. This option is added to give more control to the user.

41931
Improve postgres-monitor script

Improve postgres-monitor script to better manage recoverable errors and add retries on network errors to ensure that it won't return failure when it just didn't allow enough time for postgres service to be fully started.

39191
Only add nodes with efm role to cluster efm.nodes file

Previously the pemserver and barman nodes were added to the Allowed node host list in EFM when they were not relevant to EFM functions. Refactored the task that writes the efm.node configuration to only include those nodes that have efm in their list of roles.

+ + +## Bug Fixes + + + + + + + + + +
DescriptionAddresses
Fix tpaexec test for pgd-proxy config verification

Fixed a bug whereby the test that ensures the current pgd-proxy configuration matches the expected configuration would fail for version < 5.5.0. This fix ensures that TPA won't try to query configuration keys added in version 5.5.0.

Fix case where primary_slot_name added for EFM compatibility interferes with bdr_init_physical

A primary_slot_name is configured on the primary node to ensure the old primary uses a physical slot for replication during an EFM switchover. However, 'bdr_init_physical' attempts to use it for node initialisation and hangs indefinitely since the slot does not exist in a PGD installation. This primary_slot_name is now conditionally set explicitly when the failover_manager is EFM to avoid setting it unnecessarily.

36064
Download correct bash-completion package version

If the pgdcli_package_version is specified in config.yml, the bash-completion package is incorrectly named because the packages_for filter erroneously appends the pgdcli_package_version to the package name. This results in an attempt to download a nonexistant package. The bash-completion package is now appended to the list after the packages_for filter, since it's version is independent from the pgdcli_package_version.

38773
Fix an issue whereby in some cases error messages would be repeated even after successful tasks.

TPA now clears the error message stack after each task to ensure messages are not spuriously repeated

Fix issue that prevented the addition of replicas to Patroni clusters

Fixed an issue whereby new replicas in Patroni clusters would fail with errors related to replication slots.

Add pem-agent role on barman nodes at most once for M1 architecture

If --enable-pem and --enable-pg-backup-api are passed to tpaexec configure, pem-agent is added twice to the barman node if it is also a witness. Fixed by consolidating both if statements together to only evaluate the conditions once.

Set pem_python_executable outside of the pkg role

Fixed a bug whereby if the user excluded the pkg selector, later PEM-related tasks would fail because the pem_python_executable fact had not been set.

+ + diff --git a/product_docs/docs/tpa/23/tpaexec-configure.mdx b/product_docs/docs/tpa/23/tpaexec-configure.mdx index a7988cc550c..4dae9a1fc8c 100644 --- a/product_docs/docs/tpa/23/tpaexec-configure.mdx +++ b/product_docs/docs/tpa/23/tpaexec-configure.mdx @@ -118,18 +118,34 @@ configuration. You must edit config.yml to specify multiple regions. ### Network configuration +!!!Note + +These options are not meaningful for the "bare" platform, where +TPA will not alter the network configuration of existing servers. +!!! + By default, each cluster will be configured with a number of randomly selected `/28` subnets from the CIDR range `10.33.0.0/16`, depending on the selected architecture. Specify `--network 192.168.0.0/16` to assign subnets from a different network. - -**Note:** On AWS clusters, this corresponds to the VPC CIDR. +On AWS clusters, this corresponds to the VPC CIDR. See [aws](platform-aws/#vpc-required) documentation for details. Specify `--subnet-prefix 26` to assign subnets of a different size, /26 instead of /28 in this case. +!!!Note + +When the "docker" platform is selected, TPA will always place the +entire cluster in a single subnet regardless of the architecture. This +subnet is generated according to the logic described here with the +exception that if the `subnet-prefix` is not specified, TPA will +automatically select a subnet size large enough to accomodate the number +of instances in +`config.yaml`. +!!! + Specify `--no-shuffle-subnets` to allocate subnets from the start of the network CIDR range, without randomisation, e.g. `10.33.0.0/28`, then `10.33.0.16/28` and so on. @@ -138,9 +154,6 @@ Specify `--exclude-subnets-from ` to exclude subnets that are already used in existing cluster config.yml files. You can specify this argument multiple times for each directory. -**Note:** These options are not meaningful for the "bare" platform, where -TPA will not alter the network configuration of existing servers. - ### Instance type Specify `--instance-type ` to select an instance type. @@ -247,7 +260,7 @@ details. #### Postgres flavour and version TPA supports PostgreSQL, EDB Postgres Extended, and EDB Postgres -Advanced Server (EPAS) versions 11 through 16. +Advanced Server (EPAS) versions 11 through 17. You must specify both the flavour (or distribution) and major version of Postgres to install, for example: diff --git a/product_docs/docs/tpa/23/tpaexec-hooks.mdx b/product_docs/docs/tpa/23/tpaexec-hooks.mdx index 5fccd1f9597..d9df23785c8 100644 --- a/product_docs/docs/tpa/23/tpaexec-hooks.mdx +++ b/product_docs/docs/tpa/23/tpaexec-hooks.mdx @@ -1,6 +1,6 @@ --- navTitle: Deployment hooks -description: Extending TPA with hooks to execute arbitrary Anisible tasks. +description: Extending TPA with hooks to execute arbitrary Ansible tasks. title: TPA hooks originalFilePath: tpaexec-hooks.md From 1e40d74c312398506111b5e332f713fb3d74752c Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Mon, 25 Nov 2024 10:27:02 +0000 Subject: [PATCH 32/35] Second import with fixes, mod to importer to avoid trashing release notes src directory. Signed-off-by: Dj Walker-Morgan --- .../docs/tpa/23/reference/postgres_extension_configuration.mdx | 2 +- .../docs/tpa/23/reference/tpaexec-download-packages.mdx | 2 +- product_docs/docs/tpa/23/rel_notes/src/meta.yml | 1 + product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml | 3 +-- product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx | 2 +- product_docs/docs/tpa/23/tpaexec-configure.mdx | 2 ++ scripts/source/process-tpa-docs-auto.sh | 2 +- 7 files changed, 8 insertions(+), 6 deletions(-) diff --git a/product_docs/docs/tpa/23/reference/postgres_extension_configuration.mdx b/product_docs/docs/tpa/23/reference/postgres_extension_configuration.mdx index 52ee6a54fa8..6986d73ecc8 100644 --- a/product_docs/docs/tpa/23/reference/postgres_extension_configuration.mdx +++ b/product_docs/docs/tpa/23/reference/postgres_extension_configuration.mdx @@ -25,7 +25,7 @@ the package containing the extension. - [Adding the *vector* extension through configuration](reconciling-local-changes/) - [Specifying extensions for configured databases](postgres_databases/) -- [Including shared preload entries for extensions](postgresql.conf/#shared-preload-libraries) +- [Including shared preload entries for extensions](postgresql.conf/#shared_preload_libraries) - [Installing Postgres-related packages](postgres_installation_method_pkg/) ## TPA recognized extensions diff --git a/product_docs/docs/tpa/23/reference/tpaexec-download-packages.mdx b/product_docs/docs/tpa/23/reference/tpaexec-download-packages.mdx index b548d2c526e..08c3fb4b241 100644 --- a/product_docs/docs/tpa/23/reference/tpaexec-download-packages.mdx +++ b/product_docs/docs/tpa/23/reference/tpaexec-download-packages.mdx @@ -24,7 +24,7 @@ are supported. container of the target operating system and uses that system's package manager to resolve dependencies and download all necessary packages. The required Docker setup for download-packages is the same as that for - [using Docker as a deployment platform](#platform-docker). + [using Docker as a deployment platform](../platform-docker/). ## Usage diff --git a/product_docs/docs/tpa/23/rel_notes/src/meta.yml b/product_docs/docs/tpa/23/rel_notes/src/meta.yml index 124ea56dc04..6a6b069cdad 100644 --- a/product_docs/docs/tpa/23/rel_notes/src/meta.yml +++ b/product_docs/docs/tpa/23/rel_notes/src/meta.yml @@ -62,3 +62,4 @@ precursor: date: 21 Feb 2023 - version: "23.1-11" date: 21 Jun 2023 to 31 Jan 2023 + diff --git a/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml b/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml index 76c5f0fa288..afb1c3555d8 100644 --- a/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml +++ b/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml @@ -4,13 +4,12 @@ date: 25 November 2024 intro: | New features, enhancements, bug fixes, and other changes in Trusted Postgres Architect 23.35 include the following: highlights: | + - Options for STIG/CIS compliance. - Support for PGD Lightweight architecture - Postgis is now a recognized extension. - Docker `configure` creates named networks with static IP addresses. - Support for RedHat Enterprise Linux 9 for ARM architectures. - Support for PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server 17. - - Options for STIG/CIS compliance. - relnotes: - details: "`PermissionsStartOnly` has been deprecated and is now achieved via `ExecStartPost=+/bin/bash...` diff --git a/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx b/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx index bb3646a6512..b36ef3f2e0d 100644 --- a/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx +++ b/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx @@ -9,12 +9,12 @@ New features, enhancements, bug fixes, and other changes in Trusted Postgres Arc ## Highlights +- Options for STIG/CIS compliance. - Support for PGD Lightweight architecture - Postgis is now a recognized extension. - Docker `configure` creates named networks with static IP addresses. - Support for RedHat Enterprise Linux 9 for ARM architectures. - Support for PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server 17. -- Options for STIG/CIS compliance. ## Enhancements diff --git a/product_docs/docs/tpa/23/tpaexec-configure.mdx b/product_docs/docs/tpa/23/tpaexec-configure.mdx index 4dae9a1fc8c..1d70baacd73 100644 --- a/product_docs/docs/tpa/23/tpaexec-configure.mdx +++ b/product_docs/docs/tpa/23/tpaexec-configure.mdx @@ -186,6 +186,8 @@ with one name per line. The file must contain at least as many valid hostnames as there are instances in your cluster. Each line may contain an optional IP address after the name; if present, this address will be set as the `ip_address` for the corresponding instance in `config.yml`. +If two ip addresses are present, the first will be set as `public_ip` +and the second as `private_ip`. Use `--hostnames-pattern '…pattern…'` to limit the selection to lines matching an egrep pattern. diff --git a/scripts/source/process-tpa-docs-auto.sh b/scripts/source/process-tpa-docs-auto.sh index cb853508d1b..4af57a39a13 100755 --- a/scripts/source/process-tpa-docs-auto.sh +++ b/scripts/source/process-tpa-docs-auto.sh @@ -44,7 +44,7 @@ node $DESTINATION_CHECKOUT/scripts/source/merge-indexes.mjs \ "$SOURCE_CHECKOUT/docs/src/reference/index.mdx" \ >> $SOURCE_CHECKOUT/files-to-ignore.txt -rsync -av --delete --exclude="*.md" --exclude="architectures" --exclude="templates" --exclude-from=$SOURCE_CHECKOUT/files-to-ignore.txt src/ $DESTINATION_CHECKOUT/product_docs/docs/tpa/$TPAVERSION/ +rsync -av --delete --exclude="*.md" --exclude="architectures" --exclude="templates" --exclude="rel_notes" --exclude-from=$SOURCE_CHECKOUT/files-to-ignore.txt src/ $DESTINATION_CHECKOUT/product_docs/docs/tpa/$TPAVERSION/ # Tidy up rm -rf $SOURCE_CHECKOUT From 6d5da734aefa1e9cc7181a11386d50bc8f4d816b Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Mon, 25 Nov 2024 10:58:44 +0000 Subject: [PATCH 33/35] Fixed bad link from import (fix upstreamed) Signed-off-by: Dj Walker-Morgan --- product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx b/product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx index 375317fa225..4dd318ac627 100644 --- a/product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx +++ b/product_docs/docs/tpa/23/architecture-PGD-Always-ON.mdx @@ -8,7 +8,7 @@ originalFilePath: architecture-PGD-Always-ON.md !!!Note This architecture is for Postgres Distributed 5 only. -If you require PGD 4 or 3.7 please use [BDR-Always-ON](BDR-Always-ON/). +If you require PGD 4 or 3.7 please use [BDR-Always-ON](architecture-BDR-Always-ON/). EDB Postgres Distributed 5 in an Always-ON configuration, suitable for use in test and production. From 53731748959ab535ff1af0c00902153676a0acf3 Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Mon, 25 Nov 2024 14:40:43 +0000 Subject: [PATCH 34/35] Pre-release updates Signed-off-by: Dj Walker-Morgan --- .../architecture-PGD-Lightweight.mdx | 103 +++++++++++ product_docs/docs/tpa/23/reference/barman.mdx | 108 +++++++++++- .../docs/tpa/23/reference/compliance.mdx | 166 ++++++++++++++++++ product_docs/docs/tpa/23/reference/efm.mdx | 12 ++ .../docs/tpa/23/tpaexec-configure.mdx | 9 + 5 files changed, 396 insertions(+), 2 deletions(-) create mode 100644 product_docs/docs/tpa/23/reference/architecture-PGD-Lightweight.mdx create mode 100644 product_docs/docs/tpa/23/reference/compliance.mdx diff --git a/product_docs/docs/tpa/23/reference/architecture-PGD-Lightweight.mdx b/product_docs/docs/tpa/23/reference/architecture-PGD-Lightweight.mdx new file mode 100644 index 00000000000..a9b2f88d5d4 --- /dev/null +++ b/product_docs/docs/tpa/23/reference/architecture-PGD-Lightweight.mdx @@ -0,0 +1,103 @@ +--- +description: Configuring a PGD Lightweight cluster with TPA. +title: PGD Lightweight +originalFilePath: architecture-PGD-Lightweight.md + +--- + +!!! Note + + This architecture is for Postgres Distributed 5 only. + If you require PGD 4 or 3.7 please use [BDR-Always-ON](../architecture-BDR-Always-ON/). + + EDB Postgres Distributed 5 in a Lightweight configuration, + suitable for use in test and production. + + This architecture requires an EDB subscription. + All software will be sourced from [EDB Repos 2.0](edb_repositories/). + +## Cluster configuration + +### Overview of configuration options + +An example invocation of `tpaexec configure` for this architecture +is shown below. + +```bash + tpaexec configure ~/clusters/pgd-lw \ + --architecture Lightweight \ + --edb-postgres-extended 15 \ + --platform aws --instance-type t3.micro \ + --distribution Debian \ + --location-names main dr \ +``` + +You can list all available options using the help command. + +```bash +tpaexec configure --architecture Lightweight --help +``` + +The table below describes the mandatory options for PGD-Always-ON +and additional important options. +More detail on the options is provided in the following section. + +#### Mandatory Options + +| Options | Description | +| ----------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `--architecture` (`-a`) | Must be set to `Lightweight` | +| Postgres flavour and version (e.g. `--postgresql 15`) | A valid [flavour and version specifier](../tpaexec-configure/#postgres-flavour-and-version). | + +

+ +#### Additional Options + +| Options | Description | Behaviour if omitted | +| -------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | +| `--platform` | One of `aws`, `docker`, `bare`. | Defaults to `aws`. | +| `--location-names` | A space-separated list of location names. The number of locations is equal to the number of names supplied. | TPA will configure a single location with three data nodes. | +| `--add-proxy-nodes-per-location` | The number of proxy nodes in each location. | PGD-proxy will be installed on each data node. | +| `--bdr-database` | The name of the database to be used for replication. | Defaults to `bdrdb`. | +| `--enable-pgd-probes` | Enable http(s) api endpoints for pgd-proxy such as `health/is-ready` to allow probing proxy's health. | Disabled by default. | +| `--proxy-listen-port` | The port on which proxy nodes will route traffic to the write leader. | Defaults to 6432 | +| `--proxy-read-only-port` | The port on which proxy nodes will route read-only traffic to shadow nodes. | Defaults to 6433 | + +

+ +### More detail about Lightweight configuration + +A PGD Lightweight cluster comprises 2 locations, with a primary active location containing 2 nodes and a disaster recovery (dr) location with a single node. + +Location names for the cluster are specified as +`--location-names primary dr`. A location represents an independent +data centre that provides a level of redundancy, in whatever way +this definition makes sense to your use case. For example, AWS +regions, your own data centres, or any other designation to identify +where your servers are hosted. + +!!! Note for AWS users + + If you are using TPA to provision an AWS cluster, the locations will + be mapped to separate availability zones within the `--region` you + specify. + You may specify multiple `--regions`, but TPA does not currently set + up VPC peering to allow instances in different regions to + communicate with each other. For a multi-region cluster, you will + need to set up VPC peering yourself. + +By default, every data node (in every location) will also run PGD-Proxy +for connection routing. To create separate PGD-Proxy instances instead, +use `--add-proxy-nodes-per-location 3` (or however many proxies you want +to add). + +Global routing will make every proxy route to a single write leader, elected amongst all available data nodes across all locations. + +You may optionally specify `--bdr-database dbname` to set the name of +the database with BDR enabled (default: bdrdb). + +You may optionally specify `--enable-pgd-probes [{http, https}]` to +enable http(s) api endpoints that will allow to easily probe proxy's health. + +You may also specify any of the options described by +[`tpaexec help configure-options`](../tpaexec-configure/). diff --git a/product_docs/docs/tpa/23/reference/barman.mdx b/product_docs/docs/tpa/23/reference/barman.mdx index f0fd713c9d0..d9c8c10d1e4 100644 --- a/product_docs/docs/tpa/23/reference/barman.mdx +++ b/product_docs/docs/tpa/23/reference/barman.mdx @@ -99,8 +99,112 @@ TPA versions `<23.35` created the `barman` Postgres user as a `superuser`. Beginning with `23.35` the `barman` user is created with `NOSUPERUSER`, so any re-deploys on existing clusters will remove the `superuser` attribute -from the `barman` Postgres user. Instead, the `barman_role` is granted the -required set of privileges and the `barman` user is granted `barman_role` membership. +from the `barman` Postgres user. Instead, the `barman_role` is granted the +required set of privileges and the `barman` user is granted `barman_role` membership. This avoids granting the `superuser` attribute to the `barman` user, using the set of privileges provided in the [Barman Manual](https://docs.pgbarman.org/release/latest/#postgresql-connection). + +## Shared Barman server + +!!! Note + + To use the shared Barman functionality with clusters created using a + TPA version earlier than 23.35, you must: + a) upgrade to a version of TPA that supports creating + shared Barman instances. + b) after upgrading TPA, run deploy on $first-cluster so TPA can make + necessary config changes for subsequent clusters to run smoothly + against the shared Barman node. + +Some deployments may want to share a single Barman server for multiple +clusters. Shared Barman server deployment within +tpaexec is supported via the `barman_shared` setting that can be set via +`vars:` under the Barman server instance for the given cluster config +that plans to use an existing Barman server. `barman_shared` is a +boolean variable so possible values are true and false(default). When +making any changes to the Barman config in a shared scenario, you must +ensure that configurations across multiple clusters remain in sync so as +to avoid a scenario where one cluster adds a specific configuration and +a second cluster overrides it. + +A typical workflow for using a shared Barman server across multiple +clusters is described below. + +1. Create a TPA cluster with an instance that has `barman` role + (call it 'first-cluster' for this example). + +2. In the second cluster (second-cluster for example), reference this + particular Barman instance from $clusters/first-cluster as a shared + Barman server instance and use `bare` as platform so we are not + trying to create a new Barman instance when running provision. Also + specify the IP address of the Barman instance that this cluster can + use to access it. + + ```yml + - Name: myBarman + node: 5 + role: + - barman + platform: bare + ip_address: x.x.x.x + vars: + barman_shared: true + ``` + +3. Once the second-cluster is provisioned but before running deploy, + make sure that it can access the Barman server instance via ssh. You + can allow this access by copying second-cluster's public key to + Barman server instance via `ssh-copy-id` and then do an ssh to + make sure you can login without having to specify the password. + + ```bash + # add first-cluster's key to the ssh-agent + $ cd $clusters/first-cluster + $ ssh-add id_first-clutser + $ cd $clusters/second-cluster + $ ssh-keyscan -t rsa,ecdsa -4 $barman-server-ip >> tpa_known_hosts + $ ssh-copy-id -i id_second-cluster.pub -o 'UserKnownHostsFile=tpa_known_hosts' $user@$barman-server-ip + $ ssh -F ssh_config $barman-server + ``` + +4. Copy the Barman user's keys from first-cluster to second-cluster + ```bash + $ mkdir $clusters/second-cluster/keys + $ cp $clusters/first-cluster/keys/id_barman* clusters/second-cluster/keys + ``` + +5. Run `tpaexec deploy $clusters/second-cluster` + +!!! Note + + You must use caution when setting up clusters that share a Barman + server instance. There are a number of important aspects you must + consider before attempting such a setup. For example: + + 1. Making sure that no two instances in any of the clusters sharing a + Barman server use the same name. + 2. Barman configuration and settings otherwise should remain in sync in + all the clusters using a common Barman server to avoid a scenario + where one cluster sets up a specific configuration and the others do + not either because the configuration is missing or uses a different + value. + 3. Version of Postgres on instances being backed up across different + clusters needs to be the same. + 4. Different clusters using a common Barman server cannot specify + different versions of Barman packages when attempting to override + default. + +Some of these may be addressed in a future release as we continue to +improve the shared Barman server support. + +!!!Warning + +Be extremely careful when deprovisioning clusters sharing a common +Barman node. Especially where the first cluster that deployed Barman +uses non-bare platform. Deprovisioning the first cluster that +originally provisioned and deployed Barman will effectively leave +other clusters sharing the Barman node in an inconsistent state +because the Barman node will already have been deprovisioned by the +first cluster and it won't exist anymore. +!!! diff --git a/product_docs/docs/tpa/23/reference/compliance.mdx b/product_docs/docs/tpa/23/reference/compliance.mdx new file mode 100644 index 00000000000..54b6d864555 --- /dev/null +++ b/product_docs/docs/tpa/23/reference/compliance.mdx @@ -0,0 +1,166 @@ +--- +description: Generating standards-compliant clusters with TPA +title: Compliance +originalFilePath: compliance.md + +--- + +TPA can generate configurations designed to make it easy for a +cluster to comply with the STIG or CIS standards. If you pass +`--compliance stig` or `--compliance cis` to `tpaexec configure`, +TPA will: + +- Check that other options are compatible with the appropriate + standard. +- Add various entries to the generated `config.yml`, including + marking that this is a cluster meant to comply with a particular + standard and setting Postgres configuration as required by + the standard. +- Adjust some deployment tasks to enforce compliance. +- Run checks at the end of deployment. + +The deploy-time checks can +be skipped by giving the option `--excluded_tasks=compliance` to `tpaexec +deploy`. This feature is intended for testing only, when using a test +system on which full compliance is impossible (for example, +because SSL certificates are not available). + +There are some situations in which TPA will intentionally fail to +comply with the selected standard; these are documented under Exceptions +below. + +## STIG + +STIG compliance is indicated by the `--compliance stig` option to +`tpaexec configure`. + +### Option compatibility + +STIG compliance requires the `bare` platform and the `epas` flavour. +It requires the RedHat OS with version 8 or 9. + +### Settings in config.yml + +The following entry is added to `cluster_vars` to use the SQL/Protect +feature of EDB Postgres Advanced Server: + +``` + extra_postgres_extensions: [ 'sql_protect' ] +``` + +The following entries are added to `cluster_vars` to force clients +to use SSL authentication: + +``` + hba_force_hostssl: True + hba_force_certificate_auth: True + hba_cert_authentication_map: sslmap +``` + +The following entries are added to `cluster_vars` to set GUCs in +postgresql.conf: + +``` + tcp_keepalives_idle: 10 + tcp_keepalives_interval: 10 + tcp_keepalives_count: 10 + log_destination: "stderr" + postgres_log_file_mode: "0600" +``` + +The following entries are added to `postgres_conf_settings` in +`cluster_vars` to set GUCs in postgresql.conf: + +``` + edb_audit: "xml" + edb_audit_statement: "all" + edb_audit_connect: "all" + edb_audit_disconnect: "all" + statement_timeout: 1000 + client_min_messages: "ERROR" +``` + +### Deployment differences + +During deployment, TPA will set connection limits for the database users +it creates, corresponding to the number of connections that are needed +for normal operation. As each user is set up, it will also check that +an SSL client certificate has been provided for it. + +### Providing client ssl certificates + +STIG requires DOD-approved ssl certificates for client connections. +These certificates can't be generated by TPA and therefore must be +supplied. When setting up authentication for a user from a +node in the cluster, TPA will look for a certificate/key pair on the +node. The certificate and key should be in files called .crt +and .key in the directory given by the `ssl_client_cert_dir` +setting. The default for this setting is `/`, so the files would be, +for example, `/barman.crt` and `/barman.key` when the `barman` user is +being set up. + +### Final checks + +At the end of deployment, TPA will check that the server has FIPS +enabled. + +### Exceptions + +If you select EFM as the failover manager, TPA will configure password +authentication for the EFM user. This goes against the STIG requirement +that all TCP connections use certificate authentication. The reason for +this exception is that EFM does not support certificate authentication. + +## CIS + +CIS compliance is indicated by the `--compliance cis` option to `tpaexec +configure`. + +### Settings in config.yml + +The following entries are added to `cluster_vars` to set GUCs in +postgresql.conf: + +``` + log_connections: "on" + log_disconnections: "on" +``` + +The following entry is added to `cluster_vars` to enable required +extensions: + +``` + extra_postgres_extensions: ["passwordcheck", "pgaudit"] +``` + +The following entry is added to `cluster_vars` to set the umask for +the postgres OS user: + +``` + extra_bash_rc_lines: "umask 0077" +``` + +The following entries are added to `postgres_conf_settings` in +`cluster_vars` to set GUCs in postgresql.conf: + +``` + + log_error_verbosity: "verbose" + log_line_prefix: "'%m [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h '" + log_replication_commands: "on" + temp_file_limit: "1GB" +``` + +### Final checks + +At the end of deployment, TPA will check that the server has FIPS +enabled. + +### Exceptions + +TPA does not support pgBackRest as mentioned in the CIS specification. +Instead TPA installs Barman. + +TPA does not install and configure `set_user` as required by the CIS +specification. This is because preventing logon by the Postgres user +would leave TPA unable to connect to, and configure, the database. diff --git a/product_docs/docs/tpa/23/reference/efm.mdx b/product_docs/docs/tpa/23/reference/efm.mdx index 6f262752296..ef4eaf194f7 100644 --- a/product_docs/docs/tpa/23/reference/efm.mdx +++ b/product_docs/docs/tpa/23/reference/efm.mdx @@ -24,6 +24,18 @@ to the cluster. See the [EFM documentation](https://www.enterprisedb.com/docs/efm/latest/) for more details on EFM configuration. +## efm_user_password_encryption + +Must be either `scram-sha-256` or `md5` + +Set `efm_user_password_encryption` to control the `auth-method` for the +`efm` Postgres user's `auth-method` in `pg_hba.conf` as well as the algorithm +used when generating it's encrypted password. + +```yaml +efm_user_password_encryption: 'scram-sha-256' # or can be set to `md5` +``` + ## efm_conf_settings You can use `efm_conf_settings` to set any parameters, whether recognised diff --git a/product_docs/docs/tpa/23/tpaexec-configure.mdx b/product_docs/docs/tpa/23/tpaexec-configure.mdx index 1d70baacd73..98374c8dee3 100644 --- a/product_docs/docs/tpa/23/tpaexec-configure.mdx +++ b/product_docs/docs/tpa/23/tpaexec-configure.mdx @@ -452,6 +452,15 @@ cluster folder to a different tpa host, ensure that you export the associated vault password on the new machine's system keyring. vault password can be displayed via `tpaexec show-vault `. +## Security standards compliance + +Use the `--compliance stig` or `--compliance cis` options to generate +a cluster with configuration suitable for complying with the STIG or CIS +standard. See [Compliance](reference/compliance/) for details. Note that these +options do not guarantee that the cluster fulfills the relevant +standard; they only cause TPA to generate a configuration designed to +comply with those aspects of the standard that can be controlled by TPA. + ## Examples Let's see what happens when we run the following command: From 00971a83da7dd1406ae07e3ac346fda03c877f1a Mon Sep 17 00:00:00 2001 From: Dj Walker-Morgan Date: Mon, 25 Nov 2024 15:19:02 +0000 Subject: [PATCH 35/35] Final release notes and relgen fix Signed-off-by: Dj Walker-Morgan --- .../23/rel_notes/src/tpa_23.35_rel_notes.yml | 270 +++++++++++------- .../tpa/23/rel_notes/tpa_23.35_rel_notes.mdx | 17 +- tools/automation/generators/relgen/relgen.js | 7 +- 3 files changed, 175 insertions(+), 119 deletions(-) diff --git a/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml b/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml index afb1c3555d8..2a3d85e7a6d 100644 --- a/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml +++ b/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35_rel_notes.yml @@ -11,120 +11,123 @@ highlights: | - Support for RedHat Enterprise Linux 9 for ARM architectures. - Support for PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server 17. relnotes: - - details: - "`PermissionsStartOnly` has been deprecated and is now achieved via `ExecStartPost=+/bin/bash...` - syntax" + - details: >- + `PermissionsStartOnly` has been deprecated and is now achieved via + `ExecStartPost=+/bin/bash...` syntax impact: low jira: - TPA-762 relnote: Remove deprecated `PermissionStartOnly` in postgres.service.j2 template type: Change - - details: - Fixed a bug whereby the test that ensures the current pgd-proxy configuration - matches the expected configuration would fail for version < 5.5.0. This fix ensures - that TPA won't try to query configuration keys added in version 5.5.0. + - details: >- + Fixed a bug whereby the test that ensures the current pgd-proxy + configuration matches the expected configuration would fail for version < + 5.5.0. This fix ensures that TPA won't try to query configuration keys + added in version 5.5.0. impact: low jira: - TPA-819 relnote: Fix tpaexec test for pgd-proxy config verification type: Bug Fix - - details: - The PostGIS package will automatically be added when a user specifies `postgis` - as an entry in either `postgres_extensions` or the list of extensions named under - `postgres_databases`. Also enables the CRB (Code Ready Builder) repository for - RHEL-compatible distributions so PostGIS dependencies can be installed. + - details: >- + The PostGIS package will automatically be added when a user specifies + `postgis` as an entry in either `postgres_extensions` or the list of + extensions named under `postgres_databases`. Also enables the CRB (Code + Ready Builder) repository for RHEL-compatible distributions so PostGIS + dependencies can be installed. impact: low jira: - TPA-771 relnote: Add `postgis` to list of recognized extensions type: Enhancement - - details: + - details: >- Certain required privileges are granted to Postgres role, `barman_role`, - which is then granted to the `barman` Postgres user. This avoids creating the - `barman` user as a superuser. This role can also be granted to other Postgres - users by adding it to their `granted_roles` list using `postgres/createuser`. - The `barman_role` is created as part of the Barman tasks; if Barman is not used, - this role will not be created. Therefore, the task that grants privileges to this - role is only executed if the `barman_role` username is in the list of Postgres - users that are created. The 'barman' user now has `NOSUPERUSER` explicitly specified - as a role attribute. If a cluster was deployed with a previous TPA version (which - created the 'barman' user as a superuser), deploying with this version will remove - the `superuser` role attribute from the `barman` user. + which is then granted to the `barman` Postgres user. This avoids creating + the `barman` user as a superuser. This role can also be granted to other + Postgres users by adding it to their `granted_roles` list using + `postgres/createuser`. The `barman_role` is created as part of the Barman + tasks; if Barman is not used, this role will not be created. Therefore, + the task that grants privileges to this role is only executed if the + `barman_role` username is in the list of Postgres users that are created. + The 'barman' user now has `NOSUPERUSER` explicitly specified as a role + attribute. If a cluster was deployed with a previous TPA version (which + created the 'barman' user as a superuser), deploying with this version + will remove the `superuser` role attribute from the `barman` user. impact: low jira: - TPA-148 - TPA-818 relnote: The `barman` Postgres user is no longer a superuser type: Change - - details: + - details: >- Add new optional var `harp_local_etcd_only` available when using etcd with - HARP. This option tells HARP manager to connect to local etcd node. This recommendation - follows the best practices learnt by doing the same when `bdr` as consensus procotol - is being used. The default mode of adding multiple endpoints can lead to performance - issues in some cases. This option is added to give more control to the user. + HARP. This option tells HARP manager to connect to local etcd node. This + recommendation follows the best practices learnt by doing the same when + `bdr` as consensus procotol is being used. The default mode of adding + multiple endpoints can lead to performance issues in some cases. This + option is added to give more control to the user. impact: low jira: - TPA-821 relnote: Add new option `harp_local_etcd_only` when using etcd with HARP type: Change - addresses: 41931 - - details: + - details: >- A `primary_slot_name` is configured on the primary node to ensure the old - primary uses a physical slot for replication during an EFM switchover. However, - 'bdr_init_physical' attempts to use it for node initialisation and hangs indefinitely - since the slot does not exist in a PGD installation. This `primary_slot_name` - is now conditionally set explicitly when the `failover_manager` is EFM to avoid - setting it unnecessarily. + primary uses a physical slot for replication during an EFM switchover. + However, 'bdr_init_physical' attempts to use it for node initialisation + and hangs indefinitely since the slot does not exist in a PGD + installation. This `primary_slot_name` is now conditionally set explicitly + when the `failover_manager` is EFM to avoid setting it unnecessarily. impact: low jira: - TPA-712 - relnote: "Fix case where `primary_slot_name` added for EFM compatibility interferes with `bdr_init_physical`" + relnote: >- + Fix case where `primary_slot_name` added for EFM compatibility interferes + with `bdr_init_physical` type: Bug Fix - addresses: 36064 - - details: - If the `pgdcli_package_version` is specified in `config.yml`, the `bash-completion` - package is incorrectly named because the `packages_for` filter erroneously appends - the `pgdcli_package_version` to the package name. This results in an attempt to - download a nonexistant package. The `bash-completion` package is now appended - to the list after the `packages_for` filter, since it's version is independent - from the `pgdcli_package_version`. + - details: >- + If the `pgdcli_package_version` is specified in `config.yml`, the + `bash-completion` package is incorrectly named because the `packages_for` + filter erroneously appends the `pgdcli_package_version` to the package + name. This results in an attempt to download a nonexistant package. The + `bash-completion` package is now appended to the list after the + `packages_for` filter, since it's version is independent from the + `pgdcli_package_version`. impact: low jira: - TPA-794 relnote: Download correct `bash-completion` package version type: Bug Fix - addresses: 38773 - - details: + - details: >- TPA is now able to generate a PGD Lightweight architecture comprised of - three nodes in two locations (2 nodes in Primary and one in Disaster Recovery) - designed to ease migrations from physical replication. Users can now run `tpaexec - configure lw -a Lightweight --postgresql 15`. - impact: low + three nodes in two locations (2 nodes in Primary and one in Disaster + Recovery) designed to ease migrations from physical replication. Users can + now run `tpaexec configure lw -a Lightweight --postgresql 15`. + impact: medium jira: - TPA-838 relnote: Add support for PGD Lightweight architecture type: Enhancement - - details: + - details: >- TPA now clears the error message stack after each task to ensure messages are not spuriously repeated impact: low jira: - TPA-812 - relnote: + relnote: >- Fix an issue whereby in some cases error messages would be repeated even after successful tasks. type: Bug Fix - - details: + - details: >- Improve postgres-monitor script to better manage recoverable errors and - add retries on network errors to ensure that it won't return failure when it just - didn't allow enough time for postgres service to be fully started. + add retries on network errors to ensure that it won't return failure when + it just didn't allow enough time for postgres service to be fully started. impact: low jira: - TPA-796 relnote: Improve postgres-monitor script type: Change - addresses: 39191 - - details: + - details: >- Fixed an issue whereby new replicas in Patroni clusters would fail with errors related to replication slots. impact: low @@ -133,99 +136,148 @@ relnotes: - TPA-781 relnote: Fix issue that prevented the addition of replicas to Patroni clusters type: Bug Fix - - details: Previously the `pemserver` and `barman` nodes were - added to the `Allowed node host list` in EFM when they were not relevant to EFM - functions. Refactored the task that writes the `efm.node` configuration to only + - details: >- + Previously the `pemserver` and `barman` nodes were added to the `Allowed + node host list` in EFM when they were not relevant to EFM functions. + Refactored the task that writes the `efm.node` configuration to only include those nodes that have `efm` in their list of roles. impact: low jira: - TPA-817 relnote: Only add nodes with `efm` role to cluster `efm.nodes` file type: Change - - details: - If `--enable-pem` and `--enable-pg-backup-api` are passed to `tpaexec configure`, - `pem-agent` is added twice to the `barman` node if it is also a `witness`. Fixed - by consolidating both `if` statements together to only evaluate the conditions - once. + - details: >- + If `--enable-pem` and `--enable-pg-backup-api` are passed to `tpaexec + configure`, `pem-agent` is added twice to the `barman` node if it is also + a `witness`. Fixed by consolidating both `if` statements together to only + evaluate the conditions once. impact: low jira: - TPA-793 relnote: Add `pem-agent` role on barman nodes at most once for M1 architecture type: Bug Fix - - details: - Fixed a bug whereby if the user excluded the `pkg` selector, later PEM-related - tasks would fail because the `pem_python_executable` fact had not been set. + - details: >- + Fixed a bug whereby if the user excluded the `pkg` selector, later + PEM-related tasks would fail because the `pem_python_executable` fact had + not been set. impact: low jira: - TPA-814 relnote: Set `pem_python_executable` outside of the `pkg` role type: Bug Fix - - details: - The `--efm-install-path` and `--efm-cluster-name` flags are set when a - PEM server is registered on an EFM node. The `Streaming Replication`, `Failover - Manager Node Status` and `Failover Manager Cluster Info` probes are enabled when - a PEM agent is registered on an EFM node. + - details: >- + The `--efm-install-path` and `--efm-cluster-name` flags are set when a PEM + server is registered on an EFM node. The `Streaming Replication`, + `Failover Manager Node Status` and `Failover Manager Cluster Info` probes + are enabled when a PEM agent is registered on an EFM node. impact: low jira: - TPA-586 relnote: Enable EFM probes when a PEM agent is registered on an EFM node type: Enhancement - - details: + - details: >- TPA now supports command-line options to create a cluster configured to - conform to many of the requirements of the STIG and CIS security standards. These - options cause TPA to set postgresql.conf settings as defined in the relevant - standards, to install required extensions, to configure other aspects of system - behaviour such as filesystem permissions and user connection limits, and to check - for other requirements such as FIPS crypto standards which TPA can't directly - impose. The clusters thus generated are not certified by TPA to conform to the - standards, but much of the groundwork of creating a conforming cluster is now - automated. - impact: low + conform to many of the requirements of the STIG and CIS security + standards. These options cause TPA to set postgresql.conf settings as + defined in the relevant standards, to install required extensions, to + configure other aspects of system behaviour such as filesystem permissions + and user connection limits, and to check for other requirements such as + FIPS crypto standards which TPA can't directly impose. The clusters thus + generated are not certified by TPA to conform to the standards, but much + of the groundwork of creating a conforming cluster is now automated. + impact: high jira: - TPA-366 - TPA-836 - TPA-837 relnote: Support STIG/CIS compliance type: Enhancement - - details: - The configure command will now automatically add a named network and static - IP addresses to config.yml when Docker is the selected platform. The network name - is the same as the cluster name and the address range follows the existing semantics - of the --network option with the exception that only one subnet is used for the - whole cluster rather than one per location. If a subnet prefix is not specified - by the user, TPA will attempt to select a prefix which results in a subnet large - enough to fit the whole cluster. The key `ip_address` may now be used to specify - a static IP for a Docker instance as long as a named network is specified in the - config.yml. - impact: low + - details: >- + The configure command will now automatically add a named network and + static IP addresses to config.yml when Docker is the selected platform. + The network name is the same as the cluster name and the address range + follows the existing semantics of the --network option with the exception + that only one subnet is used for the whole cluster rather than one per + location. If a subnet prefix is not specified by the user, TPA will + attempt to select a prefix which results in a subnet large enough to fit + the whole cluster. The key `ip_address` may now be used to specify a + static IP for a Docker instance as long as a named network is specified in + the config.yml. + impact: medium jira: - TPA-261 - TPA-407 - TPA-434 relnote: Have `configure` create a user-defined network on Docker type: Enhancement - - details: Packages are now published targeting RHEL 9 ARM64, and TPA supports - deployments using this architecture and OS. Also updated the list of supported - AWS images to include the RedHat 9 ARM64 AMI provided by Amazon. The default `instance_type` - for ARM64 EC2 instances has been updated from `a1` to `t4g`, which is the current - generation processor available for burstable general purpose workloads. + - details: >- + Packages are now published targeting RHEL 9 ARM64, and TPA supports + deployments using this architecture and OS. Also updated the list of + supported AWS images to include the RedHat 9 ARM64 AMI provided by Amazon. + The default `instance_type` for ARM64 EC2 instances has been updated from + `a1` to `t4g`, which is the current generation processor available for + burstable general purpose workloads. impact: low jira: - TPA-780 relnote: Support RedHat Enterprise Linux 9 for ARM architectures type: Enhancement - - details: + - details: >- Clusters can be configured to use PostgreSQL, EDB Postgres Extended and - EDB Postgres Advanced Server version 17. Barman no longer needs to install the - postgres server package to get the `pg_receivewal` binary when using EDB Postgres - Advanced Server 17 or EDB Postgres Extended 17 since the binary has been added - to the client package for these versions. TPA raises an architecture error when a cluster - is configured with `repmgr` as the failover_manager as it is not available for - Postgres 17. Updated documentation to reflect supported versions. + EDB Postgres Advanced Server version 17. Barman no longer needs to install + the postgres server package to get the `pg_receivewal` binary when using + EDB Postgres Advanced Server 17 or EDB Postgres Extended 17 since the + binary has been added to the client package for these versions. TPA raises + an architecture error when a cluster is configured with `repmgr` as the + failover_manager as it is not available for Postgres 17. Updated + documentation to reflect supported versions. impact: low jira: - TPA-803 - relnote: - Support PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server - 17 + relnote: >- + Support PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced + Server 17 + type: Enhancement + - details: >- + When using an existing Barman node as a backup node in a new cluster, + users can set `barman_shared: true` in the Barman instance's vars with the + platform set to `bare` and other information supplied as usual for bare + instances. This change allows TPA to skip some configuration steps that + would otherwise fail due to usermod issues, as the Barman user already has + running processes from previous deployments. The shared Barman instance is + treated as a bare instance, so the required access, including the Barman + user's access to the target PostgreSQL instances, must be already in + place. Copying the Barman user's keys from the original cluster to the new + cluster can be used to achieve this, see the Barman section of the TPA + documentation for detailed information. + impact: medium + jira: + - TPA-777 + relnote: >- + Added experimental support for using an existing Barman node as backup + node in new cluster + type: Enhancement + - details: >- + Expose a configurable `efm_user_password_encryption` variable which should + be set to either `'md5'` or `'scram-sha-256'` depending on user + requirements. This controls the `auth-method` for the `efm` Postgres user + in `pg_hba.conf` and the algorithm used for generating it's encrypted + password. In clusters deployed with `compliance` configured to `stig`, the + 'efm' Postgres user's `auth-method` in `pg_hba.conf` will be set to + `scram-sha-256` since FIPS-enabled operating systems do not allow `md5` to + be used. + impact: low + jira: + - TPA-832 + - TPA-836 + relnote: Make `password_encryption` algorithm for `efm` Postgres user configurable. + type: Enhancement + - details: >- + When using the `--hostnames-from` option to `tpaexec configure`, you can + now include two ip addresses on each line, which will be included in the + generated config.yml as public_ip and private_ip. + impact: low + jira: + - TPA-841 + relnote: Allow multiple addresses to be supplied with hostnames type: Enhancement \ No newline at end of file diff --git a/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx b/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx index b36ef3f2e0d..6f8bbb20dd3 100644 --- a/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx +++ b/product_docs/docs/tpa/23/rel_notes/tpa_23.35_rel_notes.mdx @@ -19,13 +19,16 @@ New features, enhancements, bug fixes, and other changes in Trusted Postgres Arc ## Enhancements - - - + + + + + +
DescriptionAddresses
Add postgis to list of recognized extensions

The PostGIS package will automatically be added when a user specifies postgis as an entry in either postgres_extensions or the list of extensions named under postgres_databases. Also enables the CRB (Code Ready Builder) repository for RHEL-compatible distributions so PostGIS dependencies can be installed.

Add support for PGD Lightweight architecture

TPA is now able to generate a PGD Lightweight architecture comprised of three nodes in two locations (2 nodes in Primary and one in Disaster Recovery) designed to ease migrations from physical replication. Users can now run tpaexec configure lw -a Lightweight --postgresql 15.

Enable EFM probes when a PEM agent is registered on an EFM node

The --efm-install-path and --efm-cluster-name flags are set when a PEM server is registered on an EFM node. The Streaming Replication, Failover Manager Node Status and Failover Manager Cluster Info probes are enabled when a PEM agent is registered on an EFM node.

Support STIG/CIS compliance

TPA now supports command-line options to create a cluster configured to conform to many of the requirements of the STIG and CIS security standards. These options cause TPA to set postgresql.conf settings as defined in the relevant standards, to install required extensions, to configure other aspects of system behaviour such as filesystem permissions and user connection limits, and to check for other requirements such as FIPS crypto standards which TPA can't directly impose. The clusters thus generated are not certified by TPA to conform to the standards, but much of the groundwork of creating a conforming cluster is now automated.

Add support for PGD Lightweight architecture

TPA is now able to generate a PGD Lightweight architecture comprised of three nodes in two locations (2 nodes in Primary and one in Disaster Recovery) designed to ease migrations from physical replication. Users can now run tpaexec configure lw -a Lightweight --postgresql 15.

Have configure create a user-defined network on Docker

The configure command will now automatically add a named network and static IP addresses to config.yml when Docker is the selected platform. The network name is the same as the cluster name and the address range follows the existing semantics of the --network option with the exception that only one subnet is used for the whole cluster rather than one per location. If a subnet prefix is not specified by the user, TPA will attempt to select a prefix which results in a subnet large enough to fit the whole cluster. The key ip_address may now be used to specify a static IP for a Docker instance as long as a named network is specified in the config.yml.

Added experimental support for using an existing Barman node as backup node in new cluster

When using an existing Barman node as a backup node in a new cluster, users can set barman_shared: true in the Barman instance's vars with the platform set to bare and other information supplied as usual for bare instances. This change allows TPA to skip some configuration steps that would otherwise fail due to usermod issues, as the Barman user already has running processes from previous deployments. The shared Barman instance is treated as a bare instance, so the required access, including the Barman user's access to the target PostgreSQL instances, must be already in place. Copying the Barman user's keys from the original cluster to the new cluster can be used to achieve this, see the Barman section of the TPA documentation for detailed information.

Add postgis to list of recognized extensions

The PostGIS package will automatically be added when a user specifies postgis as an entry in either postgres_extensions or the list of extensions named under postgres_databases. Also enables the CRB (Code Ready Builder) repository for RHEL-compatible distributions so PostGIS dependencies can be installed.

Enable EFM probes when a PEM agent is registered on an EFM node

The --efm-install-path and --efm-cluster-name flags are set when a PEM server is registered on an EFM node. The Streaming Replication, Failover Manager Node Status and Failover Manager Cluster Info probes are enabled when a PEM agent is registered on an EFM node.

Support RedHat Enterprise Linux 9 for ARM architectures

Packages are now published targeting RHEL 9 ARM64, and TPA supports deployments using this architecture and OS. Also updated the list of supported AWS images to include the RedHat 9 ARM64 AMI provided by Amazon. The default instance_type for ARM64 EC2 instances has been updated from a1 to t4g, which is the current generation processor available for burstable general purpose workloads.

Support PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server 17

Clusters can be configured to use PostgreSQL, EDB Postgres Extended and EDB Postgres Advanced Server version 17. Barman no longer needs to install the postgres server package to get the pg_receivewal binary when using EDB Postgres Advanced Server 17 or EDB Postgres Extended 17 since the binary has been added to the client package for these versions. TPA raises an architecture error when a cluster is configured with repmgr as the failover_manager as it is not available for Postgres 17. Updated documentation to reflect supported versions.

Make password_encryption algorithm for efm Postgres user configurable.

Expose a configurable efm_user_password_encryption variable which should be set to either 'md5' or 'scram-sha-256' depending on user requirements. This controls the auth-method for the efm Postgres user in pg_hba.conf and the algorithm used for generating it's encrypted password. In clusters deployed with compliance configured to stig, the 'efm' Postgres user's auth-method in pg_hba.conf will be set to scram-sha-256 since FIPS-enabled operating systems do not allow md5 to be used.

Allow multiple addresses to be supplied with hostnames

When using the --hostnames-from option to tpaexec configure, you can now include two ip addresses on each line, which will be included in the generated config.yml as public_ip and private_ip.

@@ -34,8 +37,8 @@ New features, enhancements, bug fixes, and other changes in Trusted Postgres Arc - - + +
DescriptionAddresses
Remove deprecated PermissionStartOnly in postgres.service.j2 template

PermissionsStartOnly has been deprecated and is now achieved via ExecStartPost=+/bin/bash... syntax

The barman Postgres user is no longer a superuser

Certain required privileges are granted to Postgres role, barman_role, which is then granted to the barman Postgres user. This avoids creating the barman user as a superuser. This role can also be granted to other Postgres users by adding it to their granted_roles list using postgres/createuser. The barman_role is created as part of the Barman tasks; if Barman is not used, this role will not be created. Therefore, the task that grants privileges to this role is only executed if the barman_role username is in the list of Postgres users that are created. The 'barman' user now has NOSUPERUSER explicitly specified as a role attribute. If a cluster was deployed with a previous TPA version (which created the 'barman' user as a superuser), deploying with this version will remove the superuser role attribute from the barman user.

Add new option harp_local_etcd_only when using etcd with HARP

Add new optional var harp_local_etcd_only available when using etcd with HARP. This option tells HARP manager to connect to local etcd node. This recommendation follows the best practices learnt by doing the same when bdr as consensus procotol is being used. The default mode of adding multiple endpoints can lead to performance issues in some cases. This option is added to give more control to the user.

41931
Improve postgres-monitor script

Improve postgres-monitor script to better manage recoverable errors and add retries on network errors to ensure that it won't return failure when it just didn't allow enough time for postgres service to be fully started.

39191
Add new option harp_local_etcd_only when using etcd with HARP

Add new optional var harp_local_etcd_only available when using etcd with HARP. This option tells HARP manager to connect to local etcd node. This recommendation follows the best practices learnt by doing the same when bdr as consensus procotol is being used. The default mode of adding multiple endpoints can lead to performance issues in some cases. This option is added to give more control to the user.

Improve postgres-monitor script

Improve postgres-monitor script to better manage recoverable errors and add retries on network errors to ensure that it won't return failure when it just didn't allow enough time for postgres service to be fully started.

Only add nodes with efm role to cluster efm.nodes file

Previously the pemserver and barman nodes were added to the Allowed node host list in EFM when they were not relevant to EFM functions. Refactored the task that writes the efm.node configuration to only include those nodes that have efm in their list of roles.

@@ -44,8 +47,8 @@ New features, enhancements, bug fixes, and other changes in Trusted Postgres Arc - - + + diff --git a/tools/automation/generators/relgen/relgen.js b/tools/automation/generators/relgen/relgen.js index 91d32183682..b31e8e0648f 100755 --- a/tools/automation/generators/relgen/relgen.js +++ b/tools/automation/generators/relgen/relgen.js @@ -315,7 +315,7 @@ function prepareRelnote(meta, file, note) { const order = ["highest", "high", "medium", "low", "lowest"]; return ( order.indexOf(a.impact.toLowerCase()) - - order.indexOf(b.impact.toLowerCase) + order.indexOf(b.impact.toLowerCase()) ); } @@ -378,10 +378,11 @@ function prepareRelnote(meta, file, note) { ); } // TODO: Depending on type, we should sort the notes - rnotes[type].sort(impactSort); + let sortednotes = rnotes[type].sort(impactSort); + //rnotes[type].sort(componentSort); - for (let linenote of rnotes[type]) { + for (let linenote of sortednotes) { let composednote = ""; if (linenote.details === undefined) {
DescriptionAddresses
Fix tpaexec test for pgd-proxy config verification

Fixed a bug whereby the test that ensures the current pgd-proxy configuration matches the expected configuration would fail for version < 5.5.0. This fix ensures that TPA won't try to query configuration keys added in version 5.5.0.

Fix case where primary_slot_name added for EFM compatibility interferes with bdr_init_physical

A primary_slot_name is configured on the primary node to ensure the old primary uses a physical slot for replication during an EFM switchover. However, 'bdr_init_physical' attempts to use it for node initialisation and hangs indefinitely since the slot does not exist in a PGD installation. This primary_slot_name is now conditionally set explicitly when the failover_manager is EFM to avoid setting it unnecessarily.

36064
Download correct bash-completion package version

If the pgdcli_package_version is specified in config.yml, the bash-completion package is incorrectly named because the packages_for filter erroneously appends the pgdcli_package_version to the package name. This results in an attempt to download a nonexistant package. The bash-completion package is now appended to the list after the packages_for filter, since it's version is independent from the pgdcli_package_version.

38773
Fix case where primary_slot_name added for EFM compatibility interferes with bdr_init_physical

A primary_slot_name is configured on the primary node to ensure the old primary uses a physical slot for replication during an EFM switchover. However, 'bdr_init_physical' attempts to use it for node initialisation and hangs indefinitely since the slot does not exist in a PGD installation. This primary_slot_name is now conditionally set explicitly when the failover_manager is EFM to avoid setting it unnecessarily.

Download correct bash-completion package version

If the pgdcli_package_version is specified in config.yml, the bash-completion package is incorrectly named because the packages_for filter erroneously appends the pgdcli_package_version to the package name. This results in an attempt to download a nonexistant package. The bash-completion package is now appended to the list after the packages_for filter, since it's version is independent from the pgdcli_package_version.

Fix an issue whereby in some cases error messages would be repeated even after successful tasks.

TPA now clears the error message stack after each task to ensure messages are not spuriously repeated

Fix issue that prevented the addition of replicas to Patroni clusters

Fixed an issue whereby new replicas in Patroni clusters would fail with errors related to replication slots.

Add pem-agent role on barman nodes at most once for M1 architecture

If --enable-pem and --enable-pg-backup-api are passed to tpaexec configure, pem-agent is added twice to the barman node if it is also a witness. Fixed by consolidating both if statements together to only evaluate the conditions once.