Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sebastian Schrader
Kea
Commits
c18a49b0
Commit
c18a49b0
authored
Oct 29, 2013
by
Kean Johnston
Browse files
[433] Merge branch 'trac433'
parents
64ae9936
83950286
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/bin/msgq/msgq.py.in
View file @
c18a49b0
...
...
@@ -74,6 +74,8 @@ SPECFILE_LOCATION = SPECFILE_PATH + "/msgq.spec"
class MsgQReceiveError(Exception): pass
class MsgQRunningError(Exception): pass
class MsgQCloseOnReceive(Exception):
"""Exception raised when reading data from a socket results in 'shutdown'.
...
...
@@ -268,11 +270,26 @@ class MsgQ:
"""Set up the listener socket. Internal function."""
logger.debug(TRACE_BASIC, MSGQ_LISTENER_SETUP, self.socket_file)
self.listen_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
if os.path.exists(self.socket_file):
# Rather than just blindly removing the socket file, attempt to
# connect to the existing socket to see if there is an existing
# msgq running. Only if that fails do we remove the file and
# attempt to create a new socket.
existing_msgq = None
try:
existing_msgq = isc.cc.Session(self.socket_file)
except isc.cc.session.SessionError:
existing_msgq = None
if existing_msgq:
existing_msgq.close()
logger.fatal(MSGQ_ALREADY_RUNNING)
raise MsgQRunningError("b10-msgq already running")
os.remove(self.socket_file)
try:
self.listen_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
self.listen_socket.bind(self.socket_file)
self.listen_socket.listen(1024)
except Exception as e:
...
...
src/bin/msgq/msgq_messages.mes
View file @
c18a49b0
...
...
@@ -19,6 +19,10 @@
# <topsrcdir>/tools/reorder_message_file.py to make sure the
# messages are in the correct order.
% MSGQ_ALREADY_RUNNING Another copy of b10-msgq is already running.
Only a single instance of b10-msgq should ever be run at one time.
This instance will now terminate.
% MSGQ_CFGMGR_SUBSCRIBED The config manager subscribed to message queue
This is a debug message. The message queue has little bit of special handling
for the configuration manager. This special handling is happening now.
...
...
src/bin/msgq/tests/msgq_run_test.py
View file @
c18a49b0
...
...
@@ -328,6 +328,22 @@ class MsgqRunTest(unittest.TestCase):
'group'
:
'notifications/cc_members'
}]},
msg
)
def
test_multiple_invocations
(
self
):
"""
Check to make sure that an attempt to start a second copy of the MsgQ
daemon fails.
"""
self
.
assertTrue
(
os
.
path
.
exists
(
SOCKET_PATH
))
self
.
__retcode
=
subprocess
.
call
([
MSGQ_PATH
,
'-s'
,
SOCKET_PATH
])
self
.
assertNotEqual
(
self
.
__retcode
,
0
)
# Verify that the socket still exists and works. We re-call
# test_send_direct as a means of testing that the existing
# daemon is still behaving correctly.
self
.
assertTrue
(
os
.
path
.
exists
(
SOCKET_PATH
))
self
.
test_send_direct
()
if
__name__
==
'__main__'
:
isc
.
log
.
init
(
"msgq-tests"
)
isc
.
log
.
resetUnitTestRootLogger
()
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment