From 910522ffd0f15e1f76bcfec0be58ab558c9a43cf Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Thu, 20 Aug 2020 16:59:53 +0100 Subject: [PATCH] Refactor TransactionWriter in current state server --- currentstateserver/storage/postgres/storage.go | 1 + currentstateserver/storage/shared/storage.go | 3 ++- currentstateserver/storage/sqlite3/storage.go | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/currentstateserver/storage/postgres/storage.go b/currentstateserver/storage/postgres/storage.go index 96ff049b1..b14ec20c9 100644 --- a/currentstateserver/storage/postgres/storage.go +++ b/currentstateserver/storage/postgres/storage.go @@ -32,6 +32,7 @@ func NewDatabase(dbProperties *config.DatabaseOptions) (*Database, error) { } d.Database = shared.Database{ DB: d.db, + Writer: d.writer, CurrentRoomState: currRoomState, } return &d, nil diff --git a/currentstateserver/storage/shared/storage.go b/currentstateserver/storage/shared/storage.go index 46ef9e6c6..a8f17b799 100644 --- a/currentstateserver/storage/shared/storage.go +++ b/currentstateserver/storage/shared/storage.go @@ -27,6 +27,7 @@ import ( type Database struct { DB *sql.DB + Writer sqlutil.TransactionWriter CurrentRoomState tables.CurrentRoomState } @@ -59,7 +60,7 @@ func (d *Database) RedactEvent(ctx context.Context, redactedEventID string, reda func (d *Database) StoreStateEvents(ctx context.Context, addStateEvents []gomatrixserverlib.HeaderedEvent, removeStateEventIDs []string) error { - return sqlutil.WithTransaction(d.DB, func(txn *sql.Tx) error { + return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error { // remove first, then add, as we do not ever delete state, but do replace state which is a remove followed by an add. for _, eventID := range removeStateEventIDs { if err := d.CurrentRoomState.DeleteRoomStateByEventID(ctx, txn, eventID); err != nil { diff --git a/currentstateserver/storage/sqlite3/storage.go b/currentstateserver/storage/sqlite3/storage.go index 9210bcc7d..322359093 100644 --- a/currentstateserver/storage/sqlite3/storage.go +++ b/currentstateserver/storage/sqlite3/storage.go @@ -33,6 +33,7 @@ func NewDatabase(dbProperties *config.DatabaseOptions) (*Database, error) { } d.Database = shared.Database{ DB: d.db, + Writer: d.writer, CurrentRoomState: currRoomState, } return &d, nil