diff options
author | Erik Johnston <erik@matrix.org> | 2015-03-23 14:02:34 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2015-03-23 14:02:34 +0000 |
commit | d5272b1d2cf170d2b41d9aa991c3a37e9f7aac34 (patch) | |
tree | 8aea48537245fb6ae6925243d175d0b9c4ee9338 /synapse/storage/transactions.py | |
parent | Sanitize TransactionStore (diff) | |
download | synapse-d5272b1d2cf170d2b41d9aa991c3a37e9f7aac34.tar.xz |
Use 'update or insert' rather than on 'conflict replace'
Diffstat (limited to 'synapse/storage/transactions.py')
-rw-r--r-- | synapse/storage/transactions.py | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/synapse/storage/transactions.py b/synapse/storage/transactions.py index 9dec58c21d..1a5bb41cb2 100644 --- a/synapse/storage/transactions.py +++ b/synapse/storage/transactions.py @@ -276,26 +276,33 @@ class TransactionStore(SQLBaseStore): retry_interval, ) - def _set_destination_retry_timings(cls, txn, destination, + def _set_destination_retry_timings(self, txn, destination, retry_last_ts, retry_interval): - query = ( - "INSERT INTO destinations" - " (destination, retry_last_ts, retry_interval)" - " VALUES (?, ?, ?)" - " ON DUPLICATE KEY UPDATE" - " retry_last_ts=?, retry_interval=?" + "UPDATE destinations" + " SET retry_last_ts = ?, retry_interval = ?" + " WHERE destinations = ?" ) txn.execute( query, ( - destination, - retry_last_ts, retry_interval, - retry_last_ts, retry_interval, + retry_last_ts, retry_interval, destination, ) ) + if txn.rowcount == 0: + # destination wasn't already in table. Insert it. + self._simple_insert_txn( + txn, + table="destinations", + values={ + "destination": destination, + "retry_last_ts": retry_last_ts, + "retry_interval": retry_interval, + } + ) + def get_destinations_needing_retry(self): """Get all destinations which are due a retry for sending a transaction. |