From 6ff002371b0a5c283be96536fd91abebbb01f1e6 Mon Sep 17 00:00:00 2001 From: Naoya Yamaguchi <708yamaguchi@gmail.com> Date: Mon, 23 May 2022 13:49:33 +0900 Subject: [PATCH 1/3] [mongodb_store] Throttle noisy error log --- mongodb_store/launch/mongodb_store_inc.launch | 2 ++ mongodb_store/scripts/replicator_node.py | 11 +++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/mongodb_store/launch/mongodb_store_inc.launch b/mongodb_store/launch/mongodb_store_inc.launch index 1dce50f..22e02a5 100644 --- a/mongodb_store/launch/mongodb_store_inc.launch +++ b/mongodb_store/launch/mongodb_store_inc.launch @@ -20,6 +20,7 @@ + @@ -66,6 +67,7 @@ + diff --git a/mongodb_store/scripts/replicator_node.py b/mongodb_store/scripts/replicator_node.py index 251189d..e2c283c 100755 --- a/mongodb_store/scripts/replicator_node.py +++ b/mongodb_store/scripts/replicator_node.py @@ -29,11 +29,12 @@ class Process(object): - def __init__(self, cmd): + def __init__(self, cmd, logerr_period): self.lock = Lock() self.cmd = cmd self.process = None self.threads = [] + self.logerr_period = logerr_period def _message_callback(self, stream, callback): buf = str() @@ -126,7 +127,7 @@ def on_stdout(self, msg): rospy.loginfo('[{}] {}'.format(self.cmd[0], msg)) def on_stderr(self, msg): - rospy.logerr('[{}] {}'.format(self.cmd[0], msg)) + rospy.logerr_throttle(self.logerr_period, '[{}] {}'.format(self.cmd[0], msg)) class MongoProcess(Process): @@ -151,7 +152,7 @@ def progress(self): class MongoDumpProcess(MongoProcess): - def __init__(self, host, port, db, collection, dump_path, less_time=None, query=None): + def __init__(self, host, port, db, collection, dump_path, less_time=None, query=None, logerr_period=0): cmd = [ 'mongodump', '--verbose', '-o', dump_path, '--host', host, '--port', str(port), @@ -195,6 +196,7 @@ def __init__(self): if use_connection_string: use_daemon = True rospy.loginfo('Using connection string: %s', connection_string) + self.logerr_period = rospy.get_param('logerr_period', 0) self.connection_string = '' @@ -343,7 +345,8 @@ def do_dump(self, collection, master, less_time_time=None, db='message_store', q self.dump_process = MongoDumpProcess(host=host, port=port, db=db, collection=collection, dump_path=self.dump_path, - less_time=less_time_time, query=query) + less_time=less_time_time, query=query, + logerr_period=self.logerr_period) self.dump_process.start() self.dump_process.wait() self.dump_process = None From af454a9c146216b67945c6ca0edb63f1b79f7be7 Mon Sep 17 00:00:00 2001 From: Naoya Yamaguchi <708yamaguchi@gmail.com> Date: Tue, 24 May 2022 09:25:39 +0900 Subject: [PATCH 2/3] [mongodb_store] Fix missing init arguments --- mongodb_store/scripts/replicator_node.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mongodb_store/scripts/replicator_node.py b/mongodb_store/scripts/replicator_node.py index e2c283c..5f092bb 100755 --- a/mongodb_store/scripts/replicator_node.py +++ b/mongodb_store/scripts/replicator_node.py @@ -170,11 +170,11 @@ def __init__(self, host, port, db, collection, dump_path, less_time=None, query= query = json_util.dumps(query) cmd += ['--query', query] - super(MongoDumpProcess, self).__init__(cmd=cmd) + super(MongoDumpProcess, self).__init__(cmd=cmd, logerr_period=logerr_period) class MongoRestoreProcess(MongoProcess): - def __init__(self, host, port, dump_path, db=None, collection=None): + def __init__(self, host, port, dump_path, db=None, collection=None, logerr_period=0): cmd = [ 'mongorestore', '--verbose', '--host', host, '--port', str(port), ] @@ -183,7 +183,7 @@ def __init__(self, host, port, dump_path, db=None, collection=None): if collection is not None: cmd += [ '--collection', collection] cmd += [dump_path] - super(MongoRestoreProcess, self).__init__(cmd=cmd) + super(MongoRestoreProcess, self).__init__(cmd=cmd, logerr_period=logerr_period) class Replicator(object): @@ -317,7 +317,7 @@ def do_restore(self, extras, db='message_store'): except pymongo.errors.ServerSelectionTimeoutError: rospy.logerr('Failed to connect to the extra server {}'.format(extra)) continue - self.restore_process = MongoRestoreProcess(host=host, port=port, dump_path=self.dump_path) + self.restore_process = MongoRestoreProcess(host=host, port=port, dump_path=self.dump_path, logerr_period=self.logerr_period) self.restore_process.start() self.restore_process.wait() self.restore_process = None From 269d642df964f548eeba23a4d6db5c70b96abf86 Mon Sep 17 00:00:00 2001 From: Naoya Yamaguchi <708yamaguchi@gmail.com> Date: Tue, 24 May 2022 14:40:04 +0900 Subject: [PATCH 3/3] [mongodb_store] Add namespace to logerr_period rosparam --- mongodb_store/scripts/replicator_node.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mongodb_store/scripts/replicator_node.py b/mongodb_store/scripts/replicator_node.py index 5f092bb..89685b0 100755 --- a/mongodb_store/scripts/replicator_node.py +++ b/mongodb_store/scripts/replicator_node.py @@ -196,7 +196,7 @@ def __init__(self): if use_connection_string: use_daemon = True rospy.loginfo('Using connection string: %s', connection_string) - self.logerr_period = rospy.get_param('logerr_period', 0) + self.logerr_period = rospy.get_param('~logerr_period', 0) self.connection_string = ''