module Fluent::PluginHelper::EventLoop

def after_shutdown

def after_shutdown
  timeout_at = Fluent::Clock.now + EVENT_LOOP_SHUTDOWN_TIMEOUT
  @_event_loop_mutex.synchronize do
    @_event_loop.watchers.reverse.each do |w|
      begin
        w.detach
      rescue => e
        log.warn "unexpected error while detaching event loop watcher", error: e
      end
    end
  end
  while @_event_loop_running
    if Fluent::Clock.now >= timeout_at
      log.warn "event loop does NOT exit until hard timeout."
      raise "event loop does NOT exit until hard timeout." if @under_plugin_development
      break
    end
    sleep 0.1
  end
  super
end