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