mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-31 21:32:46 +00:00
Cleaner retry for backfill
This commit is contained in:
parent
ae7919c2cf
commit
e4852eea09
1 changed files with 12 additions and 6 deletions
|
@ -79,24 +79,30 @@ func (r *Backfiller) PerformBackfill(
|
||||||
// Scan the event tree for events to send back.
|
// Scan the event tree for events to send back.
|
||||||
resultNIDs, err := helpers.ScanEventTree(ctx, r.DB, info, front, visited, request.Limit, request.ServerName)
|
resultNIDs, err := helpers.ScanEventTree(ctx, r.DB, info, front, visited, request.Limit, request.ServerName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return r.backfillViaFederation(ctx, request, response)
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve events from the list that was filled previously.
|
// Retrieve events from the list that was filled previously.
|
||||||
var loadedEvents []*gomatrixserverlib.Event
|
var loadedEvents []*gomatrixserverlib.Event
|
||||||
|
var retried bool
|
||||||
|
retryLoadEvents:
|
||||||
loadedEvents, err = helpers.LoadEvents(ctx, r.DB, resultNIDs)
|
loadedEvents, err = helpers.LoadEvents(ctx, r.DB, resultNIDs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return r.backfillViaFederation(ctx, request, response)
|
if _, ok := err.(types.MissingEventError); !retried && ok {
|
||||||
|
err = r.backfillViaFederation(ctx, request, response)
|
||||||
|
if err == nil {
|
||||||
|
retried = true
|
||||||
|
goto retryLoadEvents
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, event := range loadedEvents {
|
for _, event := range loadedEvents {
|
||||||
response.Events = append(response.Events, event.Headered(info.RoomVersion))
|
response.Events = append(response.Events, event.Headered(info.RoomVersion))
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
return err
|
||||||
return r.backfillViaFederation(ctx, request, response)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Backfiller) backfillViaFederation(ctx context.Context, req *api.PerformBackfillRequest, res *api.PerformBackfillResponse) error {
|
func (r *Backfiller) backfillViaFederation(ctx context.Context, req *api.PerformBackfillRequest, res *api.PerformBackfillResponse) error {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue