lib/fluent/engine.rb in fluentd-0.10.44 vs lib/fluent/engine.rb in fluentd-0.10.45

- old
+ new

@@ -22,10 +22,11 @@ @sources = [] @match_cache = {} @match_cache_keys = [] @started = [] @default_loop = nil + @engine_stopped = false @log_emit_thread = nil @log_event_loop_stop = false @log_event_queue = [] @@ -206,16 +207,23 @@ if match?($log.tag) $log.enable_event @log_emit_thread = Thread.new(&method(:log_event_loop)) end - # for empty loop - @default_loop = Coolio::Loop.default - @default_loop.attach Coolio::TimerWatcher.new(1, true) - # TODO attach async watch for thread pool - @default_loop.run + unless @engine_stopped + # for empty loop + @default_loop = Coolio::Loop.default + @default_loop.attach Coolio::TimerWatcher.new(1, true) + # TODO attach async watch for thread pool + @default_loop.run + end + if @engine_stopped and @default_loop + @default_loop.stop + @default_loop = nil + end + rescue => e $log.error "unexpected error", :error_class=>e.class, :error=>e $log.error_backtrace ensure $log.info "shutting down fluentd" @@ -226,9 +234,10 @@ end end end def stop + @engine_stopped = true if @default_loop @default_loop.stop @default_loop = nil end nil