Correctly handle 500's and 429 on federation

This commit is contained in:
Erik Johnston 2016-11-24 15:04:49 +00:00
parent 7e03f9a484
commit aaecffba3a
2 changed files with 8 additions and 1 deletions

View file

@ -462,6 +462,13 @@ class TransactionQueue(object):
code = e.code code = e.code
response = e.response response = e.response
if e.code == 429 or 500 <= e.code:
logger.info(
"TX [%s] {%s} got %d response",
destination, txn_id, code
)
raise e
logger.info( logger.info(
"TX [%s] {%s} got %d response", "TX [%s] {%s} got %d response",
destination, txn_id, code destination, txn_id, code

View file

@ -123,7 +123,7 @@ class RetryDestinationLimiter(object):
def __exit__(self, exc_type, exc_val, exc_tb): def __exit__(self, exc_type, exc_val, exc_tb):
valid_err_code = False valid_err_code = False
if exc_type is not None and issubclass(exc_type, CodeMessageException): if exc_type is not None and issubclass(exc_type, CodeMessageException):
valid_err_code = 0 <= exc_val.code < 500 valid_err_code = valid_err_code != 429 and 0 <= exc_val.code < 500
if exc_type is None or valid_err_code: if exc_type is None or valid_err_code:
# We connected successfully. # We connected successfully.