mirror of
https://github.com/1f349/dendrite.git
synced 2024-12-22 16:24:10 +00:00
Try to fix HTTP 500s on /members
(#2581)
This commit is contained in:
parent
f0c8a03649
commit
c7d978274d
@ -16,6 +16,7 @@ package query
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
@ -225,6 +226,9 @@ func (r *Queryer) QueryMembershipsForRoom(
|
||||
var eventNIDs []types.EventNID
|
||||
eventNIDs, err = r.DB.GetMembershipEventNIDsForRoom(ctx, info.RoomNID, request.JoinedOnly, request.LocalOnly)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("r.DB.GetMembershipEventNIDsForRoom: %w", err)
|
||||
}
|
||||
events, err = r.DB.Events(ctx, eventNIDs)
|
||||
@ -260,6 +264,9 @@ func (r *Queryer) QueryMembershipsForRoom(
|
||||
var eventNIDs []types.EventNID
|
||||
eventNIDs, err = r.DB.GetMembershipEventNIDsForRoom(ctx, info.RoomNID, request.JoinedOnly, false)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -86,24 +86,24 @@ const insertMembershipSQL = "" +
|
||||
|
||||
const selectMembershipFromRoomAndTargetSQL = "" +
|
||||
"SELECT membership_nid, event_nid, forgotten FROM roomserver_membership" +
|
||||
" WHERE room_nid = $1 AND target_nid = $2"
|
||||
" WHERE room_nid = $1 AND event_nid != 0 AND target_nid = $2"
|
||||
|
||||
const selectMembershipsFromRoomAndMembershipSQL = "" +
|
||||
"SELECT event_nid FROM roomserver_membership" +
|
||||
" WHERE room_nid = $1 AND membership_nid = $2 and forgotten = false"
|
||||
" WHERE room_nid = $1 AND event_nid != 0 AND membership_nid = $2 and forgotten = false"
|
||||
|
||||
const selectLocalMembershipsFromRoomAndMembershipSQL = "" +
|
||||
"SELECT event_nid FROM roomserver_membership" +
|
||||
" WHERE room_nid = $1 AND membership_nid = $2" +
|
||||
" WHERE room_nid = $1 AND event_nid != 0 AND membership_nid = $2" +
|
||||
" AND target_local = true and forgotten = false"
|
||||
|
||||
const selectMembershipsFromRoomSQL = "" +
|
||||
"SELECT event_nid FROM roomserver_membership" +
|
||||
" WHERE room_nid = $1 and forgotten = false"
|
||||
" WHERE room_nid = $1 AND event_nid != 0 and forgotten = false"
|
||||
|
||||
const selectLocalMembershipsFromRoomSQL = "" +
|
||||
"SELECT event_nid FROM roomserver_membership" +
|
||||
" WHERE room_nid = $1" +
|
||||
" WHERE room_nid = $1 AND event_nid != 0" +
|
||||
" AND target_local = true and forgotten = false"
|
||||
|
||||
const selectMembershipForUpdateSQL = "" +
|
||||
|
@ -62,24 +62,24 @@ const insertMembershipSQL = "" +
|
||||
|
||||
const selectMembershipFromRoomAndTargetSQL = "" +
|
||||
"SELECT membership_nid, event_nid, forgotten FROM roomserver_membership" +
|
||||
" WHERE room_nid = $1 AND target_nid = $2"
|
||||
" WHERE room_nid = $1 AND event_nid != 0 AND target_nid = $2"
|
||||
|
||||
const selectMembershipsFromRoomAndMembershipSQL = "" +
|
||||
"SELECT event_nid FROM roomserver_membership" +
|
||||
" WHERE room_nid = $1 AND membership_nid = $2 and forgotten = false"
|
||||
" WHERE room_nid = $1 AND event_nid != 0 AND membership_nid = $2 and forgotten = false"
|
||||
|
||||
const selectLocalMembershipsFromRoomAndMembershipSQL = "" +
|
||||
"SELECT event_nid FROM roomserver_membership" +
|
||||
" WHERE room_nid = $1 AND membership_nid = $2" +
|
||||
" WHERE room_nid = $1 AND event_nid != 0 AND membership_nid = $2" +
|
||||
" AND target_local = true and forgotten = false"
|
||||
|
||||
const selectMembershipsFromRoomSQL = "" +
|
||||
"SELECT event_nid FROM roomserver_membership" +
|
||||
" WHERE room_nid = $1 and forgotten = false"
|
||||
" WHERE room_nid = $1 AND event_nid != 0 and forgotten = false"
|
||||
|
||||
const selectLocalMembershipsFromRoomSQL = "" +
|
||||
"SELECT event_nid FROM roomserver_membership" +
|
||||
" WHERE room_nid = $1" +
|
||||
" WHERE room_nid = $1 AND event_nid != 0" +
|
||||
" AND target_local = true and forgotten = false"
|
||||
|
||||
const selectMembershipForUpdateSQL = "" +
|
||||
|
@ -60,6 +60,9 @@ func TestMembershipTable(t *testing.T) {
|
||||
// This inserts a left user to the room
|
||||
err = tab.InsertMembership(ctx, nil, 1, stateKeyNID, true)
|
||||
assert.NoError(t, err)
|
||||
// We must update the membership with a non-zero event NID or it will get filtered out in later queries
|
||||
_, err = tab.UpdateMembership(ctx, nil, 1, stateKeyNID, userNIDs[0], tables.MembershipStateLeaveOrBan, 1, false)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
// ... so this should be false
|
||||
|
Loading…
Reference in New Issue
Block a user