Sha256: e36b177bafed0ece1d373fe0ffae36e89ca64d35acb161eaf767ca803b53ca94
Contents?: true
Size: 1.99 KB
Versions: 3
Compression:
Stored size: 1.99 KB
Contents
require "fluentd_server/config" require "fluentd_server/logger" require "fluentd_server/sync_runner" # reference: https://github.com/focuslight/focuslight/blob/master/lib/focuslight/worker.rb # thanks! class FluentdServer::SyncWorker include FluentdServer::Logger DEFAULT_INTERVAL = 60 attr_reader :interval def self.start(opts = {}) self.new(opts).start end def initialize(opts = {}) @opts = opts @interval = opts[:interval] || FluentdServer::Config.sync_interval || DEFAULT_INTERVAL @signals = [] end def update_next! now = Time.now @next_time = now - ( now.to_i % @interval ) + @interval end def start Signal.trap(:INT){ @signals << :INT } Signal.trap(:HUP){ @signals << :HUP } Signal.trap(:TERM){ @signals << :TERM } Signal.trap(:PIPE, "IGNORE") update_next! logger.info("[sync] first updater start in #{@next_time}") childpid = nil while sleep(0.5) do if childpid begin if Process.waitpid(childpid, Process::WNOHANG) #TODO: $? (Process::Status object) logger.debug("[sync] update finished pid: #{childpid}, code: #{$? >> 8}") logger.debug("[sync] next updater start in #{@next_time}") childpid = nil end rescue Errno::ECHILD logger.warn("[sync] no child process"); childpid = nil end end unless @signals.empty? logger.warn("[sync] signals_received: #{@signals.join(',')}") break end next if Time.now < @next_time update_next! logger.debug("[sync] (#{@next_time}) updater start") if childpid logger.warn("[sync] previous updater exists, skipping this time") next end childpid = fork do FluentdServer::SyncRunner.run(@opts) end end if childpid logger.warn("[sync] waiting for updater process finishing") begin waitpid childpid rescue Errno::ECHILD # ignore end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
fluentd-server-0.3.2 | lib/fluentd_server/sync_worker.rb |
fluentd-server-0.3.1 | lib/fluentd_server/sync_worker.rb |
fluentd-server-0.3.0 | lib/fluentd_server/sync_worker.rb |