summaryrefslogtreecommitdiff
path: root/kafka/producer/sender.py
diff options
context:
space:
mode:
Diffstat (limited to 'kafka/producer/sender.py')
-rw-r--r--kafka/producer/sender.py7
1 files changed, 6 insertions, 1 deletions
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()