summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ceilometermiddleware/swift.py18
-rw-r--r--setup.cfg4
-rw-r--r--tox.ini2
3 files changed, 15 insertions, 9 deletions
diff --git a/ceilometermiddleware/swift.py b/ceilometermiddleware/swift.py
index e6baa81..d9106d2 100644
--- a/ceilometermiddleware/swift.py
+++ b/ceilometermiddleware/swift.py
@@ -150,9 +150,7 @@ class Swift(object):
if Swift.event_queue is None:
send_queue_size = int(conf.get('send_queue_size', 1000))
Swift.event_queue = queue.Queue(send_queue_size)
- Swift.event_sender = SendEventThread(self._notifier)
- Swift.event_sender.start()
- _LOG.debug('Started sender thread')
+ self.start_sender_thread()
Swift.threadLock.release()
def __call__(self, env, start_response):
@@ -280,12 +278,21 @@ class Swift(object):
if self.nonblocking_notify:
try:
Swift.event_queue.put(event, False)
- _LOG.debug('Event %s added to send queue', event.id)
+ if not Swift.event_sender.is_alive():
+ Swift.threadLock.acquire()
+ self.start_sender_thread()
+ Swift.threadLock.release()
+
except queue.Full:
_LOG.warning('Send queue FULL: Event %s not added', event.id)
else:
Swift.send_notification(self._notifier, event)
+ def start_sender_thread(self):
+ Swift.event_sender = SendEventThread(self._notifier)
+ Swift.event_sender.daemon = True
+ Swift.event_sender.start()
+
@staticmethod
def send_notification(notifier, event):
notifier.info({}, 'objectstore.http.request', event.as_dict())
@@ -296,7 +303,6 @@ class SendEventThread(threading.Thread):
def __init__(self, notifier):
super(SendEventThread, self).__init__()
self.notifier = notifier
- self.daemon = True
def run(self):
"""Send events without blocking swift proxy."""
@@ -307,7 +313,7 @@ class SendEventThread(threading.Thread):
_LOG.debug('Got event %s from queue - now send it', event.id)
Swift.send_notification(self.notifier, event)
_LOG.debug('Event %s sent.', event.id)
- except Exception:
+ except BaseException:
_LOG.exception("SendEventThread loop exception")
diff --git a/setup.cfg b/setup.cfg
index c7e230f..695bfa0 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -5,7 +5,7 @@ description-file =
README.rst
author = OpenStack
author-email = openstack-dev@lists.openstack.org
-home-page = http://www.openstack.org/
+home-page = http://docs.openstack.org/developer/ceilometermiddleware
classifier =
Environment :: OpenStack
Intended Audience :: Information Technology
@@ -16,8 +16,8 @@ classifier =
Programming Language :: Python :: 2
Programming Language :: Python :: 2.7
Programming Language :: Python :: 3
- Programming Language :: Python :: 3.3
Programming Language :: Python :: 3.4
+ Programming Language :: Python :: 3.5
[files]
packages =
diff --git a/tox.ini b/tox.ini
index 96d19de..f5e8bbe 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,6 +1,6 @@
[tox]
minversion = 1.8
-envlist = py33,py34,py27,pypy,pep8
+envlist = py34,py35,py27,pypy,pep8
skipsdist = True
[testenv]