fix: start watchTopicShards once (#1298)

This commit is contained in:
Igor Sirotin 2025-12-09 11:50:39 +01:00 committed by GitHub
parent 5635735da6
commit 4b28d08451
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
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 {