Skip to content

Commit 0182082

Browse files
authored
Merge pull request #5608 from filecoin-project/fix/topic_repeat_join
fix:修复启动时重复注册topic的问题 / use sync once to provent join topic repeatly
2 parents 792b31b + cd6b8c7 commit 0182082

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

app/submodule/mpool/mpool_submodule.go

+15-10
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"fmt"
88
"os"
99
"strconv"
10+
"sync"
1011
"time"
1112

1213
pubsub "github.com/libp2p/go-libp2p-pubsub"
@@ -51,8 +52,7 @@ type messagepoolConfig interface {
5152
// MessagingSubmodule enhances the `Node` with internal message capabilities.
5253
type MessagePoolSubmodule struct { //nolint
5354
// Network Fields
54-
MessageTopic *pubsub.Topic
55-
MessageSub *pubsub.Subscription
55+
MessageSub *pubsub.Subscription
5656

5757
MPool *messagepool.MessagePool
5858
msgSigner *messagepool.MessageSigner
@@ -182,15 +182,20 @@ func (mp *MessagePoolSubmodule) Start(ctx context.Context) error {
182182
return err
183183
}
184184

185+
msgTopic, err := mp.network.Pubsub.Join(topicName)
186+
if err != nil {
187+
return err
188+
}
189+
190+
var once sync.Once
185191
subscribe := func() {
186-
var err error
187-
if mp.MessageTopic, err = mp.network.Pubsub.Join(topicName); err != nil {
188-
panic(err)
189-
}
190-
if mp.MessageSub, err = mp.MessageTopic.Subscribe(); err != nil {
191-
panic(err)
192-
}
193-
go mp.handleIncomingMessage(ctx)
192+
once.Do(func() {
193+
var err error
194+
if mp.MessageSub, err = msgTopic.Subscribe(); err != nil {
195+
panic(err)
196+
}
197+
go mp.handleIncomingMessage(ctx)
198+
})
194199
}
195200

196201
// wait until we are synced within 10 epochs

0 commit comments

Comments
 (0)