mirror of
https://github.com/matrix-org/sliding-sync.git
synced 2025-03-10 13:37:11 +00:00
Actually use txn when inserting tokens & devices
This commit is contained in:
parent
4705888322
commit
9c1362fc8e
@ -32,8 +32,8 @@ func NewDevicesTable(db *sqlx.DB) *DevicesTable {
|
||||
|
||||
// InsertDevice creates a new devices row with a blank since token if no such row
|
||||
// exists. Otherwise, it does nothing.
|
||||
func (t *DevicesTable) InsertDevice(userID, deviceID string) error {
|
||||
_, err := t.db.Exec(
|
||||
func (t *DevicesTable) InsertDevice(txn *sqlx.Tx, userID, deviceID string) error {
|
||||
_, err := txn.Exec(
|
||||
` INSERT INTO syncv3_sync2_devices(user_id, device_id, since) VALUES($1,$2,$3)
|
||||
ON CONFLICT (user_id, device_id) DO NOTHING`,
|
||||
userID, deviceID, "",
|
||||
|
@ -171,10 +171,10 @@ func (t *TokensTable) TokenForEachDevice(txn *sqlx.Tx) (tokens []TokenForPoller,
|
||||
}
|
||||
|
||||
// Insert a new token into the table.
|
||||
func (t *TokensTable) Insert(plaintextToken, userID, deviceID string, lastSeen time.Time) (*Token, error) {
|
||||
func (t *TokensTable) Insert(txn *sqlx.Tx, plaintextToken, userID, deviceID string, lastSeen time.Time) (*Token, error) {
|
||||
hashedToken := hashToken(plaintextToken)
|
||||
encToken := t.encrypt(plaintextToken)
|
||||
_, err := t.db.Exec(
|
||||
_, err := txn.Exec(
|
||||
`INSERT INTO syncv3_sync2_tokens(token_hash, token_encrypted, user_id, device_id, last_seen)
|
||||
VALUES ($1, $2, $3, $4, $5)
|
||||
ON CONFLICT (token_hash) DO NOTHING;`,
|
||||
|
@ -420,14 +420,14 @@ func (h *SyncLiveHandler) identifyUnknownAccessToken(accessToken string, logger
|
||||
var token *sync2.Token
|
||||
err = sqlutil.WithTransaction(h.V2Store.DB, func(txn *sqlx.Tx) error {
|
||||
// Create a brand-new row for this token.
|
||||
token, err = h.V2Store.TokensTable.Insert(accessToken, userID, deviceID, time.Now())
|
||||
token, err = h.V2Store.TokensTable.Insert(txn, accessToken, userID, deviceID, time.Now())
|
||||
if err != nil {
|
||||
logger.Warn().Err(err).Str("user", userID).Str("device", deviceID).Msg("failed to insert v2 token")
|
||||
return err
|
||||
}
|
||||
|
||||
// Ensure we have a device row for this token.
|
||||
err = h.V2Store.DevicesTable.InsertDevice(userID, deviceID)
|
||||
err = h.V2Store.DevicesTable.InsertDevice(txn, userID, deviceID)
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Str("user", userID).Str("device", deviceID).Msg("failed to insert v2 device")
|
||||
return err
|
||||
|
Loading…
x
Reference in New Issue
Block a user