fix: start watchTopicShards once

This commit is contained in:
Igor Sirotin 2025-12-08 20:53:53 +00:00
parent 84a4b1be7a
commit 4be813d71e
No known key found for this signature in database
GPG Key ID: 0EABBCB40CB9AD4A
2 changed files with 10 additions and 0 deletions

View File

@ -348,6 +348,10 @@ func (w *WakuNode) SetRelayShards(rs protocol.RelayShards) error {
}
func (w *WakuNode) watchTopicShards(ctx context.Context) error {
if !w.watchingRelayShards.CompareAndSwap(false, true) {
return nil
}
evtRelaySubscribed, err := w.Relay().Events().Subscribe(new(relay.EvtRelaySubscribed))
if err != nil {
return err
@ -358,10 +362,13 @@ func (w *WakuNode) watchTopicShards(ctx context.Context) error {
return err
}
w.wg.Add(1)
go func() {
defer utils.LogOnPanic()
defer evtRelaySubscribed.Close()
defer evtRelayUnsubscribed.Close()
defer w.wg.Done()
for {
select {

View File

@ -5,6 +5,7 @@ import (
"math/rand"
"net"
"sync"
"sync/atomic"
"time"
backoffv4 "github.com/cenkalti/backoff/v4"
@ -122,6 +123,8 @@ type WakuNode struct {
storeFactory storeFactory
peermanager *peermanager.PeerManager
watchingRelayShards atomic.Bool
}
func defaultStoreFactory(w *WakuNode) legacy_store.Store {