Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

http txns: Do not cache error responses #1913

Merged
merged 4 commits into from Feb 13, 2017

Conversation

Projects
None yet
2 participants
Contributor

Kegsay commented Feb 13, 2017

Previously we did. This meant that, amongst other errors, rate-limiting errors
would be cached and prevent messages with that txn ID being sent.

http txns: Do not cache error responses
Previously we did. This meant that, amongst other errors, rate-limiting errors
would be cached and prevent messages with that txn ID being sent.

@Kegsay Kegsay added the bug label Feb 13, 2017

synapse/rest/client/transactions.py
+ # (a Twisted failure), remove it from the transaction map.
+ # This is done to ensure that we don't cache rate-limiting errors, etc.
+ res = observable.get_result()
+ if res.value.code >= 300:
@erikjohnston

erikjohnston Feb 13, 2017

Owner

Not all errors have a .code. Usually we do this sort of thing by adding an errBack to the deferred to remove the entry from the cache

@Kegsay

Kegsay Feb 13, 2017

Contributor

What should I do to check if there is a code attribute? Try to cast to CodeMessageException?

synapse/rest/client/transactions.py
+ # from the transaction map. This is done to ensure that we don't
+ # cache transient errors like rate-limiting errors, etc.
+ def remove_from_map(err):
+ del self.transactions[txn_key]
@erikjohnston

erikjohnston Feb 13, 2017

Owner

I'd actually do this as self.transactions.pop(txn_key, None) just in case the txn has already been deleted somehow. (del will throw if it doesn't exsit)

Kegsay added some commits Feb 13, 2017

Contributor

Kegsay commented Feb 13, 2017

@erikjohnston erikjohnston merged commit 359c97f into develop Feb 13, 2017

7 of 8 checks passed

Sytest Dendron (Commit) Build #1520 origin/kegan/dont-cache-errors failed in 1 min 23 sec
Details
Sytest Dendron (Merged PR) Build finished.
Details
Sytest Postgres (Commit) Build #2339 origin/kegan/dont-cache-errors succeeded in 7 min 22 sec
Details
Sytest Postgres (Merged PR) Build finished.
Details
Sytest SQLite (Commit) Build #2406 origin/kegan/dont-cache-errors succeeded in 5 min 26 sec
Details
Sytest SQLite (Merged PR) Build finished.
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
continuous-integration/travis-ci/push The Travis CI build passed
Details

@Kegsay Kegsay referenced this pull request Feb 13, 2017

Closed

429 responses are cached #1801

erikjohnston added a commit that referenced this pull request Mar 13, 2017

Merge tag 'v0.19.3-rc1' into release-v0.19.3
Changes in synapse v0.19.3-rc1 (2017-03-08)
===========================================

Features:

* Add some administration functionalities. Thanks to morteza-araby! (PR #1784)

Changes:

* Reduce database table sizes (PR #1873, #1916, #1923, #1963)
* Update contrib/ to not use syutil. Thanks to andrewshadura! (PR #1907)
* Don't fetch current state when sending an event in common case (PR #1955)

Bug fixes:

* Fix synapse_port_db failure. Thanks to Pneumaticat! (PR #1904)
* Fix caching to not cache error responses (PR #1913)
* Fix APIs to make kick & ban reasons work (PR #1917)
* Fix bugs in the /keys/changes api (PR #1921)
* Fix bug where users couldn't forget rooms they were banned from (PR #1922)
* Fix issue with long language values in pushers API (PR #1925)
* Fix a race in transaction queue (PR #1930)
* Fix dynamic thumbnailing to preserve aspect ratio. Thanks to jkolo! (PR
  #1945)
* Fix device list update to not constantly resync (PR #1964)
* Fix potential for huge memory usage when getting device that have
  changed (PR #1969)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment