Fix number of servers to 5, don't bail making RespState if auth events missing

This commit is contained in:
Neil Alexander 2020-10-12 16:56:49 +01:00
parent 2051c98195
commit a5d156fbfb
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -421,10 +421,14 @@ func (t *txnReq) retrieveMissingAuthEvents(
missingAuthEvents[missingAuthEventID] = struct{}{}
}
numServers := len(t.servers)
if numServers > 5 {
numServers = 5
}
withNextEvent:
for missingAuthEventID := range missingAuthEvents {
withNextServer:
for _, server := range append([]gomatrixserverlib.ServerName{t.Origin}, t.servers...) {
for _, server := range append([]gomatrixserverlib.ServerName{t.Origin}, t.servers[:numServers]...) {
logger.Infof("Retrieving missing auth event %q from %q", missingAuthEventID, server)
tx, err := t.federation.GetEvent(ctx, server, missingAuthEventID)
if err != nil {
@ -973,7 +977,9 @@ func (t *txnReq) createRespStateFromStateIDs(stateIDs gomatrixserverlib.RespStat
for i := range stateIDs.AuthEventIDs {
ev, ok := t.haveEvents[stateIDs.AuthEventIDs[i]]
if !ok {
return nil, fmt.Errorf("missing auth event %s", stateIDs.AuthEventIDs[i])
//return nil, fmt.Errorf("missing auth event %s", stateIDs.AuthEventIDs[i])
logrus.Warnf("Missing auth event in createRespStateFromStateIDs:", stateIDs.AuthEventIDs[i])
continue
}
respState.AuthEvents[i] = ev.Unwrap()
}
@ -998,7 +1004,11 @@ func (t *txnReq) lookupEvent(ctx context.Context, roomVersion gomatrixserverlib.
}
var event gomatrixserverlib.Event
found := false
for _, serverName := range append([]gomatrixserverlib.ServerName{t.Origin}, t.servers...) {
numServers := len(t.servers)
if numServers > 5 {
numServers = 5
}
for _, serverName := range append([]gomatrixserverlib.ServerName{t.Origin}, t.servers[:numServers]...) {
txn, err := t.federation.GetEvent(ctx, serverName, missingEventID)
if err != nil || len(txn.PDUs) == 0 {
util.GetLogger(ctx).WithError(err).WithField("event_id", missingEventID).Warn("Failed to get missing /event for event ID")