mirror of
https://github.com/matrix-org/dendrite
synced 2024-12-15 15:52:48 +00:00
Parallelise PDU stream fetching for complete sync
This commit is contained in:
parent
6d1c6f29e0
commit
9b6e807f82
1 changed files with 18 additions and 10 deletions
|
@ -52,7 +52,12 @@ func (p *PDUStreamProvider) CompleteSync(
|
|||
eventFilter := req.Filter.Room.Timeline
|
||||
|
||||
// Build up a /sync response. Add joined rooms.
|
||||
var reqMutex sync.Mutex
|
||||
var reqWaitGroup sync.WaitGroup
|
||||
reqWaitGroup.add(len(joinedRooms))
|
||||
for _, roomID := range joinedRoomIDs {
|
||||
go func() {
|
||||
defer reqWaitGroup.Done()
|
||||
var jr *types.JoinResponse
|
||||
jr, err = p.getJoinResponseForCompleteSync(
|
||||
ctx, roomID, r, &stateFilter, &eventFilter, req.Device,
|
||||
|
@ -61,8 +66,11 @@ func (p *PDUStreamProvider) CompleteSync(
|
|||
req.Log.WithError(err).Error("p.getJoinResponseForCompleteSync failed")
|
||||
return from
|
||||
}
|
||||
reqMutex.Lock()
|
||||
defer reqMutex.Unlock()
|
||||
req.Response.Rooms.Join[roomID] = *jr
|
||||
req.Rooms[roomID] = gomatrixserverlib.Join
|
||||
}()
|
||||
}
|
||||
|
||||
// Add peeked rooms.
|
||||
|
|
Loading…
Reference in a new issue