Ignore depth in federation API (#1451)

This commit is contained in:
Neil Alexander 2020-09-29 14:07:59 +01:00 committed by GitHub
parent b0d5d1cc9f
commit 43cdba9a69
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 13 deletions

View file

@ -26,7 +26,7 @@ type getMissingEventRequest struct {
EarliestEvents []string `json:"earliest_events"` EarliestEvents []string `json:"earliest_events"`
LatestEvents []string `json:"latest_events"` LatestEvents []string `json:"latest_events"`
Limit int `json:"limit"` Limit int `json:"limit"`
MinDepth int64 `json:"min_depth"` MinDepth int64 `json:"min_depth"` // not used
} }
// GetMissingEvents returns missing events between earliest_events & latest_events. // GetMissingEvents returns missing events between earliest_events & latest_events.
@ -59,7 +59,7 @@ func GetMissingEvents(
return jsonerror.InternalServerError() return jsonerror.InternalServerError()
} }
eventsResponse.Events = filterEvents(eventsResponse.Events, gme.MinDepth, roomID) eventsResponse.Events = filterEvents(eventsResponse.Events, roomID)
resp := gomatrixserverlib.RespMissingEvents{ resp := gomatrixserverlib.RespMissingEvents{
Events: gomatrixserverlib.UnwrapEventHeaders(eventsResponse.Events), Events: gomatrixserverlib.UnwrapEventHeaders(eventsResponse.Events),
@ -71,13 +71,13 @@ func GetMissingEvents(
} }
} }
// filterEvents returns only those events with matching roomID and having depth greater than minDepth // filterEvents returns only those events with matching roomID
func filterEvents( func filterEvents(
events []gomatrixserverlib.HeaderedEvent, minDepth int64, roomID string, events []gomatrixserverlib.HeaderedEvent, roomID string,
) []gomatrixserverlib.HeaderedEvent { ) []gomatrixserverlib.HeaderedEvent {
ref := events[:0] ref := events[:0]
for _, ev := range events { for _, ev := range events {
if ev.Depth() >= minDepth && ev.RoomID() == roomID { if ev.RoomID() == roomID {
ref = append(ref, ev) ref = append(ref, ev)
} }
} }

View file

@ -656,7 +656,7 @@ retryAllowedState:
// getMissingEvents returns a nil backwardsExtremity if missing events were fetched and handled, else returns the new backwards extremity which we should // getMissingEvents returns a nil backwardsExtremity if missing events were fetched and handled, else returns the new backwards extremity which we should
// begin from. Returns an error only if we should terminate the transaction which initiated /get_missing_events // begin from. Returns an error only if we should terminate the transaction which initiated /get_missing_events
// This function recursively calls txnReq.processEvent with the missing events, which will be processed before this function returns. // This function recursively calls txnReq.processEvent with the missing events, which will be processed before this function returns.
// This means that we may recursively call this function, as we spider back up prev_events to the min depth. // This means that we may recursively call this function, as we spider back up prev_events.
// nolint:gocyclo // nolint:gocyclo
func (t *txnReq) getMissingEvents(ctx context.Context, e gomatrixserverlib.Event, roomVersion gomatrixserverlib.RoomVersion, isInboundTxn bool) (backwardsExtremity *gomatrixserverlib.Event, err error) { func (t *txnReq) getMissingEvents(ctx context.Context, e gomatrixserverlib.Event, roomVersion gomatrixserverlib.RoomVersion, isInboundTxn bool) (backwardsExtremity *gomatrixserverlib.Event, err error) {
if !isInboundTxn { if !isInboundTxn {
@ -679,11 +679,6 @@ func (t *txnReq) getMissingEvents(ctx context.Context, e gomatrixserverlib.Event
for i := range res.LatestEvents { for i := range res.LatestEvents {
latestEvents[i] = res.LatestEvents[i].EventID latestEvents[i] = res.LatestEvents[i].EventID
} }
// this server just sent us an event for which we do not know its prev_events - ask that server for those prev_events.
minDepth := int(res.Depth) - 20
if minDepth < 0 {
minDepth = 0
}
servers := []gomatrixserverlib.ServerName{t.Origin} servers := []gomatrixserverlib.ServerName{t.Origin}
serverReq := &api.QueryServerJoinedToRoomRequest{ serverReq := &api.QueryServerJoinedToRoomRequest{
@ -700,8 +695,6 @@ func (t *txnReq) getMissingEvents(ctx context.Context, e gomatrixserverlib.Event
var m gomatrixserverlib.RespMissingEvents var m gomatrixserverlib.RespMissingEvents
if m, err = t.federation.LookupMissingEvents(ctx, server, e.RoomID(), gomatrixserverlib.MissingEvents{ if m, err = t.federation.LookupMissingEvents(ctx, server, e.RoomID(), gomatrixserverlib.MissingEvents{
Limit: 20, Limit: 20,
// synapse uses the min depth they've ever seen in that room
MinDepth: minDepth,
// The latest event IDs that the sender already has. These are skipped when retrieving the previous events of latest_events. // The latest event IDs that the sender already has. These are skipped when retrieving the previous events of latest_events.
EarliestEvents: latestEvents, EarliestEvents: latestEvents,
// The event IDs to retrieve the previous events for. // The event IDs to retrieve the previous events for.