diff --git a/oslo_messaging/server.py b/oslo_messaging/server.py
index c5b4093d4..fac0815ea 100644
--- a/oslo_messaging/server.py
+++ b/oslo_messaging/server.py
@@ -23,14 +23,19 @@ __all__ = [
     'ServerListenError',
 ]
 
+import logging
+
 from oslo_service import service
 from stevedore import driver
 
 from oslo_messaging._drivers import base as driver_base
 from oslo_messaging._i18n import _
+from oslo_messaging._i18n import _LW
 from oslo_messaging import _utils
 from oslo_messaging import exceptions
 
+LOG = logging.getLogger(__name__)
+
 
 class MessagingServerError(exceptions.MessagingException):
     """Base class for all MessageHandlingServer exceptions."""
@@ -135,8 +140,11 @@ class MessageHandlingServer(service.ServiceBase):
         if self._thread_id is None:
             self._thread_id = self._get_thread_id()
         elif self._thread_id != self._get_thread_id():
-            raise RuntimeError(_("start/stop/wait must be called in the "
-                                 "same thread"))
+            # NOTE(dims): Need to change this to raise RuntimeError after
+            # verifying/fixing other openstack projects (like Neutron)
+            # work ok with this change
+            LOG.warn(_LW("start/stop/wait must be called in the "
+                         "same thread"))
 
     def stop(self):
         """Stop handling incoming messages.
@@ -165,9 +173,12 @@ class MessageHandlingServer(service.ServiceBase):
         self._check_same_thread_id()
 
         if self._running:
-            raise RuntimeError(_("wait() should be called after stop() as it "
-                                 "waits for existing messages to finish "
-                                 "processing"))
+            # NOTE(dims): Need to change this to raise RuntimeError after
+            # verifying/fixing other openstack projects (like Neutron)
+            # work ok with this change
+            LOG.warn(_("wait() should be called after stop() as it "
+                       "waits for existing messages to finish "
+                       "processing"))
 
         if self._executor is not None:
             self._executor.wait()
diff --git a/oslo_messaging/tests/rpc/test_server.py b/oslo_messaging/tests/rpc/test_server.py
index 2601f4f8a..dfa900cdf 100644
--- a/oslo_messaging/tests/rpc/test_server.py
+++ b/oslo_messaging/tests/rpc/test_server.py
@@ -18,6 +18,7 @@ import threading
 from oslo_config import cfg
 import testscenarios
 
+import mock
 import oslo_messaging
 from oslo_messaging.tests import utils as test_utils
 from six.moves import mock
@@ -130,7 +131,9 @@ class TestRPCServer(test_utils.BaseTestCase, ServerSetupMixin):
         self.assertIsNone(server._executor)
         self.assertEqual(1, listener.cleanup.call_count)
 
-    def test_server_invalid_wait_running_server(self):
+    @mock.patch('oslo_messaging._executors.impl_pooledexecutor.'
+                'PooledExecutor.wait')
+    def test_server_invalid_wait_running_server(self, mock_wait):
         transport = oslo_messaging.get_transport(self.conf, url='fake:')
         target = oslo_messaging.Target(topic='foo', server='bar')
         endpoints = [object()]
@@ -142,9 +145,15 @@ class TestRPCServer(test_utils.BaseTestCase, ServerSetupMixin):
         self.addCleanup(server.wait)
         self.addCleanup(server.stop)
         server.start()
-        self.assertRaises(RuntimeError, server.wait)
+        with mock.patch('logging.Logger.warn') as warn:
+            server.wait()
+            warn.assert_called_with('wait() should be called after '
+                                    'stop() as it waits for existing '
+                                    'messages to finish processing')
 
-    def test_server_invalid_stop_from_other_thread(self):
+    @mock.patch('oslo_messaging._executors.impl_pooledexecutor.'
+                'PooledExecutor.wait')
+    def test_server_invalid_stop_from_other_thread(self, mock_wait):
         transport = oslo_messaging.get_transport(self.conf, url='fake:')
         target = oslo_messaging.Target(topic='foo', server='bar')
         endpoints = [object()]
@@ -158,8 +167,14 @@ class TestRPCServer(test_utils.BaseTestCase, ServerSetupMixin):
         t.start()
         self.addCleanup(t.join)
         self.addCleanup(t.stop)
-        self.assertRaises(RuntimeError, server.stop)
-        self.assertRaises(RuntimeError, server.wait)
+        with mock.patch('logging.Logger.warn') as warn:
+            server.stop()
+            warn.assert_called_with('start/stop/wait must be called '
+                                    'in the same thread')
+        with mock.patch('logging.Logger.warn') as warn:
+            server.wait()
+            warn.assert_called_with('start/stop/wait must be called '
+                                    'in the same thread')
 
     def test_no_target_server(self):
         transport = oslo_messaging.get_transport(self.conf, url='fake:')