From 304772fa1816e40abdbeff20f9e38ec5d1f57402 Mon Sep 17 00:00:00 2001 From: Adrian Czarnecki Date: Thu, 26 Jul 2018 11:22:03 +0200 Subject: [PATCH] Ensures that messages pass to kafka client are bytes string Story: 2003178 Task: 23324 Change-Id: I3ae6830fbbe80bf56726886d658c55dda965d717 --- monasca_common/kafka/producer.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/monasca_common/kafka/producer.py b/monasca_common/kafka/producer.py index 55ad0d79..425f6c17 100644 --- a/monasca_common/kafka/producer.py +++ b/monasca_common/kafka/producer.py @@ -16,6 +16,7 @@ import logging import time +from oslo_utils import encodeutils from six import PY3 import monasca_common.kafka_lib.client as kafka_client @@ -53,11 +54,11 @@ class KafkaProducer(object): success = False if key is None: key = int(time.time() * 1000) - if PY3: - key = bytes(str(key), 'utf-8') - messages = [m.encode("utf-8") for m in messages] - else: - key = str(key) + + messages = [encodeutils.to_utf8(m) for m in messages] + + key = bytes(str(key), 'utf-8') if PY3 else str(key) + while not success: try: self._producer.send_messages(topic, key, *messages)