summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Powers <dana.powers@rd.io>2018-03-08 13:14:44 -0500
committerDana Powers <dana.powers@rd.io>2018-03-08 19:50:14 -0500
commitd94bedfef3cf5e953f83ea2d69c6ae5d66234a8b (patch)
tree0777f76061b89ed40ec93ef32c818f1cab6dc17e
parent4abdb1baea2468408c36cc983dfef1e8b8f54654 (diff)
downloadkafka-python-conn_close_short_circuit.tar.gz
Short-circuit BrokerConnection.close() if already disconnectedconn_close_short_circuit
-rw-r--r--kafka/conn.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/kafka/conn.py b/kafka/conn.py
index d778c31..ed11c3c 100644
--- a/kafka/conn.py
+++ b/kafka/conn.py
@@ -653,10 +653,13 @@ class BrokerConnection(object):
will be failed with this exception.
Default: kafka.errors.ConnectionError.
"""
+ if self.state is ConnectionStates.DISCONNECTED:
+ if error is not None:
+ log.warning('%s: Duplicate close() with error: %s', self, error)
+ return
log.info('%s: Closing connection. %s', self, error or '')
- if self.state is not ConnectionStates.DISCONNECTED:
- self.state = ConnectionStates.DISCONNECTING
- self.config['state_change_callback'](self)
+ self.state = ConnectionStates.DISCONNECTING
+ self.config['state_change_callback'](self)
self._update_reconnect_backoff()
self._close_socket()
self.state = ConnectionStates.DISCONNECTED