From afb93e299536bfdfe791a3ec88fb8608edce98bd Mon Sep 17 00:00:00 2001 From: Simon-Pierre Vivier Date: Tue, 1 Aug 2023 16:01:44 -0400 Subject: [PATCH] feat: autosharding content topics in config (#1856) - added content topic to config. - updated ENR building to include content topics. --- apps/wakunode2/app.nim | 24 +++++++++++++++++++++--- apps/wakunode2/external_config.nim | 10 +++++++--- tests/wakunode2/test_app.nim | 2 +- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/apps/wakunode2/app.nim b/apps/wakunode2/app.nim index 3b96a4b97..83ce9e0dd 100644 --- a/apps/wakunode2/app.nim +++ b/apps/wakunode2/app.nim @@ -127,9 +127,27 @@ proc init*(T: type App, rng: ref HmacDrbgContext, conf: WakuNodeConf): T = enrBuilder.withMultiaddrs(netConfig.enrMultiaddrs) - let addShardedTopics = enrBuilder.withShardedTopics(conf.topics) + let contentTopicsRes = conf.contentTopics.mapIt(NsContentTopic.parse(it)) + + for res in contentTopicsRes: + if res.isErr(): + error "failed to parse content topic", error=res.error + quit(QuitFailure) + + let pubsubTopicsRes = contentTopicsRes.mapIt(singleHighestWeigthShard(it.get())) + + for res in pubsubTopicsRes: + if res.isErr(): + error "failed to shard content topic", error=res.error + quit(QuitFailure) + + let pubsubTopics = pubsubTopicsRes.mapIt($it.get()) + + let topics = pubsubTopics & conf.pubsubTopics + + let addShardedTopics = enrBuilder.withShardedTopics(topics) if addShardedTopics.isErr(): - error "failed to add sharded topics", error=addShardedTopics.error + error "failed to add sharded topics to ENR", error=addShardedTopics.error quit(QuitFailure) let recordRes = enrBuilder.build() @@ -341,7 +359,7 @@ proc setupProtocols(node: WakuNode, peerExchangeHandler = some(handlePeerExchange) if conf.relay: - let pubsubTopics = conf.topics + let pubsubTopics = conf.pubsubTopics try: await mountRelay(node, pubsubTopics, peerExchangeHandler = peerExchangeHandler) except CatchableError: diff --git a/apps/wakunode2/external_config.nim b/apps/wakunode2/external_config.nim index 67a2cbf4c..bfc813cf1 100644 --- a/apps/wakunode2/external_config.nim +++ b/apps/wakunode2/external_config.nim @@ -225,10 +225,14 @@ type defaultValue: false name: "keep-alive" }: bool - topics* {. - desc: "Default topic to subscribe to. Argument may be repeated." + pubsubTopics* {. + desc: "Default pubsub topic to subscribe to. Argument may be repeated." defaultValue: @["/waku/2/default-waku/proto"] - name: "topic" .}: seq[string] + name: "pubsub-topic" .}: seq[string] + + contentTopics* {. + desc: "Default content topic to subscribe to. Argument may be repeated." + name: "content-topic" .}: seq[string] ## Store and message store config diff --git a/tests/wakunode2/test_app.nim b/tests/wakunode2/test_app.nim index 040582db0..a8da0f147 100644 --- a/tests/wakunode2/test_app.nim +++ b/tests/wakunode2/test_app.nim @@ -23,7 +23,7 @@ proc defaultTestWakuNodeConf(): WakuNodeConf = metricsServerAddress: ValidIpAddress.init("127.0.0.1"), nat: "any", maxConnections: 50, - topics: @["/waku/2/default-waku/proto"], + pubsubTopics: @["/waku/2/default-waku/proto"], relay: true )