require 'rcs-common/trace' require 'rcs-common/component' require_release 'rcs-db/db_layer' require_release 'rcs-db/license' require_relative 'component_checker' module RCS module Monitor class Application include RCS::Component component(:monitor, name: "RCS Monitor") def initialize exit!(1) unless RCS::DB::Config.instance.load_from_file end def first_shard? RCS::DB::Config.instance.global['SHARD'] == 'shard0000' end def setup establish_database_connection(wait_until_connected: true) LicenseManager.instance.load_from_db raise "Must be run on the first shard" unless first_shard? end def run(options) setup run_with_rescue do EM.epoll EM.threadpool_size = 5 component_checker = ComponentChecker.new EM::run do component_checker.check_all EM.add_periodic_timer(100) { component_checker.check_all } end end end end end end .