fluentd 1.16.9 → 1.16.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 93691593c92aeca335e74f4c4bf3b1595655c97fc194b46c4ece5387201d9f05
4
- data.tar.gz: 83202ec05f5d4a7139edcabfc0be8134394216710402183bda98ab0b6e3f88d0
3
+ metadata.gz: aa40bacc9e6549ff2050843ead6a9852e6b3783a29c0e5f73dfbfad282707567
4
+ data.tar.gz: b429eb7f1a663524fb99bd89eb48de153ecdd1e85860048a26832be9143db964
5
5
  SHA512:
6
- metadata.gz: 912df889d8a361269285bb48d7b05ef910de2196d87ddf49f93bb026a2b65c2e158ce252cf13ba5280a14817012704021fabdb71b6e68d05b4ec19bde9727a8c
7
- data.tar.gz: e44d5fd2b8a7561dc7c81d2ad48cd4490457340065ec3d852aaf84444e68f7b323355bc39438814ecb6e3f0a1120c7caac4fa9738bcf3791286e43fdba37bfe8
6
+ metadata.gz: 0b437ed360b2bc3b65d965a88743b627a6c17efe0d5a328e57787b36c1b86b0749ee004cc84edba90c0a91a57dae98a7484ad5664f54c5fe37a589f36ebc7b02
7
+ data.tar.gz: 5711d692a6f2f4f5c9a9cfa7bfc8b6eafe4e588da708c5a09b5d9a386cd1d8c47a9ecb4ff5de6a77bcb8954dec5efa086234e14aeb9fee56abcd92ce91feee6c
@@ -29,7 +29,7 @@ jobs:
29
29
  ruby-version: ['3.3', '3.2', '3.1', '3.0', '2.7']
30
30
  name: Ruby ${{ matrix.ruby-version }} on ${{ matrix.os }}
31
31
  steps:
32
- - uses: actions/checkout@v3
32
+ - uses: actions/checkout@v5
33
33
  - name: Set up Ruby
34
34
  uses: ruby/setup-ruby@v1
35
35
  with:
@@ -41,7 +41,7 @@ jobs:
41
41
  - name: Install dependencies
42
42
  run: bundle install
43
43
  - name: Run tests
44
- run: bundle exec rake test TESTOPTS="-v --no-show-detail-immediately"
44
+ run: bundle exec rake test TESTOPTS="-v --report-slow-tests --no-show-detail-immediately"
45
45
 
46
46
  test-windows-service:
47
47
  runs-on: windows-latest
@@ -51,9 +51,9 @@ jobs:
51
51
  ruby-version: ['3.3', '3.2', '3.1', '3.0', '2.7']
52
52
  name: Windows service (Ruby ${{ matrix.ruby-version }})
53
53
  steps:
54
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
54
+ - uses: actions/checkout@v5
55
55
  - name: Set up Ruby
56
- uses: ruby/setup-ruby@e34163cd15f4bb403dcd72d98e295997e6a55798 # v1.238.0
56
+ uses: ruby/setup-ruby@v1
57
57
  with:
58
58
  ruby-version: ${{ matrix.ruby-version }}
59
59
  - name: Install dependencies
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # v1.16
2
2
 
3
+ ## Release v1.16.10 - 2025/09/12
4
+
5
+ ### Bug Fix
6
+
7
+ * server plugin helper: ensure to close all connections at shutdown
8
+ https://github.com/fluent/fluentd/pull/5088
9
+
10
+ ### Misc
11
+
12
+ * CI improvemnts
13
+ https://github.com/fluent/fluentd/pull/5083
14
+ https://github.com/fluent/fluentd/pull/5085
15
+ https://github.com/fluent/fluentd/pull/5086
16
+ https://github.com/fluent/fluentd/pull/5091
17
+ https://github.com/fluent/fluentd/pull/5092
18
+
3
19
  ## Release v1.16.9 - 2025/05/14
4
20
 
5
21
  ### Bug Fix
data/README.md CHANGED
@@ -4,7 +4,6 @@ Fluentd: Open-Source Log Collector
4
4
  [![Testing on Ubuntu](https://github.com/fluent/fluentd/actions/workflows/linux-test.yaml/badge.svg?branch=master)](https://github.com/fluent/fluentd/actions/workflows/linux-test.yaml)
5
5
  [![Testing on Windows](https://github.com/fluent/fluentd/actions/workflows/windows-test.yaml/badge.svg?branch=master)](https://github.com/fluent/fluentd/actions/workflows/windows-test.yaml)
6
6
  [![Testing on macOS](https://github.com/fluent/fluentd/actions/workflows/macos-test.yaml/badge.svg?branch=master)](https://github.com/fluent/fluentd/actions/workflows/macos-test.yaml)
7
- [![Code Climate](https://codeclimate.com/github/fluent/fluentd/badges/gpa.svg)](https://codeclimate.com/github/fluent/fluentd)
8
7
  [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1189/badge)](https://bestpractices.coreinfrastructure.org/projects/1189)
9
8
 
10
9
  [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)).
data/SECURITY.md CHANGED
@@ -2,11 +2,13 @@
2
2
 
3
3
  ## Supported Versions
4
4
 
5
- | Version | Supported |
6
- | ------- | ------------------ |
5
+ | Version | Supported |
6
+ |-----------|--------------------|
7
+ | 1.19.x | :white_check_mark: |
8
+ | 1.18.x | :x: |
9
+ | 1.17.x | :x: |
7
10
  | 1.16.x | :white_check_mark: |
8
- | 1.15.x | :white_check_mark: |
9
- | <= 1.14.x | :x: |
11
+ | <= 1.15.x | :x: |
10
12
 
11
13
  ## Reporting a Vulnerability
12
14
 
@@ -347,7 +347,10 @@ module Fluent
347
347
  end
348
348
 
349
349
  def shutdown
350
- @_server_connections.each do |conn|
350
+ # When it invokes conn.cose, it reduces elements in @_server_connections by close_callback,
351
+ # and it reduces the number of loops. This prevents the connection closing.
352
+ # So, it requires invoking #dup to avoid the problem.
353
+ @_server_connections.dup.each do |conn|
351
354
  conn.close rescue nil
352
355
  end
353
356
 
data/lib/fluent/test.rb CHANGED
@@ -40,9 +40,12 @@ module Fluent
40
40
 
41
41
  $log = dummy_logger
42
42
 
43
- Fluent.__send__(:remove_const, :Engine)
44
- engine = Fluent.const_set(:Engine, EngineClass.new).init(SystemConfig.new)
43
+ old_engine = Fluent.__send__(:remove_const, :Engine)
44
+ # Ensure that GC can remove the objects of the old engine.
45
+ # Some objects can still exist after `remove_const`. See https://github.com/fluent/fluentd/issues/5054.
46
+ old_engine.instance_variable_set(:@root_agent, nil)
45
47
 
48
+ engine = Fluent.const_set(:Engine, EngineClass.new).init(SystemConfig.new)
46
49
  engine.define_singleton_method(:now=) {|n|
47
50
  @now = n
48
51
  }
@@ -16,6 +16,6 @@
16
16
 
17
17
  module Fluent
18
18
 
19
- VERSION = '1.16.9'
19
+ VERSION = '1.16.10'
20
20
 
21
21
  end
@@ -50,6 +50,10 @@ class ObjectSpaceInputTest < Test::Unit::TestCase
50
50
  end
51
51
 
52
52
  def test_emit
53
+ # Force release garbaged objects due to avoid unexpected error by mock objects on `on_timer`
54
+ # https://github.com/fluent/fluentd/pull/5055
55
+ GC.start
56
+
53
57
  d = create_driver
54
58
 
55
59
  d.run(expect_emits: 3)
@@ -178,6 +178,42 @@ EOL
178
178
  assert{ logs.any?{|log| log.include?(expected_log) && log.include?(expected_detail) } }
179
179
  end
180
180
 
181
+ sub_test_case 'configure compress' do
182
+ data('default', ['', :text])
183
+ data('gzip', ['compress gzip', :gzip])
184
+ test 'should be applied' do |(option, expected)|
185
+ @d = d = create_driver(config + option)
186
+ node = d.instance.nodes.first
187
+
188
+ assert_equal(
189
+ [expected, expected],
190
+ [d.instance.compress, node.instance_variable_get(:@compress)]
191
+ )
192
+ end
193
+
194
+ # TODO add tests that we cannot configure the different compress type between owner and buffer except for :text
195
+ data('gzip', ['compress gzip', :text, :gzip])
196
+ test 'can configure buffer compress separately when owner uses :text' do |(buffer_option, expected_owner_compress, expected_buffer_compress)|
197
+ @d = d = create_driver(config + %[
198
+ <buffer>
199
+ type memory
200
+ #{buffer_option}
201
+ </buffer>
202
+ ])
203
+ node = d.instance.nodes.first
204
+
205
+ assert_equal(
206
+ [expected_owner_compress, expected_owner_compress, expected_buffer_compress],
207
+ [d.instance.compress, node.instance_variable_get(:@compress), d.instance.buffer.compress],
208
+ )
209
+
210
+ log_message = "buffer is compressed. If you also want to save the bandwidth of a network, Add `compress` configuration in <match>"
211
+ assert do
212
+ d.logs.any? { |log| log.include?(log_message) }
213
+ end
214
+ end
215
+ end
216
+
181
217
  data('CA cert' => 'tls_ca_cert_path',
182
218
  'non CA cert' => 'tls_cert_path')
183
219
  test 'configure tls_cert_path/tls_ca_cert_path' do |param|
@@ -326,40 +362,6 @@ EOL
326
362
  assert_equal 1234, d.instance.discovery_manager.services[0].port
327
363
  end
328
364
 
329
- test 'compress_default_value' do
330
- @d = d = create_driver
331
- assert_equal :text, d.instance.compress
332
-
333
- node = d.instance.nodes.first
334
- assert_equal :text, node.instance_variable_get(:@compress)
335
- end
336
-
337
- test 'set_compress_is_gzip' do
338
- @d = d = create_driver(config + %[compress gzip])
339
- assert_equal :gzip, d.instance.compress
340
- assert_equal :gzip, d.instance.buffer.compress
341
-
342
- node = d.instance.nodes.first
343
- assert_equal :gzip, node.instance_variable_get(:@compress)
344
- end
345
-
346
- test 'set_compress_is_gzip_in_buffer_section' do
347
- mock = flexmock($log)
348
- mock.should_receive(:log).with("buffer is compressed. If you also want to save the bandwidth of a network, Add `compress` configuration in <match>")
349
-
350
- @d = d = create_driver(config + %[
351
- <buffer>
352
- type memory
353
- compress gzip
354
- </buffer>
355
- ])
356
- assert_equal :text, d.instance.compress
357
- assert_equal :gzip, d.instance.buffer.compress
358
-
359
- node = d.instance.nodes.first
360
- assert_equal :text, node.instance_variable_get(:@compress)
361
- end
362
-
363
365
  test 'phi_failure_detector disabled' do
364
366
  @d = d = create_driver(config + %[phi_failure_detector false \n phi_threshold 0])
365
367
  node = d.instance.nodes.first
@@ -364,6 +364,25 @@ class ServerPluginHelperTest < Test::Unit::TestCase
364
364
  d2.stop; d2.before_shutdown; d2.shutdown; d2.after_shutdown; d2.close; d2.terminate
365
365
  end
366
366
  end
367
+
368
+ test 'close all connections by shutdown' do
369
+ @d.server_create_tcp(:s, @port) do |data, conn|
370
+ end
371
+
372
+ client_sockets = []
373
+ 5.times do
374
+ client_sockets << TCPSocket.open("127.0.0.1", @port)
375
+ end
376
+ waiting(4){ sleep 0.1 until @d.instance_variable_get(:@_server_connections).size == 5 }
377
+
378
+ @d.stop
379
+ @d.before_shutdown
380
+ @d.shutdown
381
+
382
+ assert_true @d.instance_variable_get(:@_server_connections).empty?
383
+ ensure
384
+ client_sockets.each(&:close)
385
+ end
367
386
  end
368
387
 
369
388
  sub_test_case '#server_create' do
@@ -2,7 +2,7 @@ require_relative 'helper'
2
2
  require 'fluent/plugin_helper'
3
3
  require 'fluent/plugin/base'
4
4
 
5
- class ConfigTest < Test::Unit::TestCase
5
+ class PluginHelperTest < Test::Unit::TestCase
6
6
  module FluentTest; end
7
7
 
8
8
  sub_test_case 'Fluent::Plugin::Base.helpers method works as shortcut to include helper modules' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluentd
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.9
4
+ version: 1.16.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sadayuki Furuhashi