txn nil guard when rolling back LatestEventsUpdater (#1524)
* txn nil guard when rolling back LatestEventsUpdater * Spell lint correctly
This commit is contained in:
parent
6f12b8f85c
commit
e3c2b081c7
1 changed files with 10 additions and 3 deletions
|
@ -18,23 +18,30 @@ type LatestEventsUpdater struct {
|
|||
currentStateSnapshotNID types.StateSnapshotNID
|
||||
}
|
||||
|
||||
func rollback(txn *sql.Tx) {
|
||||
if txn == nil {
|
||||
return
|
||||
}
|
||||
txn.Rollback() // nolint: errcheck
|
||||
}
|
||||
|
||||
func NewLatestEventsUpdater(ctx context.Context, d *Database, txn *sql.Tx, roomInfo types.RoomInfo) (*LatestEventsUpdater, error) {
|
||||
eventNIDs, lastEventNIDSent, currentStateSnapshotNID, err :=
|
||||
d.RoomsTable.SelectLatestEventsNIDsForUpdate(ctx, txn, roomInfo.RoomNID)
|
||||
if err != nil {
|
||||
txn.Rollback() // nolint: errcheck
|
||||
rollback(txn)
|
||||
return nil, err
|
||||
}
|
||||
stateAndRefs, err := d.EventsTable.BulkSelectStateAtEventAndReference(ctx, txn, eventNIDs)
|
||||
if err != nil {
|
||||
txn.Rollback() // nolint: errcheck
|
||||
rollback(txn)
|
||||
return nil, err
|
||||
}
|
||||
var lastEventIDSent string
|
||||
if lastEventNIDSent != 0 {
|
||||
lastEventIDSent, err = d.EventsTable.SelectEventID(ctx, txn, lastEventNIDSent)
|
||||
if err != nil {
|
||||
txn.Rollback() // nolint: errcheck
|
||||
rollback(txn)
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue