tDatabase transaction tweaks in roomserver

This commit is contained in:
Neil Alexander 2022-10-07 12:21:38 +01:00
parent b9d0e9f7ed
commit 8d8f4689a0
No known key found for this signature in database
GPG Key ID: A02A2019A2BB0944

View File

@ -598,7 +598,7 @@ func (d *Database) storeEvent(
} }
// First writer is with a database-provided transaction, so that NIDs are assigned // First writer is with a database-provided transaction, so that NIDs are assigned
// globally outside of the updater context, to help avoid races. // globally outside of the updater context, to help avoid races.
err = d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error { err = d.Writer.Do(d.DB, txn, func(txn *sql.Tx) error {
// TODO: Here we should aim to have two different code paths for new rooms // TODO: Here we should aim to have two different code paths for new rooms
// vs existing ones. // vs existing ones.
@ -964,9 +964,9 @@ func (d *Database) loadRedactionPair(
} }
if isRedactionEvent { if isRedactionEvent {
redactedEvent = d.loadEvent(ctx, info.RedactsEventID) redactedEvent = d.loadEvent(ctx, txn, info.RedactsEventID)
} else { } else {
redactionEvent = d.loadEvent(ctx, info.RedactionEventID) redactionEvent = d.loadEvent(ctx, txn, info.RedactionEventID)
} }
return redactionEvent, redactedEvent, info.Validated, nil return redactionEvent, redactedEvent, info.Validated, nil
@ -982,15 +982,15 @@ func (d *Database) applyRedactions(events []types.Event) {
} }
// loadEvent loads a single event or returns nil on any problems/missing event // loadEvent loads a single event or returns nil on any problems/missing event
func (d *Database) loadEvent(ctx context.Context, eventID string) *types.Event { func (d *Database) loadEvent(ctx context.Context, txn *sql.Tx, eventID string) *types.Event {
nids, err := d.EventNIDs(ctx, []string{eventID}) nids, err := d.eventNIDs(ctx, txn, []string{eventID}, NoFilter)
if err != nil { if err != nil {
return nil return nil
} }
if len(nids) == 0 { if len(nids) == 0 {
return nil return nil
} }
evs, err := d.Events(ctx, []types.EventNID{nids[eventID]}) evs, err := d.events(ctx, txn, []types.EventNID{nids[eventID]})
if err != nil { if err != nil {
return nil return nil
} }
@ -1358,7 +1358,7 @@ func (d *Database) ForgetRoom(ctx context.Context, userID, roomID string, forget
} }
return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error { return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
return d.MembershipTable.UpdateForgetMembership(ctx, nil, roomNIDs[0], stateKeyNID, forget) return d.MembershipTable.UpdateForgetMembership(ctx, txn, roomNIDs[0], stateKeyNID, forget)
}) })
} }