From c5e7d8f206c3f232ff8e9cfb2188cce64e7adbdd Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Thu, 13 Feb 2020 15:19:26 +0000 Subject: [PATCH] Fix errcheck lint errors --- roomserver/input/events.go | 7 ++++++- roomserver/input/latest_events.go | 7 ++++++- roomserver/storage/sqlite3/storage.go | 6 +++--- syncapi/storage/postgres/syncserver.go | 16 ++++++++++++--- syncapi/storage/sqlite3/syncserver.go | 28 ++++++++++++++++++++------ 5 files changed, 50 insertions(+), 14 deletions(-) diff --git a/roomserver/input/events.go b/roomserver/input/events.go index 03023a4af..a3b70753e 100644 --- a/roomserver/input/events.go +++ b/roomserver/input/events.go @@ -196,7 +196,12 @@ func processInviteEvent( return err } succeeded := false - defer common.EndTransaction(updater, &succeeded) + defer func() { + txerr := common.EndTransaction(updater, &succeeded) + if err == nil && txerr != nil { + err = txerr + } + }() if updater.IsJoin() { // If the user is joined to the room then that takes precedence over this diff --git a/roomserver/input/latest_events.go b/roomserver/input/latest_events.go index 7e03d544a..f9fd1d5d4 100644 --- a/roomserver/input/latest_events.go +++ b/roomserver/input/latest_events.go @@ -60,7 +60,12 @@ func updateLatestEvents( return } succeeded := false - defer common.EndTransaction(updater, &succeeded) + defer func() { + txerr := common.EndTransaction(updater, &succeeded) + if err == nil && txerr != nil { + err = txerr + } + }() u := latestEventsUpdater{ ctx: ctx, db: db, updater: updater, ow: ow, roomNID: roomNID, diff --git a/roomserver/storage/sqlite3/storage.go b/roomserver/storage/sqlite3/storage.go index 16cbf7835..e20e8aed7 100644 --- a/roomserver/storage/sqlite3/storage.go +++ b/roomserver/storage/sqlite3/storage.go @@ -254,7 +254,7 @@ func (d *Database) Events( var eventJSONs []eventJSONPair var err error results := make([]types.Event, len(eventNIDs)) - common.WithTransaction(d.db, func(txn *sql.Tx) error { + err = common.WithTransaction(d.db, func(txn *sql.Tx) error { eventJSONs, err = d.statements.bulkSelectEventJSON(ctx, txn, eventNIDs) if err != nil || len(eventJSONs) == 0 { return nil @@ -318,7 +318,7 @@ func (d *Database) SetState( func (d *Database) StateAtEventIDs( ctx context.Context, eventIDs []string, ) (se []types.StateAtEvent, err error) { - common.WithTransaction(d.db, func(txn *sql.Tx) error { + err = common.WithTransaction(d.db, func(txn *sql.Tx) error { se, err = d.statements.bulkSelectStateAtEventByID(ctx, txn, eventIDs) return err }) @@ -805,7 +805,7 @@ func (d *Database) GetMembership( func (d *Database) GetMembershipEventNIDsForRoom( ctx context.Context, roomNID types.RoomNID, joinOnly bool, ) (eventNIDs []types.EventNID, err error) { - common.WithTransaction(d.db, func(txn *sql.Tx) error { + err = common.WithTransaction(d.db, func(txn *sql.Tx) error { if joinOnly { eventNIDs, err = d.statements.selectMembershipsFromRoomAndMembership( ctx, txn, roomNID, membershipStateJoin, diff --git a/syncapi/storage/postgres/syncserver.go b/syncapi/storage/postgres/syncserver.go index aec37185d..b3a7ba13a 100644 --- a/syncapi/storage/postgres/syncserver.go +++ b/syncapi/storage/postgres/syncserver.go @@ -413,13 +413,18 @@ func (d *SyncServerDatasource) addPDUDeltaToResponse( numRecentEventsPerRoom int, wantFullState bool, res *types.Response, -) ([]string, error) { +) (joinedRoomIDs []string, err error) { txn, err := d.db.BeginTx(ctx, &txReadOnlySnapshot) if err != nil { return nil, err } var succeeded bool - defer common.EndTransaction(txn, &succeeded) + defer func() { + txerr := common.EndTransaction(txn, &succeeded) + if err == nil && txerr != nil { + err = txerr + } + }() stateFilter := gomatrixserverlib.DefaultStateFilter() // TODO: use filter provided in request @@ -570,7 +575,12 @@ func (d *SyncServerDatasource) getResponseWithPDUsForCompleteSync( return } var succeeded bool - defer common.EndTransaction(txn, &succeeded) + defer func() { + txerr := common.EndTransaction(txn, &succeeded) + if err == nil && txerr != nil { + err = txerr + } + }() // Get the current sync position which we will base the sync response on. toPos, err = d.syncPositionTx(ctx, txn) diff --git a/syncapi/storage/sqlite3/syncserver.go b/syncapi/storage/sqlite3/syncserver.go index 0a5a4c220..9aa833286 100644 --- a/syncapi/storage/sqlite3/syncserver.go +++ b/syncapi/storage/sqlite3/syncserver.go @@ -444,13 +444,18 @@ func (d *SyncServerDatasource) addPDUDeltaToResponse( numRecentEventsPerRoom int, wantFullState bool, res *types.Response, -) ([]string, error) { +) (joinedRoomIDs []string, err error) { txn, err := d.db.BeginTx(ctx, &txReadOnlySnapshot) if err != nil { return nil, err } var succeeded bool - defer common.EndTransaction(txn, &succeeded) + defer func() { + txerr := common.EndTransaction(txn, &succeeded) + if err == nil && txerr != nil { + err = txerr + } + }() stateFilterPart := gomatrixserverlib.DefaultStateFilter() // TODO: use filter provided in request @@ -601,7 +606,12 @@ func (d *SyncServerDatasource) getResponseWithPDUsForCompleteSync( return } var succeeded bool - defer common.EndTransaction(txn, &succeeded) + defer func() { + txerr := common.EndTransaction(txn, &succeeded) + if err == nil && txerr != nil { + err = txerr + } + }() // Get the current sync position which we will base the sync response on. toPos, err = d.syncPositionTx(ctx, txn) @@ -734,14 +744,20 @@ func (d *SyncServerDatasource) GetAccountDataInRange( // Returns an error if there was an issue with the upsert func (d *SyncServerDatasource) UpsertAccountData( ctx context.Context, userID, roomID, dataType string, -) (types.StreamPosition, error) { +) (sp types.StreamPosition, err error) { txn, err := d.db.BeginTx(ctx, nil) if err != nil { return types.StreamPosition(0), err } var succeeded bool - defer common.EndTransaction(txn, &succeeded) - return d.accountData.insertAccountData(ctx, txn, userID, roomID, dataType) + defer func() { + txerr := common.EndTransaction(txn, &succeeded) + if err == nil && txerr != nil { + err = txerr + } + }() + sp, err = d.accountData.insertAccountData(ctx, txn, userID, roomID, dataType) + return } // AddInviteEvent stores a new invite event for a user.