Revert "service: replace eventlet event by threading"
This reverts commit f08f6ba7e80729fb6028b24568da0f651a75fcd6. This was a terrible idea: as soon as you don't monkey patch threading, this does not work as expected in the end. So it's better to say that it's explicitly eventlet mechanisms that are required, at least for now. Conflicts: tests/unit/test_service.py Partial-Bug: #1274044 Change-Id: I4d4f112d4550d912c4f81e62bc9a4714cf117384
This commit is contained in:
@@ -23,7 +23,6 @@ import os
|
||||
import random
|
||||
import signal
|
||||
import sys
|
||||
import threading
|
||||
import time
|
||||
|
||||
try:
|
||||
@@ -35,6 +34,7 @@ except ImportError:
|
||||
UnsupportedOperation = None
|
||||
|
||||
import eventlet
|
||||
from eventlet import event
|
||||
from oslo.config import cfg
|
||||
|
||||
from openstack.common import eventlet_backdoor
|
||||
@@ -419,10 +419,11 @@ class Service(object):
|
||||
self.tg = threadgroup.ThreadGroup(threads)
|
||||
|
||||
# signal that the service is done shutting itself down:
|
||||
self._done = threading.Event()
|
||||
self._done = event.Event()
|
||||
|
||||
def reset(self):
|
||||
self._done = threading.Event()
|
||||
# NOTE(Fengqian): docs for Event.reset() recommend against using it
|
||||
self._done = event.Event()
|
||||
|
||||
def start(self):
|
||||
pass
|
||||
@@ -431,7 +432,8 @@ class Service(object):
|
||||
self.tg.stop()
|
||||
self.tg.wait()
|
||||
# Signal that service cleanup is done:
|
||||
self._done.set()
|
||||
if not self._done.ready():
|
||||
self._done.send()
|
||||
|
||||
def wait(self):
|
||||
self._done.wait()
|
||||
@@ -442,7 +444,7 @@ class Services(object):
|
||||
def __init__(self):
|
||||
self.services = []
|
||||
self.tg = threadgroup.ThreadGroup()
|
||||
self.done = threading.Event()
|
||||
self.done = event.Event()
|
||||
|
||||
def add(self, service):
|
||||
self.services.append(service)
|
||||
@@ -456,7 +458,8 @@ class Services(object):
|
||||
|
||||
# Each service has performed cleanup, now signal that the run_service
|
||||
# wrapper threads can now die:
|
||||
self.done.set()
|
||||
if not self.done.ready():
|
||||
self.done.send()
|
||||
|
||||
# reap threads:
|
||||
self.tg.stop()
|
||||
@@ -466,7 +469,7 @@ class Services(object):
|
||||
|
||||
def restart(self):
|
||||
self.stop()
|
||||
self.done = threading.Event()
|
||||
self.done = event.Event()
|
||||
for restart_service in self.services:
|
||||
restart_service.reset()
|
||||
self.tg.add_thread(self.run_service, restart_service, self.done)
|
||||
|
||||
@@ -25,11 +25,11 @@ import multiprocessing
|
||||
import os
|
||||
import signal
|
||||
import socket
|
||||
import threading
|
||||
import time
|
||||
import traceback
|
||||
|
||||
import eventlet
|
||||
from eventlet import event
|
||||
import mock
|
||||
import mox
|
||||
|
||||
@@ -274,11 +274,11 @@ class ServiceRestartTest(ServiceTestBase):
|
||||
class _Service(service.Service):
|
||||
def __init__(self):
|
||||
super(_Service, self).__init__()
|
||||
self.init = threading.Event()
|
||||
self.init = event.Event()
|
||||
self.cleaned_up = False
|
||||
|
||||
def start(self):
|
||||
self.init.set()
|
||||
self.init.send()
|
||||
|
||||
def stop(self):
|
||||
self.cleaned_up = True
|
||||
@@ -358,7 +358,7 @@ class LauncherTest(test.BaseTestCase):
|
||||
|
||||
launcher.stop()
|
||||
self.assertTrue(svc.cleaned_up)
|
||||
self.assertTrue(svc._done.is_set())
|
||||
self.assertTrue(svc._done.ready())
|
||||
|
||||
# make sure stop can be called more than once. (i.e. play nice with
|
||||
# unit test fixtures in nova bug #1199315)
|
||||
|
||||
Reference in New Issue
Block a user