From 252844879d9e34c81b1777a92ad4407fab4a6853 Mon Sep 17 00:00:00 2001 From: Andy Smith Date: Mon, 3 Dec 2018 10:21:54 -0500 Subject: [PATCH] Don't use monotonic with Python >=3.3 A change to the global-requirements has limited use of monotonic library to Python versions earlier than 3.3 (later versions have built-in support for a monotonic clock), so limit it in requirements.txt. Note: this patch updates kafka driver (due to deprecated exception in library) in order to pass unit tests Change-Id: Id6b0814e05a0e548a8c2a5359daf1a6878cf6859 --- oslo_messaging/_drivers/amqp1_driver/controller.py | 7 ++++++- oslo_messaging/_drivers/amqp1_driver/eventloop.py | 7 ++++++- oslo_messaging/_drivers/impl_kafka.py | 4 ++-- requirements.txt | 2 +- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/oslo_messaging/_drivers/amqp1_driver/controller.py b/oslo_messaging/_drivers/amqp1_driver/controller.py index e801dd561..634ea021f 100644 --- a/oslo_messaging/_drivers/amqp1_driver/controller.py +++ b/oslo_messaging/_drivers/amqp1_driver/controller.py @@ -27,14 +27,19 @@ functions scheduled by the Controller. import abc import collections import logging -from monotonic import monotonic as now # noqa import os import platform import random import sys import threading +import time import uuid +if hasattr(time, 'monotonic'): + now = time.monotonic +else: + from monotonic import monotonic as now # noqa + import proton import pyngus from six import iteritems diff --git a/oslo_messaging/_drivers/amqp1_driver/eventloop.py b/oslo_messaging/_drivers/amqp1_driver/eventloop.py index dda40a1ff..a5c68ce93 100644 --- a/oslo_messaging/_drivers/amqp1_driver/eventloop.py +++ b/oslo_messaging/_drivers/amqp1_driver/eventloop.py @@ -27,13 +27,18 @@ import errno import heapq import logging import math -from monotonic import monotonic as now # noqa import os import select import socket import threading +import time import uuid +if hasattr(time, 'monotonic'): + now = time.monotonic +else: + from monotonic import monotonic as now # noqa + import pyngus from oslo_messaging._i18n import _LE, _LI, _LW diff --git a/oslo_messaging/_drivers/impl_kafka.py b/oslo_messaging/_drivers/impl_kafka.py index a69ffe6b6..20b97ca77 100644 --- a/oslo_messaging/_drivers/impl_kafka.py +++ b/oslo_messaging/_drivers/impl_kafka.py @@ -173,7 +173,7 @@ class ConsumerConnection(Connection): if not messages: # NOTE(sileht): really ? you return payload but no messages... # simulate timeout to consume message again - raise kafka.errors.ConsumerTimeout() + raise kafka.errors.ConsumerNoMoreData() if not self.enable_auto_commit: self.consumer.commit() @@ -200,7 +200,7 @@ class ConsumerConnection(Connection): return try: return self._poll_messages(poll_timeout) - except kafka.errors.ConsumerTimeout as exc: + except kafka.errors.ConsumerNoMoreData as exc: poll_timeout = timer.check_return( _raise_timeout, exc, maximum=self.consumer_timeout) except Exception: diff --git a/requirements.txt b/requirements.txt index 0d0353b11..4eb7e33e8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,7 @@ oslo.service!=1.28.1,>=1.24.0 # Apache-2.0 oslo.i18n>=3.15.3 # Apache-2.0 stevedore>=1.20.0 # Apache-2.0 debtcollector>=1.2.0 # Apache-2.0 -monotonic>=0.6 # Apache-2.0 +monotonic>=0.6;python_version<'3.3' # Apache-2.0 # for jsonutils six>=1.10.0 # MIT