aboutsummaryrefslogtreecommitdiff
path: root/roomserver/storage/interface.go
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2022-02-04 10:39:34 +0000
committerGitHub <noreply@github.com>2022-02-04 10:39:34 +0000
commiteb352a5f6bdb48cb2d795e3fe2cd7d354580a761 (patch)
treedeefb3239e44be8938dcd784cc2094274e1d30ef /roomserver/storage/interface.go
parent4d9f5b2e5787d23e1dbcebfda1c6d99d3498ec7e (diff)
Full roomserver input transactional isolation (#2141)
* Add transaction to all database tables in roomserver, rename latest events updater to room updater, use room updater for all RS input * Better transaction management * Tweak order * Handle cases where the room does not exist * Other fixes * More tweaks * Fill some gaps * Fill in the gaps * good lord it gets worse * Don't roll back transactions when events rejected * Pass through errors properly * Fix bugs * Fix incorrect error check * Don't panic on nil txns * Tweaks * Hopefully fix panics for good in SQLite this time * Fix rollback * Minor bug fixes with latest event updater * Some review comments * Revert "Some review comments" This reverts commit 0caf8cf53e62c33f7b83c52e9df1d963871f751e. * Fix a couple of bugs * Clearer commit and rollback results * Remove unnecessary prepares
Diffstat (limited to 'roomserver/storage/interface.go')
-rw-r--r--roomserver/storage/interface.go7
1 files changed, 3 insertions, 4 deletions
diff --git a/roomserver/storage/interface.go b/roomserver/storage/interface.go
index 15764366..a9851e05 100644
--- a/roomserver/storage/interface.go
+++ b/roomserver/storage/interface.go
@@ -86,11 +86,10 @@ type Database interface {
// Lookup the event IDs for a batch of event numeric IDs.
// Returns an error if the retrieval went wrong.
EventIDs(ctx context.Context, eventNIDs []types.EventNID) (map[types.EventNID]string, error)
- // Look up the latest events in a room in preparation for an update.
- // The RoomRecentEventsUpdater must have Commit or Rollback called on it if this doesn't return an error.
- // Returns the latest events in the room and the last eventID sent to the log along with an updater.
+ // Opens and returns a room updater, which locks the room and opens a transaction.
+ // The GetRoomUpdater must have Commit or Rollback called on it if this doesn't return an error.
// If this returns an error then no further action is required.
- GetLatestEventsForUpdate(ctx context.Context, roomInfo types.RoomInfo) (*shared.LatestEventsUpdater, error)
+ GetRoomUpdater(ctx context.Context, roomInfo *types.RoomInfo) (*shared.RoomUpdater, error)
// Look up event references for the latest events in the room and the current state snapshot.
// Returns the latest events, the current state and the maximum depth of the latest events plus 1.
// Returns an error if there was a problem talking to the database.