[autotest] Fix for indirect=True metrics
Currently, chromite's @_Indirect metrics check whether they should be
indirect at import-time. Therefore, we need to create the metrics at
run-time after ts_mon has already been set up. A fix to the @_Indirect
decorator is in progress.
TEST=Tested with a local autotest instance. Unit tests still pass
BUG=chromium:652620
Change-Id: I46f5d79921f56f5292df08a56b1de77399875861
Reviewed-on: https://chromium-review.googlesource.com/394249
Commit-Ready: Paul Hobbs <phobbs@google.com>
Tested-by: Paul Hobbs <phobbs@google.com>
Reviewed-by: Paul Hobbs <phobbs@google.com>
diff --git a/scheduler/monitor_db.py b/scheduler/monitor_db.py
index 413c0d8..31b325f 100755
--- a/scheduler/monitor_db.py
+++ b/scheduler/monitor_db.py
@@ -172,30 +172,30 @@
# Start the thread to report metadata.
metadata_reporter.start()
- ts_mon_config.SetupTsMonGlobalState('autotest_scheduler')
+ with ts_mon_config.SetupTsMonGlobalState('autotest_scheduler',
+ indirect=True):
+ try:
+ initialize()
+ dispatcher = Dispatcher()
+ dispatcher.initialize(recover_hosts=options.recover_hosts)
+ minimum_tick_sec = global_config.global_config.get_config_value(
+ scheduler_config.CONFIG_SECTION, 'minimum_tick_sec', type=float)
- try:
- initialize()
- dispatcher = Dispatcher()
- dispatcher.initialize(recover_hosts=options.recover_hosts)
- minimum_tick_sec = global_config.global_config.get_config_value(
- scheduler_config.CONFIG_SECTION, 'minimum_tick_sec', type=float)
-
- while not _shutdown and not server._shutdown_scheduler:
- start = time.time()
- dispatcher.tick()
- curr_tick_sec = time.time() - start
- if (minimum_tick_sec > curr_tick_sec):
- time.sleep(minimum_tick_sec - curr_tick_sec)
- else:
- time.sleep(0.0001)
- except server_manager_utils.ServerActionError as e:
- # This error is expected when the server is not in primary status
- # for scheduler role. Thus do not send email for it.
- logging.exception(e)
- except Exception:
- email_manager.manager.log_stacktrace(
- "Uncaught exception; terminating monitor_db")
+ while not _shutdown and not server._shutdown_scheduler:
+ start = time.time()
+ dispatcher.tick()
+ curr_tick_sec = time.time() - start
+ if minimum_tick_sec > curr_tick_sec:
+ time.sleep(minimum_tick_sec - curr_tick_sec)
+ else:
+ time.sleep(0.0001)
+ except server_manager_utils.ServerActionError as e:
+ # This error is expected when the server is not in primary status
+ # for scheduler role. Thus do not send email for it.
+ logging.exception(e)
+ except Exception:
+ email_manager.manager.log_stacktrace(
+ "Uncaught exception; terminating monitor_db")
metadata_reporter.abort()
email_manager.manager.send_queued_emails()