mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-01 03:03:10 -06:00
Wake destination queues gradually, rather than all at once
This commit is contained in:
parent
6748a2a823
commit
be24eea797
|
|
@ -104,28 +104,28 @@ func NewOutgoingQueues(
|
||||||
}
|
}
|
||||||
// Look up which servers we have pending items for and then rehydrate those queues.
|
// Look up which servers we have pending items for and then rehydrate those queues.
|
||||||
if !disabled {
|
if !disabled {
|
||||||
time.AfterFunc(time.Second*5, func() {
|
serverNames := map[gomatrixserverlib.ServerName]struct{}{}
|
||||||
serverNames := map[gomatrixserverlib.ServerName]struct{}{}
|
if names, err := db.GetPendingPDUServerNames(context.Background()); err == nil {
|
||||||
if names, err := db.GetPendingPDUServerNames(context.Background()); err == nil {
|
for _, serverName := range names {
|
||||||
for _, serverName := range names {
|
serverNames[serverName] = struct{}{}
|
||||||
serverNames[serverName] = struct{}{}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.WithError(err).Error("Failed to get PDU server names for destination queue hydration")
|
|
||||||
}
|
}
|
||||||
if names, err := db.GetPendingEDUServerNames(context.Background()); err == nil {
|
} else {
|
||||||
for _, serverName := range names {
|
log.WithError(err).Error("Failed to get PDU server names for destination queue hydration")
|
||||||
serverNames[serverName] = struct{}{}
|
}
|
||||||
}
|
if names, err := db.GetPendingEDUServerNames(context.Background()); err == nil {
|
||||||
} else {
|
for _, serverName := range names {
|
||||||
log.WithError(err).Error("Failed to get EDU server names for destination queue hydration")
|
serverNames[serverName] = struct{}{}
|
||||||
}
|
}
|
||||||
for serverName := range serverNames {
|
} else {
|
||||||
if queue := queues.getQueue(serverName); queue != nil {
|
log.WithError(err).Error("Failed to get EDU server names for destination queue hydration")
|
||||||
queue.wakeQueueIfNeeded()
|
}
|
||||||
}
|
offset := time.Duration(5)
|
||||||
|
for serverName := range serverNames {
|
||||||
|
if queue := queues.getQueue(serverName); queue != nil {
|
||||||
|
time.AfterFunc(time.Second*offset, queue.wakeQueueIfNeeded)
|
||||||
|
offset++
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
return queues
|
return queues
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue