From 1128632eaa379674356a8bb134084c0c35acacd9 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Fri, 11 Feb 2022 16:42:22 +0000 Subject: [PATCH] Improve error, fix another case where transaction wasn't used properly --- roomserver/internal/input/input_events.go | 2 +- roomserver/storage/postgres/event_json_table.go | 3 ++- roomserver/storage/shared/storage.go | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/roomserver/internal/input/input_events.go b/roomserver/internal/input/input_events.go index 503542c0c..4e151699e 100644 --- a/roomserver/internal/input/input_events.go +++ b/roomserver/internal/input/input_events.go @@ -133,7 +133,7 @@ func (r *Inputer) processRoomEvent( // event. isCreateEvent := event.Type() == gomatrixserverlib.MRoomCreate && event.StateKeyEquals("") if !updater.RoomExists() && !isCreateEvent { - return rollbackTransaction, fmt.Errorf("room does not exist") + return rollbackTransaction, fmt.Errorf("room %s does not exist for event %s", event.RoomID(), event.EventID()) } var missingAuth, missingPrev bool diff --git a/roomserver/storage/postgres/event_json_table.go b/roomserver/storage/postgres/event_json_table.go index 433e445d8..b3220effd 100644 --- a/roomserver/storage/postgres/event_json_table.go +++ b/roomserver/storage/postgres/event_json_table.go @@ -76,7 +76,8 @@ func prepareEventJSONTable(db *sql.DB) (tables.EventJSON, error) { func (s *eventJSONStatements) InsertEventJSON( ctx context.Context, txn *sql.Tx, eventNID types.EventNID, eventJSON []byte, ) error { - _, err := s.insertEventJSONStmt.ExecContext(ctx, int64(eventNID), eventJSON) + stmt := sqlutil.TxStmt(txn, s.insertEventJSONStmt) + _, err := stmt.ExecContext(ctx, int64(eventNID), eventJSON) return err } diff --git a/roomserver/storage/shared/storage.go b/roomserver/storage/shared/storage.go index 8319de265..5f99ee06a 100644 --- a/roomserver/storage/shared/storage.go +++ b/roomserver/storage/shared/storage.go @@ -553,7 +553,7 @@ func (d *Database) storeEvent( err error ) var txn *sql.Tx - if updater != nil { + if updater == nil || updater.txn != nil { txn = updater.txn } err = d.Writer.Do(d.DB, txn, func(txn *sql.Tx) error {