From d6e53631e58ebcc1c382abb0a560ef9bd09c7289 Mon Sep 17 00:00:00 2001 From: Ivan FB <128452529+Ivansete-status@users.noreply.github.com> Date: Mon, 15 Jul 2024 18:00:44 +0200 Subject: [PATCH] chore: Update master from release v0.30 (#2908) * chore(rln): rln message limit to 100 (#2883) * postgres_driver: add more error handling when creating partitions Given that multiple nodes can be connected to the same database, it can happen that other node did something that my node was willing to do. In this commit, we overcome the possible "interleaved" partition creation. --------- Co-authored-by: Alvaro Revuelta --- CHANGELOG.md | 21 ++++++++++++++++++ waku/factory/networks_config.nim | 2 +- .../postgres_driver/postgres_driver.nim | 22 +++++++++++++++---- 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61f8fabef..1e8b34289 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,24 @@ +## v0.30.2 (2024-07-12) + +### Release highlights + +* RLN message limit to 100 messages per epoch. +* Avoid exclusive access when creating new partitions in the PostgreSQL messages table. + +### Changes + +- chore(rln): rln message limit to 100 ([#2883](https://github.com/waku-org/nwaku/pull/2883)) +- fix: postgres_driver better partition creation without exclusive access [28bdb70b](https://github.com/waku-org/nwaku/commit/28bdb70be46d3fb3a6f992b3f9f2de1defd85a30) + +This release supports the following [libp2p protocols](https://docs.libp2p.io/concepts/protocols/): +| Protocol | Spec status | Protocol id | +| ---: | :---: | :--- | +| [`11/WAKU2-RELAY`](https://github.com/vacp2p/rfc-index/blob/main/waku/standards/core/11/relay.md) | `stable` | `/vac/waku/relay/2.0.0` | +| [`12/WAKU2-FILTER`](https://github.com/vacp2p/rfc-index/blob/main/waku/standards/core/12/filter.md) | `draft` | `/vac/waku/filter/2.0.0-beta1`
`/vac/waku/filter-subscribe/2.0.0-beta1`
`/vac/waku/filter-push/2.0.0-beta1` | +| [`13/WAKU2-STORE`](https://github.com/vacp2p/rfc-index/blob/main/waku/standards/core/13/store.md) | `draft` | `/vac/waku/store/2.0.0-beta4` | +| [`19/WAKU2-LIGHTPUSH`](https://github.com/vacp2p/rfc-index/blob/main/waku/standards/core/19/lightpush.md) | `draft` | `/vac/waku/lightpush/2.0.0-beta1` | +| [`66/WAKU2-METADATA`](https://github.com/waku-org/specs/blob/master/standards/core/metadata.md) | `raw` | `/vac/waku/metadata/1.0.0` | + ## v0.30.1 (2024-07-03) ### Notes diff --git a/waku/factory/networks_config.nim b/waku/factory/networks_config.nim index 6d7da343e..ee3c4ef97 100644 --- a/waku/factory/networks_config.nim +++ b/waku/factory/networks_config.nim @@ -27,7 +27,7 @@ proc TheWakuNetworkConf*(T: type ClusterConf): ClusterConf = rlnRelayChainId: 11155111, rlnRelayBandwidthThreshold: 0, rlnEpochSizeSec: 600, - rlnRelayUserMessageLimit: 20, + rlnRelayUserMessageLimit: 100, pubsubTopics: @[ "/waku/2/rs/1/0", "/waku/2/rs/1/1", "/waku/2/rs/1/2", "/waku/2/rs/1/3", diff --git a/waku/waku_archive/driver/postgres_driver/postgres_driver.nim b/waku/waku_archive/driver/postgres_driver/postgres_driver.nim index 975780e81..6bce4eadc 100644 --- a/waku/waku_archive/driver/postgres_driver/postgres_driver.nim +++ b/waku/waku_archive/driver/postgres_driver/postgres_driver.nim @@ -1012,6 +1012,24 @@ proc performWriteQueryWithLock*( debug "skip performWriteQuery because the advisory lock is acquired by other" return ok() + if error.contains("already exists"): + ## expected to happen when trying to add a partition table constraint that already exists + ## e.g., constraint "constraint_name" for relation "messages_1720364735_1720364740" already exists + debug "skip already exists error", error = error + return ok() + + if error.contains("is already a partition"): + ## expected to happen when a node tries to add a partition that is already attached, + ## e.g., "messages_1720364735_1720364740" is already a partition + debug "skip is already a partition error", error = error + return ok() + + if error.contains("does not exist"): + ## expected to happen when trying to drop a constraint that has already been dropped by other + ## constraint "constraint_name" of relation "messages_1720364735_1720364740" does not exist + debug "skip does not exist error", error = error + return ok() + debug "protected query ended with error", error = $error return err("protected query ended with error:" & $error) @@ -1042,10 +1060,6 @@ proc addPartition( " (LIKE messages INCLUDING DEFAULTS INCLUDING CONSTRAINTS);" (await self.performWriteQueryWithLock(createPartitionQuery)).isOkOr: - if error.contains("already exists"): - debug "skip create new partition as it already exists: ", skipped_error = $error - return ok() - return err(fmt"error adding partition [{partitionName}]: " & $error) ## Add constraint to the partition table so that EXCLUSIVE ACCESS is not performed when