Skip to content

Commit 3f90682

Browse files
author
Furushchev
committed
add mongodb launch; mongod kill watcher
1 parent f0a9355 commit 3f90682

File tree

2 files changed

+51
-16
lines changed

2 files changed

+51
-16
lines changed
Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
11
<launch>
2-
<!-- MongoDB -->
3-
<arg name="db_path" default="/opt/strands/mongodb_store"/>
2+
<arg name="db_path" default="/var/lib/robot/mongodb_store"/>
43
<arg name="port" default="62345" />
5-
<arg name="defaults_path" default=""/>
6-
7-
<param name="mongodb_port" value="$(arg port)" />
8-
<param name="mongodb_host" value="$(optenv HOSTNAME localhost)" />
4+
<arg name="repl_set_mode" default="false" />
95

10-
<node name="mongo_server" pkg="mongodb_store" type="mongodb_server.py" output="screen">
11-
<param name="database_path" value="$(arg db_path)"/>
12-
</node>
6+
<!-- MongoDB -->
7+
<include file="$(find mongodb_store)/launch/mongodb_store.launch">
8+
<arg name="db_path" value="$(arg db_path)" />
9+
<arg name="port" value="$(arg port)" />
10+
<arg name="use_machine" value="false" />
11+
<arg name="use_repl_set" value="true"
12+
if="$(arg repl_set_mode)" />
13+
<arg name="repl_set" value="rs0"
14+
if="$(arg repl_set_mode)" />
15+
</include>
1316

14-
<node name="config_manager" pkg="mongodb_store" type="config_manager.py" output="screen">
15-
<param name="defaults_path" value="$(arg defaults_path)"/>
17+
<!-- when mongod is deployed as repl set mode, it is uncertain to be killed. -->
18+
<!-- This is watcher checking if mongod exits successfully, and when not, kill mongod process. -->
19+
<node name="mongod_kill_watcher"
20+
pkg="jsk_robot_startup" type="mongod_kill_watcher.py"
21+
if="$(arg enable_repl_set_mode)">
22+
<param name="db_path" value="$(arg db_path)" />
1623
</node>
17-
18-
<node name="message_store" pkg="mongodb_store" type="message_store_node.py" output="screen"/>
19-
20-
<node name="replicator_node" pkg="mongodb_store" type="replicator_node.py" output="screen"/>
21-
</launch>
24+
</launch>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
4+
# when this node is killed, kill mongod.
5+
6+
import rospy
7+
import signal
8+
import os
9+
10+
db_path=None
11+
12+
def kill_mongod():
13+
pid = None
14+
try:
15+
with open(os.path.join(db_path, 'mongod.lock')) as f:
16+
pid = int(f.readline())
17+
except Exception as e:
18+
rospy.logfatal('cannot find mongod.lock: %s' % e)
19+
return
20+
rospy.sleep(5.0)
21+
try:
22+
os.kill(pid, signal.SIGINT)
23+
rospy.loginfo('killed mongod: %d' % pid)
24+
except Exception as e:
25+
rospy.logwarn('escallating to send SIGTERM to mongod')
26+
os.kill(pid, signal.SIGTERM)
27+
28+
if __name__ == '__main__':
29+
rospy.init_node('mongodb_killer')
30+
db_path = rospy.get_param('~db_path', '/var/lib/robot/mongodb_store')
31+
rospy.on_shutdown(kill_mongod)
32+
rospy.spin()

0 commit comments

Comments
 (0)