Skip to content

Commit 066a321

Browse files
committed
Retry on error in fixture _create_topic_via_metadata
1 parent 6f16c46 commit 066a321

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

test/fixtures.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from __future__ import absolute_import
1+
from __future__ import absolute_import, division
22

33
import atexit
44
import logging
@@ -583,7 +583,15 @@ def _create_topic(self, topic_name, num_partitions=None, replication_factor=None
583583
self._create_topic_via_cli(topic_name, num_partitions, replication_factor)
584584

585585
def _create_topic_via_metadata(self, topic_name, timeout_ms=10000):
586-
self._send_request(MetadataRequest[0]([topic_name]), timeout_ms)
586+
timeout_at = time.time() + timeout_ms / 1000
587+
while time.time() < timeout_at:
588+
response = self._send_request(MetadataRequest[0]([topic_name]), timeout_ms)
589+
if response.topics[0][0] == 0:
590+
return
591+
log.warning("Unable to create topic via MetadataRequest: err %d", response.topics[0][0])
592+
time.sleep(1)
593+
else:
594+
raise RuntimeError('Unable to create topic via MetadataRequest')
587595

588596
def _create_topic_via_admin_api(self, topic_name, num_partitions, replication_factor, timeout_ms=10000):
589597
request = CreateTopicsRequest[0]([(topic_name, num_partitions,

0 commit comments

Comments
 (0)