Defer keyserver and federationsender wakeups to give HTTP listeners time to start (#1389)

main
Neil Alexander 2020-09-03 21:17:55 +01:00 committed by GitHub
parent 33b8143a95
commit 04bc09f591
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 21 deletions

View File

@ -20,6 +20,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"sync" "sync"
"time"
stateapi "github.com/matrix-org/dendrite/currentstateserver/api" stateapi "github.com/matrix-org/dendrite/currentstateserver/api"
"github.com/matrix-org/dendrite/federationsender/statistics" "github.com/matrix-org/dendrite/federationsender/statistics"
@ -65,6 +66,7 @@ func NewOutgoingQueues(
queues: map[gomatrixserverlib.ServerName]*destinationQueue{}, queues: map[gomatrixserverlib.ServerName]*destinationQueue{},
} }
// 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.
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 {
@ -85,6 +87,7 @@ func NewOutgoingQueues(
queues.getQueue(serverName).wakeQueueIfNeeded() queues.getQueue(serverName).wakeQueueIfNeeded()
} }
} }
})
return queues return queues
} }

View File

@ -48,10 +48,11 @@ func NewInternalAPI(
DB: db, DB: db,
} }
updater := internal.NewDeviceListUpdater(db, keyChangeProducer, fedClient, 8) // 8 workers TODO: configurable updater := internal.NewDeviceListUpdater(db, keyChangeProducer, fedClient, 8) // 8 workers TODO: configurable
err = updater.Start() go func() {
if err != nil { if err := updater.Start(); err != nil {
logrus.WithError(err).Panicf("failed to start device list updater") logrus.WithError(err).Panicf("failed to start device list updater")
} }
}()
return &internal.KeyInternalAPI{ return &internal.KeyInternalAPI{
DB: db, DB: db,
ThisServer: cfg.Matrix.ServerName, ThisServer: cfg.Matrix.ServerName,