Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package rubygem-fluentd for openSUSE:Factory
checked in at 2022-02-24 18:20:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-fluentd (Old)
and /work/SRC/openSUSE:Factory/.rubygem-fluentd.new.1958 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-fluentd"
Thu Feb 24 18:20:16 2022 rev:19 rq:956117 version:1.14.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-fluentd/rubygem-fluentd.changes
2022-02-02 22:45:02.398057113 +0100
+++
/work/SRC/openSUSE:Factory/.rubygem-fluentd.new.1958/rubygem-fluentd.changes
2022-02-24 18:23:32.454657003 +0100
@@ -1,0 +2,31 @@
+Tue Feb 15 07:28:19 UTC 2022 - Stephan Kulow <[email protected]>
+
+updated to version 1.14.5
+ see installed CHANGELOG.md
+
+ # v1.14.5
+
+ ## Release v1.14.5 - 2022/02/09
+
+ ### Enhancement
+
+ * Add support for "application/x-ndjson" to `in_http`
+ https://github.com/fluent/fluentd/pull/3616
+ * Add support for ucrt binary for Windows
+ https://github.com/fluent/fluentd/pull/3613
+
+ ### Bug fixes
+
+ * Don't retry when `retry_max_times == 0`
+ https://github.com/fluent/fluentd/pull/3608
+ * Fix hang-up issue during TLS handshake in `out_forward`
+ https://github.com/fluent/fluentd/pull/3601
+ * Bump up required ServerEngine to v2.2.5
+ https://github.com/fluent/fluentd/pull/3599
+ * Fix "invalid byte sequence is replaced" warning on Kubernetes
+ https://github.com/fluent/fluentd/pull/3596
+ * Fix "ArgumentError: unknown keyword: :logger" on Windows with Ruby 3.1
+ https://github.com/fluent/fluentd/pull/3592
+
+
+-------------------------------------------------------------------
Old:
----
fluentd-1.14.4.gem
New:
----
fluentd-1.14.5.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-fluentd.spec ++++++
--- /var/tmp/diff_new_pack.mT2Oiz/_old 2022-02-24 18:23:32.950656909 +0100
+++ /var/tmp/diff_new_pack.mT2Oiz/_new 2022-02-24 18:23:32.954656908 +0100
@@ -24,7 +24,7 @@
#
Name: rubygem-fluentd
-Version: 1.14.4
+Version: 1.14.5
Release: 0
%define mod_name fluentd
%define mod_full_name %{mod_name}-%{version}
++++++ fluentd-1.14.4.gem -> fluentd-1.14.5.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md
--- old/CHANGELOG.md 2022-01-06 06:19:35.000000000 +0100
+++ new/CHANGELOG.md 2022-02-09 04:08:36.000000000 +0100
@@ -1,3 +1,27 @@
+# v1.14.5
+
+## Release v1.14.5 - 2022/02/09
+
+### Enhancement
+
+* Add support for "application/x-ndjson" to `in_http`
+ https://github.com/fluent/fluentd/pull/3616
+* Add support for ucrt binary for Windows
+ https://github.com/fluent/fluentd/pull/3613
+
+### Bug fixes
+
+* Don't retry when `retry_max_times == 0`
+ https://github.com/fluent/fluentd/pull/3608
+* Fix hang-up issue during TLS handshake in `out_forward`
+ https://github.com/fluent/fluentd/pull/3601
+* Bump up required ServerEngine to v2.2.5
+ https://github.com/fluent/fluentd/pull/3599
+* Fix "invalid byte sequence is replaced" warning on Kubernetes
+ https://github.com/fluent/fluentd/pull/3596
+* Fix "ArgumentError: unknown keyword: :logger" on Windows with Ruby 3.1
+ https://github.com/fluent/fluentd/pull/3592
+
# v1.14.4
## Release v1.14.4 - 2022/01/06
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md 2022-01-06 06:19:35.000000000 +0100
+++ new/README.md 2022-02-09 04:08:36.000000000 +0100
@@ -1,17 +1,12 @@
Fluentd: Open-Source Log Collector
===================================
-GitHub Actions:
[](https://github.com/fluent/fluentd/actions/workflows/linux-test.yaml)
[](https://github.com/fluent/fluentd/actions/workflows/windows-test.yaml)
[](https://github.com/fluent/fluentd/actions/workflows/macos-test.yaml)
+[](https://cloud.drone.io/fluent/fluentd)
[](https://codeclimate.com/github/fluent/fluentd)
[](https://bestpractices.coreinfrastructure.org/projects/1189)
-[](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Ffluent%2Ffluentd?ref=badge_shield)
-
-Drone CI for Arm64:
-
-[](https://cloud.drone.io/fluent/fluentd)
[Fluentd](https://www.fluentd.org/) collects events from various data sources
and writes them to files, RDBMS, NoSQL, IaaS, SaaS, Hadoop and so on. Fluentd
helps you unify your logging infrastructure (Learn more about the [Unified
Logging Layer](https://www.fluentd.org/blog/unified-logging-layer)).
@@ -19,16 +14,6 @@
<img src="https://www.fluentd.org/images/fluentd-architecture.png"
width="500px"/>
</p>
-An event consists of *tag*, *time* and *record*. Tag is a string separated
with '.' (e.g. myapp.access). It is used to categorize events. Time is a UNIX
time recorded at occurrence of an event. Record is a JSON object.
-
-## Example Use Cases
-
-Use Case | Description | Diagram
--------- | ------------|:---------:
-Centralizing Apache/Nginx Server Logs | Fluentd can be used to tail
access/error logs and transport them reliably to remote systems. | <img
src="https://www.fluentd.org/images/recipes/elasticsearch-s3-fluentd.png"
height="150"/>
-Syslog Alerting | Fluentd can "grep" for events and send out alerts. | <img
src="https://www.fluentd.org/images/syslog-fluentd-alert.png" height="100"/>
-Mobile/Web Application Logging | Fluentd can function as middleware to enable
asynchronous, scalable logging for user action events. | <img
src="https://www.fluentd.org/images/datasources/asynchronous_logging.png"
height="150"/>
-
## Quick Start
$ gem install fluentd
@@ -66,12 +51,6 @@
$ bundle exec rake test TEST=test/test_specified_path.rb
$ bundle exec rake test TEST=test/test_*.rb
-## Fluentd UI: Admin GUI
-
-[Fluentd UI](https://github.com/fluent/fluentd-ui) is a graphical user
interface to start/stop/configure Fluentd.
-
-<p align="center"><img width="500"
src="https://www.fluentd.org/images/blog/fluentd-ui.gif"/></p>
-
## More Information
- Website: https://www.fluentd.org/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Rakefile new/Rakefile
--- old/Rakefile 2022-01-06 06:19:35.000000000 +0100
+++ new/Rakefile 2022-02-09 04:08:36.000000000 +0100
@@ -14,7 +14,7 @@
desc 'Build gems for all platforms'
task :all do
Bundler.with_clean_env do
- %w[ruby x86-mingw32 x64-mingw32].each do |name|
+ %w[ruby x86-mingw32 x64-mingw32 x64-mingw-ucrt].each do |name|
ENV['GEM_BUILD_FAKE_PLATFORM'] = name
Rake::Task["build"].execute
end
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fluentd.gemspec new/fluentd.gemspec
--- old/fluentd.gemspec 2022-01-06 06:19:35.000000000 +0100
+++ new/fluentd.gemspec 2022-02-09 04:08:36.000000000 +0100
@@ -22,7 +22,7 @@
gem.add_runtime_dependency("msgpack", [">= 1.3.1", "< 2.0.0"])
gem.add_runtime_dependency("yajl-ruby", ["~> 1.0"])
gem.add_runtime_dependency("cool.io", [">= 1.4.5", "< 2.0.0"])
- gem.add_runtime_dependency("serverengine", [">= 2.2.2", "< 3.0.0"])
+ gem.add_runtime_dependency("serverengine", [">= 2.2.5", "< 3.0.0"])
gem.add_runtime_dependency("http_parser.rb", [">= 0.5.1", "< 0.9.0"])
gem.add_runtime_dependency("sigdump", ["~> 0.2.2"])
gem.add_runtime_dependency("tzinfo", [">= 1.0", "< 3.0"])
@@ -51,5 +51,6 @@
gem.add_development_dependency("test-unit", ["~> 3.3"])
gem.add_development_dependency("test-unit-rr", ["~> 1.0"])
gem.add_development_dependency("oj", [">= 2.14", "< 4"])
+ gem.add_development_dependency("async", "~> 1.23")
gem.add_development_dependency("async-http", ">= 0.50.0")
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/fluent/config/error.rb
new/lib/fluent/config/error.rb
--- old/lib/fluent/config/error.rb 2022-01-06 06:19:35.000000000 +0100
+++ new/lib/fluent/config/error.rb 2022-02-09 04:08:36.000000000 +0100
@@ -29,4 +29,16 @@
class SetDefault < Exception
end
+
+ class NotFoundPluginError < ConfigError
+ attr_reader :type, :kind
+
+ def initialize(msg, type: nil, kind: nil)
+ @msg = msg
+ @type = type
+ @kind = kind
+
+ super(msg)
+ end
+ end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/fluent/plugin/base.rb
new/lib/fluent/plugin/base.rb
--- old/lib/fluent/plugin/base.rb 2022-01-06 06:19:35.000000000 +0100
+++ new/lib/fluent/plugin/base.rb 2022-02-09 04:08:36.000000000 +0100
@@ -72,8 +72,8 @@
def string_safe_encoding(str)
unless str.valid_encoding?
- log.info "invalid byte sequence is replaced in `#{str}`" if
self.respond_to?(:log)
str = str.scrub('?')
+ log.info "invalid byte sequence is replaced in `#{str}`" if
self.respond_to?(:log)
end
yield str
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/fluent/plugin/in_http.rb
new/lib/fluent/plugin/in_http.rb
--- old/lib/fluent/plugin/in_http.rb 2022-01-06 06:19:35.000000000 +0100
+++ new/lib/fluent/plugin/in_http.rb 2022-02-09 04:08:36.000000000 +0100
@@ -314,8 +314,16 @@
@parser_json.parse(js) do |_time, record|
return nil, record
end
+ elsif ndjson = params['ndjson']
+ events = []
+ ndjson.split(/\r?\n/).each do |js|
+ @parser_json.parse(js) do |_time, record|
+ events.push(record)
+ end
+ end
+ return nil, events
else
- raise "'json' or 'msgpack' parameter is required"
+ raise "'json', 'ndjson' or 'msgpack' parameter is required"
end
end
@@ -567,6 +575,8 @@
params['json'] = @body
elsif @content_type =~ /^application\/msgpack/
params['msgpack'] = @body
+ elsif @content_type =~ /^application\/x-ndjson/
+ params['ndjson'] = @body
end
path_info = uri.path
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/fluent/plugin/output.rb
new/lib/fluent/plugin/output.rb
--- old/lib/fluent/plugin/output.rb 2022-01-06 06:19:35.000000000 +0100
+++ new/lib/fluent/plugin/output.rb 2022-02-09 04:08:36.000000000 +0100
@@ -1275,11 +1275,15 @@
unless @retry
@retry = retry_state(@buffer_config.retry_randomize)
- if error
- log.warn "failed to flush the buffer.", retry_times:
@retry.steps, next_retry_time: @retry.next_time.round, chunk: chunk_id_hex,
error: error
- log.warn_backtrace error.backtrace
+ if @retry.limit?
+ # @retry_max_times == 0, fail imediately by the following block
+ else
+ if error
+ log.warn "failed to flush the buffer.", retry_times:
@retry.steps, next_retry_time: @retry.next_time.round, chunk: chunk_id_hex,
error: error
+ log.warn_backtrace error.backtrace
+ end
+ return
end
- return
end
# @retry exists
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/fluent/plugin_helper/socket.rb
new/lib/fluent/plugin_helper/socket.rb
--- old/lib/fluent/plugin_helper/socket.rb 2022-01-06 06:19:35.000000000
+0100
+++ new/lib/fluent/plugin_helper/socket.rb 2022-02-09 04:08:36.000000000
+0100
@@ -96,6 +96,7 @@
enable_system_cert_store: true, allow_self_signed_cert: false,
cert_paths: nil,
cert_path: nil, private_key_path: nil, private_key_passphrase: nil,
cert_thumbprint: nil, cert_logical_store_name: nil,
cert_use_enterprise_store: true,
+ connect_timeout: nil,
**kwargs, &block)
host_is_ipaddress = IPAddr.new(host) rescue false
@@ -158,13 +159,23 @@
end
Fluent::TLS.set_version_to_context(context, version, min_version,
max_version)
- tcpsock = socket_create_tcp(host, port, **kwargs)
+ tcpsock = socket_create_tcp(host, port, connect_timeout:
connect_timeout, **kwargs)
sock = WrappedSocket::TLS.new(tcpsock, context)
sock.sync_close = true
sock.hostname = fqdn if verify_fqdn && fqdn &&
sock.respond_to?(:hostname=)
log.trace "entering TLS handshake"
- sock.connect
+ if connect_timeout
+ begin
+ Timeout.timeout(connect_timeout) { sock.connect }
+ rescue Timeout::Error
+ log.warn "timeout while connecting tls session", host: host
+ sock.close rescue nil
+ raise
+ end
+ else
+ sock.connect
+ end
begin
if verify_fqdn
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/fluent/registry.rb new/lib/fluent/registry.rb
--- old/lib/fluent/registry.rb 2022-01-06 06:19:35.000000000 +0100
+++ new/lib/fluent/registry.rb 2022-02-09 04:08:36.000000000 +0100
@@ -45,7 +45,8 @@
if value = @map[type]
return value
end
- raise ConfigError, "Unknown #{@kind} plugin '#{type}'. Run 'gem search
-rd fluent-plugin' to find plugins" # TODO error class
+ raise NotFoundPluginError.new("Unknown #{@kind} plugin '#{type}'. Run
'gem search -rd fluent-plugin' to find plugins",
+ kind: @kind, type: type)
end
def reverse_lookup(value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/fluent/version.rb new/lib/fluent/version.rb
--- old/lib/fluent/version.rb 2022-01-06 06:19:35.000000000 +0100
+++ new/lib/fluent/version.rb 2022-02-09 04:08:36.000000000 +0100
@@ -16,6 +16,6 @@
module Fluent
- VERSION = '1.14.4'
+ VERSION = '1.14.5'
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2022-01-06 06:19:35.000000000 +0100
+++ new/metadata 2022-02-09 04:08:36.000000000 +0100
@@ -1,14 +1,14 @@
--- !ruby/object:Gem::Specification
name: fluentd
version: !ruby/object:Gem::Version
- version: 1.14.4
+ version: 1.14.5
platform: ruby
authors:
- Sadayuki Furuhashi
autorequire:
bindir: bin
cert_chain: []
-date: 2022-01-06 00:00:00.000000000 Z
+date: 2022-02-09 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: bundler
@@ -84,7 +84,7 @@
requirements:
- - ">="
- !ruby/object:Gem::Version
- version: 2.2.2
+ version: 2.2.5
- - "<"
- !ruby/object:Gem::Version
version: 3.0.0
@@ -94,7 +94,7 @@
requirements:
- - ">="
- !ruby/object:Gem::Version
- version: 2.2.2
+ version: 2.2.5
- - "<"
- !ruby/object:Gem::Version
version: 3.0.0
@@ -339,6 +339,20 @@
- !ruby/object:Gem::Version
version: '4'
- !ruby/object:Gem::Dependency
+ name: async
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - "~>"
+ - !ruby/object:Gem::Version
+ version: '1.23'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - "~>"
+ - !ruby/object:Gem::Version
+ version: '1.23'
+- !ruby/object:Gem::Dependency
name: async-http
requirement: !ruby/object:Gem::Requirement
requirements:
@@ -945,7 +959,7 @@
- !ruby/object:Gem::Version
version: '0'
requirements: []
-rubygems_version: 3.1.2
+rubygems_version: 3.3.3
signing_key:
specification_version: 4
summary: Fluentd event collector
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/test/compat/test_parser.rb
new/test/compat/test_parser.rb
--- old/test/compat/test_parser.rb 2022-01-06 06:19:35.000000000 +0100
+++ new/test/compat/test_parser.rb 2022-02-09 04:08:36.000000000 +0100
@@ -22,7 +22,7 @@
Fluent::TextParser.register_template('multi_event_test', Proc.new {
MultiEventTestParser.new })
def test_lookup_unknown_format
- assert_raise Fluent::ConfigError do
+ assert_raise Fluent::NotFoundPluginError do
Fluent::Plugin.new_parser('unknown')
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/test/plugin/test_filter_parser.rb
new/test/plugin/test_filter_parser.rb
--- old/test/plugin/test_filter_parser.rb 2022-01-06 06:19:35.000000000
+0100
+++ new/test/plugin/test_filter_parser.rb 2022-02-09 04:08:36.000000000
+0100
@@ -46,7 +46,7 @@
assert_raise(Fluent::ConfigError) {
create_driver('')
}
- assert_raise(Fluent::ConfigError) {
+ assert_raise(Fluent::NotFoundPluginError) {
create_driver %[
key_name foo
<parse>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/test/plugin/test_filter_stdout.rb
new/test/plugin/test_filter_stdout.rb
--- old/test/plugin/test_filter_stdout.rb 2022-01-06 06:19:35.000000000
+0100
+++ new/test/plugin/test_filter_stdout.rb 2022-02-09 04:08:36.000000000
+0100
@@ -63,7 +63,7 @@
end
def test_invalid_output_type
- assert_raise(Fluent::ConfigError) do
+ assert_raise(Fluent::NotFoundPluginError) do
d = create_driver(CONFIG + config_element("", "", { "output_type" =>
"foo" }))
d.run {}
end
@@ -139,7 +139,7 @@
def test_invalid_output_type
conf = config_element
conf.elements << config_element("format", "", { "@type" => "stdout",
"output_type" => "foo" })
- assert_raise(Fluent::ConfigError) do
+ assert_raise(Fluent::NotFoundPluginError) do
d = create_driver(conf)
d.run {}
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/test/plugin/test_in_http.rb
new/test/plugin/test_in_http.rb
--- old/test/plugin/test_in_http.rb 2022-01-06 06:19:35.000000000 +0100
+++ new/test/plugin/test_in_http.rb 2022-02-09 04:08:36.000000000 +0100
@@ -540,6 +540,29 @@
assert_equal_event_time time, d.events[1][1]
end
+ def test_application_ndjson
+ d = create_driver
+ events = [
+ ["tag1", 1643935663, "{\"a\":1}\n{\"b\":2}"],
+ ["tag2", 1643935664, "{\"a\":3}\r\n{\"b\":4}"]
+ ]
+
+ expected = [
+ ["tag1", 1643935663, {"a"=>1}],
+ ["tag1", 1643935663, {"b"=>2}],
+ ["tag2", 1643935664, {"a"=>3}],
+ ["tag2", 1643935664, {"b"=>4}]
+ ]
+
+ d.run(expect_records: 1) do
+ events.each do |tag, time, record|
+ res = post("/#{tag}?time=#{time}", record,
{"Content-Type"=>"application/x-ndjson"})
+ assert_equal("200", res.code)
+ end
+ end
+ assert_equal(expected, d.events)
+ end
+
def test_msgpack
d = create_driver
time = event_time("2011-01-02 13:14:15 UTC")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/test/plugin/test_out_stdout.rb
new/test/plugin/test_out_stdout.rb
--- old/test/plugin/test_out_stdout.rb 2022-01-06 06:19:35.000000000 +0100
+++ new/test/plugin/test_out_stdout.rb 2022-02-09 04:08:36.000000000 +0100
@@ -32,7 +32,7 @@
assert_kind_of Fluent::Plugin::StdoutFormatter, d.instance.formatter
assert_equal 'hash', d.instance.formatter.output_type
- assert_raise(Fluent::ConfigError) do
+ assert_raise(Fluent::NotFoundPluginError) do
d = create_driver(CONFIG + "\noutput_type foo")
end
end
@@ -126,7 +126,7 @@
assert_kind_of Fluent::Plugin::StdoutFormatter, d.instance.formatter
assert_equal 'hash', d.instance.formatter.output_type
- assert_raise(Fluent::ConfigError) do
+ assert_raise(Fluent::NotFoundPluginError) do
create_driver(config_element("ROOT", "", {"output_type" => "foo"},
[config_element("buffer")]))
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/test/plugin/test_output_as_buffered_retries.rb
new/test/plugin/test_output_as_buffered_retries.rb
--- old/test/plugin/test_output_as_buffered_retries.rb 2022-01-06
06:19:35.000000000 +0100
+++ new/test/plugin/test_output_as_buffered_retries.rb 2022-02-09
04:08:36.000000000 +0100
@@ -701,6 +701,53 @@
assert{ @i.buffer.stage.size == 1 }
assert{ chunks.all?{|c| c.empty? } }
end
+
+ test 'Do not retry when retry_max_times is 0' do
+ written_tags = []
+
+ chunk_key = 'tag'
+ hash = {
+ 'flush_interval' => 1,
+ 'flush_thread_burst_interval' => 0.1,
+ 'retry_type' => :periodic,
+ 'retry_wait' => 1,
+ 'retry_randomize' => false,
+ 'retry_max_times' => 0,
+ 'queued_chunks_limit_size' => 100
+ }
+
@i.configure(config_element('ROOT','',{},[config_element('buffer',chunk_key,hash)]))
+ @i.register(:prefer_buffered_processing){ true }
+ @i.register(:format){|tag,time,record| [tag,time.to_i,record].to_json +
"\n" }
+ @i.register(:write){|chunk| written_tags << chunk.metadata.tag; raise
"yay, your #write must fail" }
+ @i.start
+ @i.after_start
+
+ @i.interrupt_flushes
+
+ now = Time.parse('2016-04-13 18:33:30 -0700')
+ Timecop.freeze( now )
+
+ @i.emit_events("test.tag.1", dummy_event_stream())
+
+ now = Time.parse('2016-04-13 18:33:31 -0700')
+ Timecop.freeze( now )
+
+ @i.emit_events("test.tag.2", dummy_event_stream())
+
+ assert_equal(0, @i.write_count)
+ assert_equal(0, @i.num_errors)
+
+ @i.enqueue_thread_wait
+ @i.flush_thread_wakeup
+ waiting(2){ Thread.pass until @i.write_count == 1 && @i.num_errors == 1 }
+
+ assert(@i.write_count == 1)
+ assert(@i.num_errors == 1)
+ assert(@i.log.out.logs.any?{|l| l.include?("[error]: failed to flush the
buffer, and hit limit for retries. dropping all chunks in the buffer queue.")
&& l.include?("retry_times=0") })
+ assert(@i.buffer.queue.size == 0)
+ assert(@i.buffer.stage.size == 1)
+ assert(@i.buffer.queue.all?{|c| c.empty? })
+ end
end
sub_test_case 'buffered output configured as retry_forever' do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/test/test_formatter.rb new/test/test_formatter.rb
--- old/test/test_formatter.rb 2022-01-06 06:19:35.000000000 +0100
+++ new/test/test_formatter.rb 2022-02-09 04:08:36.000000000 +0100
@@ -349,7 +349,7 @@
include FormatterTest
def test_unknown_format
- assert_raise ConfigError do
+ assert_raise NotFoundPluginError do
Fluent::Plugin.new_formatter('unknown')
end
end