Skip to content

Commit

Permalink
feat: autosharding content topics in config (#1856)
Browse files Browse the repository at this point in the history
- added content topic to config.
- updated ENR building to include content topics.
  • Loading branch information
SionoiS committed Aug 1, 2023
1 parent bbff1ac commit afb93e2
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 7 deletions.
24 changes: 21 additions & 3 deletions apps/wakunode2/app.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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:
Expand Down
10 changes: 7 additions & 3 deletions apps/wakunode2/external_config.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion tests/wakunode2/test_app.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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
)

Expand Down

0 comments on commit afb93e2

Please sign in to comment.