summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Powers <dana.powers@gmail.com>2016-06-26 12:29:02 -0700
committerDana Powers <dana.powers@gmail.com>2016-06-26 12:42:55 -0700
commit13715b4e3f41e03a7fac398240801bf403402a94 (patch)
tree6db1d86207d2e43264a2d02a5dd29453f169e04f
parentb2bc1f0ed7b339b111e02afec1d8b7aa1d8495da (diff)
downloadkafka-python-no_sleep_til_brooklyn.tar.gz
Wakeup socket optimizationsno_sleep_til_brooklyn
-rw-r--r--kafka/client_async.py2
-rw-r--r--kafka/producer/sender.py7
2 files changed, 7 insertions, 2 deletions
diff --git a/kafka/client_async.py b/kafka/client_async.py
index 25952be..63b63d1 100644
--- a/kafka/client_async.py
+++ b/kafka/client_async.py
@@ -726,7 +726,7 @@ class KafkaClient(object):
def _clear_wake_fd(self):
while True:
try:
- self._wake_r.recv(1)
+ self._wake_r.recv(1024)
except:
break
diff --git a/kafka/producer/sender.py b/kafka/producer/sender.py
index f0f77ee..958e165 100644
--- a/kafka/producer/sender.py
+++ b/kafka/producer/sender.py
@@ -163,7 +163,12 @@ class Sender(threading.Thread):
self.initiate_close()
def add_topic(self, topic):
- if topic not in self._topics_to_add:
+ # This is generally called from a separate thread
+ # so this needs to be a thread-safe operation
+ # we assume that checking set membership across threads
+ # is ok where self._client._topics should never
+ # remove topics for a producer instance, only add them.
+ if topic not in self._client._topics:
self._topics_to_add.add(topic)
self.wakeup()