diff --git a/lib/fluent/plugin/output.rb b/lib/fluent/plugin/output.rb index abaa29fa72..ce2a5ffc0b 100644 --- a/lib/fluent/plugin/output.rb +++ b/lib/fluent/plugin/output.rb @@ -28,6 +28,7 @@ require 'fluent/clock' require 'fluent/ext_monitor_require' +require 'json' require 'time' module Fluent @@ -1212,7 +1213,7 @@ def next_flush_time end end - UNRECOVERABLE_ERRORS = [Fluent::UnrecoverableError, TypeError, ArgumentError, NoMethodError, MessagePack::UnpackError, EncodingError] + UNRECOVERABLE_ERRORS = [Fluent::UnrecoverableError, TypeError, ArgumentError, NoMethodError, MessagePack::UnpackError, EncodingError, JSON::GeneratorError] def try_flush chunk = @buffer.dequeue_chunk diff --git a/test/plugin/test_output_as_buffered_backup.rb b/test/plugin/test_output_as_buffered_backup.rb index 73e628c9ad..2956fbf393 100644 --- a/test/plugin/test_output_as_buffered_backup.rb +++ b/test/plugin/test_output_as_buffered_backup.rb @@ -184,7 +184,9 @@ def wait_flush(target_file) 'argument error' => ArgumentError, 'no method error' => NoMethodError, 'msgpack unpack error' => MessagePack::UnpackError, - 'encoding error' => EncodingError) + 'encoding error' => EncodingError, + 'json generate error' => JSON::GeneratorError + ) test 'backup chunk without secondary' do |error_class| Fluent::SystemConfig.overwrite_system_config('root_dir' => TMP_DIR) do id = 'backup_test'