0
0
Fork 0
mirror of https://github.com/matrix-org/dendrite synced 2024-11-05 15:39:26 +01:00

Fix issue with missing user NIDs (#2874)

This should fix #2696 and possibly other related issues regarding
missing user NIDs.
(https://github.com/matrix-org/dendrite/issues/2094?)
This commit is contained in:
Till 2022-11-11 10:52:43 +01:00 committed by GitHub
parent d35a5642e8
commit c648c671a3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -110,6 +110,19 @@ func (d *Database) eventStateKeyNIDs(
for eventStateKey, nid := range nids { for eventStateKey, nid := range nids {
result[eventStateKey] = nid result[eventStateKey] = nid
} }
// We received some nids, but are still missing some, work out which and create them
if len(eventStateKeys) < len(result) {
for _, eventStateKey := range eventStateKeys {
if _, ok := result[eventStateKey]; ok {
continue
}
nid, err := d.assignStateKeyNID(ctx, txn, eventStateKey)
if err != nil {
return result, err
}
result[eventStateKey] = nid
}
}
return result, nil return result, nil
} }
@ -1243,7 +1256,7 @@ func (d *Database) GetBulkStateContent(ctx context.Context, roomIDs []string, tu
} }
eventStateKeyNIDMap, err := d.EventStateKeysTable.BulkSelectEventStateKeyNID(ctx, nil, eventStateKeys) eventStateKeyNIDMap, err := d.eventStateKeyNIDs(ctx, nil, eventStateKeys)
if err != nil { if err != nil {
return nil, fmt.Errorf("GetBulkStateContent: failed to map state key nids: %w", err) return nil, fmt.Errorf("GetBulkStateContent: failed to map state key nids: %w", err)
} }
@ -1309,7 +1322,7 @@ func (d *Database) JoinedUsersSetInRooms(ctx context.Context, roomIDs, userIDs [
if err != nil { if err != nil {
return nil, err return nil, err
} }
userNIDsMap, err := d.EventStateKeysTable.BulkSelectEventStateKeyNID(ctx, nil, userIDs) userNIDsMap, err := d.eventStateKeyNIDs(ctx, nil, userIDs)
if err != nil { if err != nil {
return nil, err return nil, err
} }