Adds support for Juju metrics in collector
[osm/MON.git] / osm_mon / core / message_bus / common_consumer.py
index b8e33d2..85e679f 100755 (executable)
@@ -22,7 +22,6 @@
 import json
 import logging
 import sys
-import threading
 from json import JSONDecodeError
 
 import six
@@ -92,11 +91,25 @@ class CommonConsumer:
 
         topics = ['metric_request', 'alarm_request', 'vim_account']
         common_consumer.subscribe(topics)
+        retries = 1
+        max_retries = 5
+        while True:
+            try:
+                common_consumer.poll()
+                common_consumer.seek_to_end()
+                break
+            except Exception:
+                log.error("Error getting Kafka partitions. Maybe Kafka is not ready yet.")
+                log.error("Retry number %d of %d", retries, max_retries)
+                if retries >= max_retries:
+                    log.error("Achieved max number of retries. Logging exception and exiting...")
+                    log.exception("Exception: ")
+                    return
+                retries = retries + 1
 
         log.info("Listening for messages...")
         for message in common_consumer:
-            t = threading.Thread(target=self.consume_message, args=(message,))
-            t.start()
+            self.consume_message(message)
 
     def consume_message(self, message):
         log.info("Message arrived: %s", message)