Closed yas-ysd closed 12 years ago
td-agent-1.1.9-0にてfluentを使用しております
in_tail.rbのソースを見たところ(失礼ながらログも埋め込ませていただきました)
わざとforward先のFluendをダウンさせ Buffer/QueueをFULLにしました
その後Fluentdを再開させても@buffer.empty?がfalseのままとなり例外メッセージを吐き続ける状態となりました
ぱっとみた原因ですが最初に303行のrescueにて"BufferQueueLimitError(queue size exceeds limit)"を処理しています rescue $log.error $!.to_s $log.error_backtrace close しかし、ここでcloseしている為、これ以降ファイルがclose状態になり、"closed stream"の例外が 発生し続けfluentdを再起動する必要があります
単純に以下のようにしたところ一応例外処理は発生しなくなっております ※単純に別途BufferQueueLimitError例外処理を用意してcloseをしないようにしただけです
rescue BufferQueueLimitError $log.error $!.to_s $log.error_backtrace rescue => err $log.error $!.to_s $log.error_backtrace close end
報告ありがとうございます。例外処理に抜けがありました… 45f58de9f507af35081f0c11be75575db2538ca2 で修正しました。
td-agent-1.1.9-0にてfluentを使用しております
in_tail.rbのソースを見たところ(失礼ながらログも埋め込ませていただきました)
わざとforward先のFluendをダウンさせ Buffer/QueueをFULLにしました
その後Fluentdを再開させても@buffer.empty?がfalseのままとなり例外メッセージを吐き続ける状態となりました
ぱっとみた原因ですが最初に303行のrescueにて"BufferQueueLimitError(queue size exceeds limit)"を処理しています rescue $log.error $!.to_s $log.error_backtrace close しかし、ここでcloseしている為、これ以降ファイルがclose状態になり、"closed stream"の例外が 発生し続けfluentdを再起動する必要があります
単純に以下のようにしたところ一応例外処理は発生しなくなっております ※単純に別途BufferQueueLimitError例外処理を用意してcloseをしないようにしただけです