Allow disabling txns again on updaters

This commit is contained in:
Neil Alexander 2020-08-18 18:06:58 +01:00
parent 1ecd40082e
commit 0e3bc7a3e6
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
3 changed files with 14 additions and 1 deletions

View file

@ -21,6 +21,7 @@ type membershipUpdater struct {
func NewMembershipUpdater( func NewMembershipUpdater(
ctx context.Context, d *Database, roomID, targetUserID string, ctx context.Context, d *Database, roomID, targetUserID string,
targetLocal bool, roomVersion gomatrixserverlib.RoomVersion, targetLocal bool, roomVersion gomatrixserverlib.RoomVersion,
useTxns bool,
) (types.MembershipUpdater, func() error, error) { ) (types.MembershipUpdater, func() error, error) {
txn, err := d.DB.Begin() txn, err := d.DB.Begin()
if err != nil { if err != nil {
@ -43,6 +44,10 @@ func NewMembershipUpdater(
return nil, nil, fmt.Errorf("d.AssignStateKeyNID: %w", err) return nil, nil, fmt.Errorf("d.AssignStateKeyNID: %w", err)
} }
if !useTxns {
txn = nil
}
updater, cleanup, err := d.membershipUpdaterTxn(ctx, txn, roomNID, targetUserNID, targetLocal) updater, cleanup, err := d.membershipUpdaterTxn(ctx, txn, roomNID, targetUserNID, targetLocal)
if err != nil { if err != nil {
return nil, nil, fmt.Errorf("d.membershipUpdaterTxn: %w", err) return nil, nil, fmt.Errorf("d.membershipUpdaterTxn: %w", err)

View file

@ -347,7 +347,7 @@ func (d *Database) MembershipUpdater(
ctx context.Context, roomID, targetUserID string, ctx context.Context, roomID, targetUserID string,
targetLocal bool, roomVersion gomatrixserverlib.RoomVersion, targetLocal bool, roomVersion gomatrixserverlib.RoomVersion,
) (types.MembershipUpdater, func() error, error) { ) (types.MembershipUpdater, func() error, error) {
return NewMembershipUpdater(ctx, d, roomID, targetUserID, targetLocal, roomVersion) return NewMembershipUpdater(ctx, d, roomID, targetUserID, targetLocal, roomVersion, true)
} }
func (d *Database) GetLatestEventsForUpdate( func (d *Database) GetLatestEventsForUpdate(

View file

@ -24,6 +24,7 @@ import (
"github.com/matrix-org/dendrite/roomserver/storage/shared" "github.com/matrix-org/dendrite/roomserver/storage/shared"
"github.com/matrix-org/dendrite/roomserver/storage/tables" "github.com/matrix-org/dendrite/roomserver/storage/tables"
"github.com/matrix-org/dendrite/roomserver/types" "github.com/matrix-org/dendrite/roomserver/types"
"github.com/matrix-org/gomatrixserverlib"
_ "github.com/mattn/go-sqlite3" _ "github.com/mattn/go-sqlite3"
) )
@ -141,3 +142,10 @@ func (d *Database) GetLatestEventsForUpdate(
) (types.RoomRecentEventsUpdater, func() error, error) { ) (types.RoomRecentEventsUpdater, func() error, error) {
return shared.NewRoomRecentEventsUpdater(&d.Database, ctx, roomNID, false) return shared.NewRoomRecentEventsUpdater(&d.Database, ctx, roomNID, false)
} }
func (d *Database) MembershipUpdater(
ctx context.Context, roomID, targetUserID string,
targetLocal bool, roomVersion gomatrixserverlib.RoomVersion,
) (types.MembershipUpdater, func() error, error) {
return shared.NewMembershipUpdater(ctx, &d.Database, roomID, targetUserID, targetLocal, roomVersion, false)
}