From ce57dac0c6c620371a1c484b9619e2deb83be82e Mon Sep 17 00:00:00 2001 From: Dana Powers Date: Mon, 13 Mar 2017 12:42:47 -0700 Subject: [PATCH] Return copy of consumer subscription set (#1029) --- kafka/consumer/group.py | 2 +- test/test_consumer.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/kafka/consumer/group.py b/kafka/consumer/group.py index f2b1699..32f4556 100644 --- a/kafka/consumer/group.py +++ b/kafka/consumer/group.py @@ -819,7 +819,7 @@ class KafkaConsumer(six.Iterator): Returns: set: {topic, ...} """ - return self._subscription.subscription + return self._subscription.subscription.copy() def unsubscribe(self): """Unsubscribe from all topics and clear all assigned partitions.""" diff --git a/test/test_consumer.py b/test/test_consumer.py index 073a3af..e5dd946 100644 --- a/test/test_consumer.py +++ b/test/test_consumer.py @@ -24,6 +24,14 @@ class TestKafkaConsumer(unittest.TestCase): with self.assertRaises(KafkaConfigurationError): KafkaConsumer(bootstrap_servers='localhost:9092', fetch_max_wait_ms=41000, request_timeout_ms=40000) + def test_subscription_copy(self): + consumer = KafkaConsumer('foo', api_version=(0, 10)) + sub = consumer.subscription() + assert sub is not consumer.subscription() + assert sub == set(['foo']) + sub.add('fizz') + assert consumer.subscription() == set(['foo']) + class TestMultiProcessConsumer(unittest.TestCase): @unittest.skipIf(sys.platform.startswith('win'), 'test mocking fails on windows')