From 0e3bc7a3e6b1b71e583951c45f07864099556121 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Tue, 18 Aug 2020 18:06:58 +0100 Subject: [PATCH] Allow disabling txns again on updaters --- roomserver/storage/shared/membership_updater.go | 5 +++++ roomserver/storage/shared/storage.go | 2 +- roomserver/storage/sqlite3/storage.go | 8 ++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/roomserver/storage/shared/membership_updater.go b/roomserver/storage/shared/membership_updater.go index e9f381dd7..d7bd0d5c8 100644 --- a/roomserver/storage/shared/membership_updater.go +++ b/roomserver/storage/shared/membership_updater.go @@ -21,6 +21,7 @@ type membershipUpdater struct { func NewMembershipUpdater( ctx context.Context, d *Database, roomID, targetUserID string, targetLocal bool, roomVersion gomatrixserverlib.RoomVersion, + useTxns bool, ) (types.MembershipUpdater, func() error, error) { txn, err := d.DB.Begin() if err != nil { @@ -43,6 +44,10 @@ func NewMembershipUpdater( return nil, nil, fmt.Errorf("d.AssignStateKeyNID: %w", err) } + if !useTxns { + txn = nil + } + updater, cleanup, err := d.membershipUpdaterTxn(ctx, txn, roomNID, targetUserNID, targetLocal) if err != nil { return nil, nil, fmt.Errorf("d.membershipUpdaterTxn: %w", err) diff --git a/roomserver/storage/shared/storage.go b/roomserver/storage/shared/storage.go index 56bd8354d..23a20ed67 100644 --- a/roomserver/storage/shared/storage.go +++ b/roomserver/storage/shared/storage.go @@ -347,7 +347,7 @@ func (d *Database) MembershipUpdater( ctx context.Context, roomID, targetUserID string, targetLocal bool, roomVersion gomatrixserverlib.RoomVersion, ) (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( diff --git a/roomserver/storage/sqlite3/storage.go b/roomserver/storage/sqlite3/storage.go index b6594611a..d39e79e6f 100644 --- a/roomserver/storage/sqlite3/storage.go +++ b/roomserver/storage/sqlite3/storage.go @@ -24,6 +24,7 @@ import ( "github.com/matrix-org/dendrite/roomserver/storage/shared" "github.com/matrix-org/dendrite/roomserver/storage/tables" "github.com/matrix-org/dendrite/roomserver/types" + "github.com/matrix-org/gomatrixserverlib" _ "github.com/mattn/go-sqlite3" ) @@ -141,3 +142,10 @@ func (d *Database) GetLatestEventsForUpdate( ) (types.RoomRecentEventsUpdater, func() error, error) { 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) +}