diff options
author | Erik Johnston <erik@matrix.org> | 2015-11-03 17:51:49 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2015-11-03 17:51:49 +0000 |
commit | 6a3a840b193700da7a6de813169fce01d5c6e113 (patch) | |
tree | 5fe39637d07b06a7e5dc15798cc57b8f432d1a8a /synapse/storage/transactions.py | |
parent | Merge pull request #335 from matrix-org/markjh/room_tags (diff) | |
parent | Don't rearrange transaction_queue (diff) | |
download | synapse-6a3a840b193700da7a6de813169fce01d5c6e113.tar.xz |
Merge pull request #343 from matrix-org/erikj/fix_retries
Fix broken cache for getting retry times.
Diffstat (limited to 'synapse/storage/transactions.py')
-rw-r--r-- | synapse/storage/transactions.py | 48 |
1 files changed, 16 insertions, 32 deletions
diff --git a/synapse/storage/transactions.py b/synapse/storage/transactions.py index 15695e9831..4e0d7c9774 100644 --- a/synapse/storage/transactions.py +++ b/synapse/storage/transactions.py @@ -253,16 +253,6 @@ class TransactionStore(SQLBaseStore): retry_interval (int) - how long until next retry in ms """ - # As this is the new value, we might as well prefill the cache - self.get_destination_retry_timings.prefill( - destination, - { - "destination": destination, - "retry_last_ts": retry_last_ts, - "retry_interval": retry_interval - }, - ) - # XXX: we could chose to not bother persisting this if our cache thinks # this is a NOOP return self.runInteraction( @@ -275,31 +265,25 @@ class TransactionStore(SQLBaseStore): def _set_destination_retry_timings(self, txn, destination, retry_last_ts, retry_interval): - query = ( - "UPDATE destinations" - " SET retry_last_ts = ?, retry_interval = ?" - " WHERE destination = ?" - ) + txn.call_after(self.get_destination_retry_timings.invalidate, (destination,)) - txn.execute( - query, - ( - retry_last_ts, retry_interval, destination, - ) + self._simple_upsert_txn( + txn, + "destinations", + keyvalues={ + "destination": destination, + }, + values={ + "retry_last_ts": retry_last_ts, + "retry_interval": retry_interval, + }, + insertion_values={ + "destination": destination, + "retry_last_ts": retry_last_ts, + "retry_interval": retry_interval, + } ) - 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. |