Add errback to all deferreds in transaction_queue

This commit is contained in:
Erik Johnston 2015-02-18 12:03:12 +00:00
parent cc3d3babb0
commit 446ef58992

View file

@ -90,14 +90,17 @@ class TransactionQueue(object):
(pdu, deferred, order) (pdu, deferred, order)
) )
def eb(failure): def chain(failure):
if not deferred.called: if not deferred.called:
deferred.errback(failure) deferred.errback(failure)
else:
logger.warn("Failed to send pdu", failure.value) def log_failure(failure):
logger.warn("Failed to send pdu", failure.value)
deferred.addErrback(log_failure)
with PreserveLoggingContext(): with PreserveLoggingContext():
self._attempt_new_transaction(destination).addErrback(eb) self._attempt_new_transaction(destination).addErrback(chain)
deferreds.append(deferred) deferreds.append(deferred)
@ -115,14 +118,17 @@ class TransactionQueue(object):
(edu, deferred) (edu, deferred)
) )
def eb(failure): def chain(failure):
if not deferred.called: if not deferred.called:
deferred.errback(failure) deferred.errback(failure)
else:
logger.warn("Failed to send edu", failure.value) def log_failure(failure):
logger.warn("Failed to send pdu", failure.value)
deferred.addErrback(log_failure)
with PreserveLoggingContext(): with PreserveLoggingContext():
self._attempt_new_transaction(destination).addErrback(eb) self._attempt_new_transaction(destination).addErrback(chain)
return deferred return deferred
@ -139,14 +145,17 @@ class TransactionQueue(object):
(failure, deferred) (failure, deferred)
) )
def eb(failure): def chain(f):
if not deferred.called: if not deferred.called:
deferred.errback(failure) deferred.errback(f)
else:
logger.warn("Failed to send failure", failure.value) def log_failure(f):
logger.warn("Failed to send pdu", f.value)
deferred.addErrback(log_failure)
with PreserveLoggingContext(): with PreserveLoggingContext():
self._attempt_new_transaction(destination).addErrback(eb) self._attempt_new_transaction(destination).addErrback(chain)
yield deferred yield deferred
@ -308,7 +317,7 @@ class TransactionQueue(object):
except Exception as e: except Exception as e:
# We capture this here as there as nothing actually listens # We capture this here as there as nothing actually listens
# for this finishing functions deferred. # for this finishing functions deferred.
logger.exception( logger.warn(
"TX [%s] Problem in _attempt_transaction: %s", "TX [%s] Problem in _attempt_transaction: %s",
destination, destination,
e, e,