Skip to content

Commit 1ee5ab5

Browse files
Merge pull request #3955 from OffchainLabs/port-3963
Port - Fix PopulateFeedBacklog implementation (#3953)
2 parents 6083285 + c95c37a commit 1ee5ab5

File tree

4 files changed

+38
-2
lines changed

4 files changed

+38
-2
lines changed

arbnode/inbox_tracker.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,7 @@ func (t *InboxTracker) PopulateFeedBacklog(broadcastServer *broadcaster.Broadcas
318318
}
319319
feedMessages = append(feedMessages, feedMessage)
320320
}
321-
broadcastServer.BroadcastFeedMessages(feedMessages)
322-
return nil
321+
return broadcastServer.PopulateFeedBacklog(feedMessages)
323322
}
324323

325324
func (t *InboxTracker) legacyGetDelayedMessageAndAccumulator(ctx context.Context, seqNum uint64) (*arbostypes.L1IncomingMessage, common.Hash, error) {

broadcaster/broadcaster.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,14 @@ func (b *Broadcaster) BroadcastFeedMessages(messages []*m.BroadcastFeedMessage)
128128
b.server.Broadcast(bm)
129129
}
130130

131+
func (s *Broadcaster) PopulateFeedBacklog(messages []*m.BroadcastFeedMessage) error {
132+
bm := &m.BroadcastMessage{
133+
Version: 1,
134+
Messages: messages,
135+
}
136+
return s.server.PopulateFeedBacklog(bm)
137+
}
138+
131139
func (b *Broadcaster) Confirm(msgIdx arbutil.MessageIndex) {
132140
log.Debug("confirming msgIdx", "msgIdx", msgIdx)
133141
b.server.Broadcast(&m.BroadcastMessage{

wsbroadcastserver/clientmanager.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,31 @@ func (cm *ClientManager) Broadcast(bm *m.BroadcastMessage) {
151151
cm.broadcastChan <- bm
152152
}
153153

154+
// populateFeedBacklog adds the given BroadcastMessage to backlog, and also broadcasts it to feed if the ClientManager is started
155+
func (cm *ClientManager) populateFeedBacklog(bm *m.BroadcastMessage) error {
156+
if cm.Started() {
157+
cm.Broadcast(bm)
158+
return nil
159+
}
160+
if len(bm.Messages) == 0 {
161+
return cm.backlog.Append(bm)
162+
}
163+
for i, msg := range bm.Messages {
164+
m := &m.BroadcastMessage{
165+
Version: bm.Version,
166+
Messages: []*m.BroadcastFeedMessage{msg},
167+
}
168+
// This ensures that only one message is added to backlog with the confirmed sequence number
169+
if i == 0 {
170+
m.ConfirmedSequenceNumberMessage = bm.ConfirmedSequenceNumberMessage
171+
}
172+
if err := cm.backlog.Append(m); err != nil {
173+
return err
174+
}
175+
}
176+
return nil
177+
}
178+
154179
func (cm *ClientManager) doBroadcast(bm *m.BroadcastMessage) ([]*ClientConnection, error) {
155180
if err := cm.backlog.Append(bm); err != nil {
156181
return nil, err

wsbroadcastserver/wsbroadcastserver.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,10 @@ func (s *WSBroadcastServer) Broadcast(bm *m.BroadcastMessage) {
536536
s.clientManager.Broadcast(bm)
537537
}
538538

539+
func (s *WSBroadcastServer) PopulateFeedBacklog(bm *m.BroadcastMessage) error {
540+
return s.clientManager.populateFeedBacklog(bm)
541+
}
542+
539543
func (s *WSBroadcastServer) ClientCount() int32 {
540544
return s.clientManager.ClientCount()
541545
}

0 commit comments

Comments
 (0)