Commit 6583a47d authored by Michal 'vorner' Vaner's avatar Michal 'vorner' Vaner
Browse files

[1429] Catch an exception

parent 99033305
......@@ -886,7 +886,14 @@ class BoB:
so to the _socket_cache.
"""
logger.error(BIND10_LOST_SOCKET_CONSUMER, unix_socket.fileno())
self._socket_cache.drop_application(unix_socket.fileno())
try:
self._socket_cache.drop_application(unix_socket.fileno())
except ValueError:
# This means the application holds no sockets. It's harmless, as it
# can happen in real life - for example, it requests a socket, but
# get_socket doesn't find it, so the application dies. It should be
# rare, though.
pass
def insert_creator(self, creator):
"""
......
......@@ -159,7 +159,12 @@ class TestCacheCommands(unittest.TestCase):
"""
Part of pretending to be the cache. Logs the parameter to
self.__drop_app_called.
In the case self.__raise_exception is set, the exception there
is raised instead.
"""
if self.__raise_exception is not None:
raise self.__raise_exception
self.__drop_app_called = application
def test_consumer_dead(self):
......@@ -169,6 +174,16 @@ class TestCacheCommands(unittest.TestCase):
self.__boss.socket_consumer_dead(self.FalseSocket())
self.assertEqual(42, self.__drop_app_called)
def test_consumer_dead_invalid(self):
"""
Test that it doesn't crash in case the application is not known to
the cache, the boss doesn't crash, as this actually can happen in
practice.
"""
self.__raise_exception = ValueError("This application is unknown")
# This doesn't crash
self.__boss.socket_consumer_dead(self.FalseSocket())
def get_socket(self, token, application):
"""
Part of pretending to be the cache. If there's anything in
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment