fluentd 1.16.7-x86-mingw32 → 1.16.8-x86-mingw32

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: fcc3a30a9e314d87517f7be5560f5ff382d3335b0320be04ac6b3bb489bbdd8c
4
- data.tar.gz: e8a6e2ff32150bf564036724aa5e39ee45c933ea391498163a70b4aa3242473d
3
+ metadata.gz: 0c5ae232fdfccc14424b4d022e8d3e4ca9bd05b3b7c8a8de10508263c6ea651c
4
+ data.tar.gz: 60d0abe234b4493236956d88f63d5807c7124682dec6333d3966148f66efa1dc
5
5
  SHA512:
6
- metadata.gz: d13313bad71d1bf23044f1a8fef3157c8e5392024cf6d2f5015fd4a2ab57eab0fc86b52fa9191705a82536cfafadafb7c19b975bc6c7d68f925ac132590a7278
7
- data.tar.gz: e0300f26f6713d5cada654b7774b0f0a25a4593cc2f961e484c54c5e15effdbdc87b17e2398f3f4430ca4e92e0a92e014223534e54cf44772a2c55918c73fdc6
6
+ metadata.gz: e606b2d087be49f0ddaa3dff9d4dd0b62ad8e70e0a3d5f044df875b53606dc46ab0755d33edca16bd10b9c386be4e87ea10ef47a34a4cecda4f635e32f2236da
7
+ data.tar.gz: a19cde7e7a898b1c93f404dfdc94b9828140f4793c118a3c596e49c7ba77e317c33ac958cb9cc1d4fe33b6ea7cadd2962ed6d4373e6f865e417fa44d742a48f9
@@ -12,6 +12,10 @@ on:
12
12
  - '*.md'
13
13
  - 'lib/fluent/version.rb'
14
14
 
15
+ concurrency:
16
+ group: ${{ github.head_ref || github.sha }}-${{ github.workflow }}
17
+ cancel-in-progress: true
18
+
15
19
  jobs:
16
20
  test:
17
21
  runs-on: ${{ matrix.os }}
data/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # v1.16
2
2
 
3
+ ## Release v1.16.8 - 2025/05/01
4
+
5
+ ### Bug Fix
6
+
7
+ * winsvc: Stop the service when the supervisor is dead
8
+ https://github.com/fluent/fluentd/pull/4942
9
+ * formatter_csv: Fix memory leak
10
+ https://github.com/fluent/fluentd/pull/4920
11
+
12
+ ### Misc
13
+
14
+ * Add fiddle as dependency gem for Ruby 3.5 on Windows
15
+ https://github.com/fluent/fluentd/pull/4919
16
+ * Refactoring code
17
+ https://github.com/fluent/fluentd/pull/4921
18
+ https://github.com/fluent/fluentd/pull/4922
19
+ https://github.com/fluent/fluentd/pull/4926
20
+ https://github.com/fluent/fluentd/pull/4943
21
+ * CI improvemnts
22
+ https://github.com/fluent/fluentd/pull/4821
23
+ https://github.com/fluent/fluentd/pull/4850
24
+ https://github.com/fluent/fluentd/pull/4851
25
+ https://github.com/fluent/fluentd/pull/4862
26
+ https://github.com/fluent/fluentd/pull/4915
27
+ https://github.com/fluent/fluentd/pull/4923
28
+ https://github.com/fluent/fluentd/pull/4925
29
+ https://github.com/fluent/fluentd/pull/4927
30
+
3
31
  ## Release v1.16.7 - 2025/01/29
4
32
 
5
33
  ### Bug Fix
data/fluentd.gemspec CHANGED
@@ -32,9 +32,7 @@ Gem::Specification.new do |gem|
32
32
  gem.add_runtime_dependency("console", ["< 1.24"])
33
33
 
34
34
  # gems that aren't default gems as of Ruby 3.5
35
- # logger 1.6.3 or later cause bug on windows,
36
- # hold on 1.6.2 for a while. see https://github.com/ruby/logger/issues/107
37
- gem.add_runtime_dependency("logger", ["1.6.2"])
35
+ gem.add_runtime_dependency("logger", ["~> 1.6"])
38
36
 
39
37
  # build gem for a certain platform. see also Rakefile
40
38
  fake_platform = ENV['GEM_BUILD_FAKE_PLATFORM'].to_s
@@ -44,6 +42,9 @@ Gem::Specification.new do |gem|
44
42
  gem.add_runtime_dependency("win32-ipc", ["~> 0.7.0"])
45
43
  gem.add_runtime_dependency("win32-event", ["~> 0.6.3"])
46
44
  gem.add_runtime_dependency("certstore_c", ["~> 0.1.7"])
45
+
46
+ # gems that aren't default gems as of Ruby 3.5
47
+ gem.add_runtime_dependency("fiddle", ["~> 1.1"])
47
48
  end
48
49
 
49
50
  gem.add_development_dependency("rake", ["~> 13.0"])
@@ -101,6 +101,12 @@ module Fluent
101
101
 
102
102
  class CsvFormatter < Fluent::Plugin::CsvFormatter
103
103
  # TODO: warn when deprecated
104
+
105
+ # Do not cache because it is hard to consider the thread key correctly.
106
+ # (We can try, but it would be low priority.)
107
+ def csv_cacheable?
108
+ false
109
+ end
104
110
  end
105
111
 
106
112
  class SingleValueFormatter < Fluent::Plugin::SingleValueFormatter
@@ -92,10 +92,23 @@ module Fluent
92
92
  else
93
93
  basepath = '/'
94
94
  fname = path
95
- require 'open-uri'
96
- URI.open(uri) {|f|
95
+ parser_proc = ->(f) {
97
96
  Parser.new(basepath, f.each_line, fname).parse!(allow_include, nil, attrs, elems)
98
97
  }
98
+
99
+ case u.scheme
100
+ when 'http', 'https', 'ftp'
101
+ # URI#open can be able to handle URIs for http, https and ftp.
102
+ require 'open-uri'
103
+ u.open(&parser_proc)
104
+ else
105
+ # TODO: This case should be handled in the previous if condition. Glob is not applied to some Windows path formats.
106
+ # 'c:/path/to/file' will be passed as URI, 'uri' and 'u.path' will be:
107
+ # - uri is 'c:/path/to/file'
108
+ # - u.path is '/path/to/file' and u.scheme is 'c'
109
+ # Therefore, the condition of the if statement above is not met and it is handled here.
110
+ File.open(uri, &parser_proc)
111
+ end
99
112
  end
100
113
 
101
114
  rescue SystemCallError => e
@@ -104,4 +117,3 @@ module Fluent
104
117
  end
105
118
  end
106
119
  end
107
-
@@ -172,7 +172,7 @@ module Fluent
172
172
  require 'open-uri'
173
173
  basepath = '/'
174
174
  fname = path
175
- data = URI.open(uri) { |f| f.read }
175
+ data = u.open { |f| f.read }
176
176
  data.force_encoding('UTF-8')
177
177
  ss = StringScanner.new(data)
178
178
  V1Parser.new(ss, basepath, fname, @eval_context).parse_element(true, nil, attrs, elems)
@@ -35,6 +35,22 @@ module Fluent
35
35
  config_param :fields, :array, value_type: :string
36
36
  config_param :add_newline, :bool, default: true
37
37
 
38
+ def csv_cacheable?
39
+ !!owner
40
+ end
41
+
42
+ def csv_thread_key
43
+ csv_cacheable? ? "#{owner.plugin_id}_csv_formatter_#{@usage}_csv" : nil
44
+ end
45
+
46
+ def csv_for_thread
47
+ if csv_cacheable?
48
+ Thread.current[csv_thread_key] ||= CSV.new("".force_encoding(Encoding::ASCII_8BIT), **@generate_opts)
49
+ else
50
+ CSV.new("".force_encoding(Encoding::ASCII_8BIT), **@generate_opts)
51
+ end
52
+ end
53
+
38
54
  def configure(conf)
39
55
  super
40
56
 
@@ -51,12 +67,10 @@ module Fluent
51
67
 
52
68
  @generate_opts = {col_sep: @delimiter, force_quotes: @force_quotes, headers: @fields,
53
69
  row_sep: @add_newline ? :auto : "".force_encoding(Encoding::ASCII_8BIT)}
54
- # Cache CSV object per thread to avoid internal state sharing
55
- @cache = {}
56
70
  end
57
71
 
58
72
  def format(tag, time, record)
59
- csv = (@cache[Thread.current] ||= CSV.new("".force_encoding(Encoding::ASCII_8BIT), **@generate_opts))
73
+ csv = csv_for_thread
60
74
  line = (csv << record).string.dup
61
75
  # Need manual cleanup because CSV writer doesn't provide such method.
62
76
  csv.rewind
@@ -65,7 +79,7 @@ module Fluent
65
79
  end
66
80
 
67
81
  def format_with_nested_fields(tag, time, record)
68
- csv = (@cache[Thread.current] ||= CSV.new("".force_encoding(Encoding::ASCII_8BIT), **@generate_opts))
82
+ csv = csv_for_thread
69
83
  values = @accessors.map { |a| a.call(record) }
70
84
  line = (csv << values).string.dup
71
85
  # Need manual cleanup because CSV writer doesn't provide such method.
@@ -580,7 +580,7 @@ module Fluent::Plugin
580
580
  end
581
581
  path_info = uri.path
582
582
 
583
- if (@add_query_params)
583
+ if (@add_query_params)
584
584
 
585
585
  query_params = WEBrick::HTTPUtils.parse_query(uri.query)
586
586
 
@@ -534,7 +534,7 @@ module Fluent::Plugin
534
534
  if @follow_inodes && new_inode.nil?
535
535
  # nil inode means the file disappeared, so we only need to stop it.
536
536
  @tails.delete(tail_watcher.path)
537
- # https://github.com/fluent/fluentd/pull/4237#issuecomment-1633358632
537
+ # https://github.com/fluent/fluentd/pull/4237#issuecomment-1633358632
538
538
  # Because of this problem, log duplication can occur during `rotate_wait`.
539
539
  # Need to set `rotate_wait 0` for a workaround.
540
540
  # Duplication will occur if `refresh_watcher` is called during the `rotate_wait`.
@@ -742,7 +742,7 @@ module Fluent
742
742
  $log.enable_debug if system_config.log_level <= Fluent::Log::LEVEL_DEBUG
743
743
 
744
744
  $log.info "init #{process_type} logger",
745
- path: actual_log_path,
745
+ path: actual_log_path,
746
746
  rotate_age: @log_rotate_age,
747
747
  rotate_size: @log_rotate_size
748
748
  end
@@ -995,7 +995,7 @@ module Fluent
995
995
  def build_system_config(conf)
996
996
  system_config = SystemConfig.create(conf, @cl_opt[:strict_config_value])
997
997
  # Prefer the options explicitly specified in the command line
998
- #
998
+ #
999
999
  # TODO: There is a bug that `system_config.log.rotate_age/rotate_size` are
1000
1000
  # not merged with the command line options since they are not in
1001
1001
  # `SYSTEM_CONFIG_PARAMETERS`.
@@ -16,6 +16,6 @@
16
16
 
17
17
  module Fluent
18
18
 
19
- VERSION = '1.16.7'
19
+ VERSION = '1.16.8'
20
20
 
21
21
  end
data/lib/fluent/winsvc.rb CHANGED
@@ -32,7 +32,7 @@ begin
32
32
  op.parse(ARGV)
33
33
  if opts[:service_name] == nil
34
34
  raise "Error: No Windows Service name set. Use '--service-name'"
35
- end
35
+ end
36
36
 
37
37
  def read_fluentdopt(service_name)
38
38
  Win32::Registry::HKEY_LOCAL_MACHINE.open("SYSTEM\\CurrentControlSet\\Services\\#{service_name}") do |reg|
@@ -48,27 +48,32 @@ begin
48
48
  end
49
49
 
50
50
  class FluentdService < Daemon
51
+ ERROR_WAIT_NO_CHILDREN = 128
52
+
51
53
  @pid = 0
52
54
  @service_name = ''
53
55
 
54
56
  def initialize(service_name)
55
57
  @service_name = service_name
56
58
  end
57
-
59
+
58
60
  def service_main
59
61
  @pid = service_main_start(@service_name)
60
- while running?
61
- sleep 10
62
+ begin
63
+ loop do
64
+ sleep 5
65
+ break unless running?
66
+ raise Errno::ECHILD unless Process.waitpid2(@pid, Process::WNOHANG)
67
+ end
68
+ rescue Errno::ECHILD
69
+ @pid = 0
70
+ SetEvent(@@hStopEvent)
71
+ SetTheServiceStatus.call(SERVICE_STOPPED, ERROR_WAIT_NO_CHILDREN, 0, 0)
62
72
  end
63
73
  end
64
74
 
65
75
  def service_stop
66
- if @pid <= 0
67
- set_event(@service_name)
68
- return
69
- end
70
-
71
- wait_supervisor_finished
76
+ wait_supervisor_finished if @pid > 0
72
77
  end
73
78
 
74
79
  def service_paramchange
@@ -19,9 +19,9 @@ module ConfigurationForPlugins
19
19
 
20
20
  class BooleanParamsWithoutValue < ::Test::Unit::TestCase
21
21
  CONFIG = <<CONFIG
22
- flag1
22
+ flag1
23
23
  flag2 # yaaaaaaaaaay
24
- flag3
24
+ flag3
25
25
  flag4 # yaaaaaaaaaay
26
26
  <child>
27
27
  flag1
@@ -37,10 +37,10 @@ module ConfigurationForPlugins
37
37
  </child>
38
38
  # with following whitespace
39
39
  <child>
40
- flag1
41
- flag2
42
- flag3
43
- flag4
40
+ flag1
41
+ flag2
42
+ flag3
43
+ flag4
44
44
  </child>
45
45
  CONFIG
46
46
 
@@ -946,9 +946,9 @@ class BufferTest < Test::Unit::TestCase
946
946
  # 1. `write_once`: 42 [events] * 1 [stream]
947
947
  # 2. `write_step_by_step`: 4 [events]* 10 [streams] + 2 [events] * 1 [stream]
948
948
  # 3. `write_step_by_step` (by `ShouldRetry`): 1 [event] * 42 [streams]
949
- #
949
+ #
950
950
  # Example of staged chunk lock behavior:
951
- #
951
+ #
952
952
  # 1. mon_enter in write_step_by_step
953
953
  # 2. ShouldRetry occurs
954
954
  # 3. mon_exit in write_step_by_step
@@ -328,7 +328,7 @@ class GrepFilterTest < Test::Unit::TestCase
328
328
  end
329
329
 
330
330
  test "don't raise an exception" do
331
- assert_nothing_raised {
331
+ assert_nothing_raised {
332
332
  filter(%[regexp1 message WARN], ["\xff".force_encoding('UTF-8')])
333
333
  }
334
334
  end
@@ -982,7 +982,7 @@ class HttpInputTest < Test::Unit::TestCase
982
982
  assert_equal ["403", "403"], res_codes
983
983
  end
984
984
 
985
- def test_add_query_params
985
+ def test_add_query_params
986
986
  d = create_driver(config + "add_query_params true")
987
987
  assert_equal true, d.instance.add_query_params
988
988
 
@@ -1611,6 +1611,7 @@ class TailInputTest < Test::Unit::TestCase
1611
1611
 
1612
1612
  cleanup_file("#{@tmp_dir}/tail.txt")
1613
1613
  waiting(20) { sleep 0.1 until Dir.glob("#{@tmp_dir}/*.txt").size == 0 } # Ensure file is deleted on Windows
1614
+ waiting(5) { sleep 0.1 until d.logs.last.include?("detected rotation") }
1614
1615
  waiting(5) { sleep 0.1 until d.instance.instance_variable_get(:@tails).keys.size <= 0 }
1615
1616
 
1616
1617
  assert_equal(
@@ -1111,7 +1111,7 @@ class OutputTest < Test::Unit::TestCase
1111
1111
  config: config_element(
1112
1112
  "ROOT", "", {},
1113
1113
  [
1114
- config_element("buffer", "", {}),
1114
+ config_element("buffer", "", {}),
1115
1115
  config_element("secondary", "", {"@type" => "test", "name" => "test"}),
1116
1116
  ]
1117
1117
  ),
@@ -1343,6 +1343,7 @@ class BufferedOutputTest < Test::Unit::TestCase
1343
1343
  hash = {
1344
1344
  'flush_interval' => 10,
1345
1345
  'flush_thread_count' => 1,
1346
+ 'flush_thread_interval' => 0.1,
1346
1347
  'flush_thread_burst_interval' => 0.1,
1347
1348
  'chunk_limit_size' => 1024,
1348
1349
  }
@@ -1445,7 +1446,7 @@ class BufferedOutputTest < Test::Unit::TestCase
1445
1446
 
1446
1447
  assert{ @i.buffer.stage.size == 3 }
1447
1448
 
1448
- # to trigger try_flush with flush_thread_burst_interval
1449
+ # to trigger try_flush with flush_thread_interval
1449
1450
  Timecop.freeze( Time.parse('2016-04-13 14:04:11 +0900') )
1450
1451
  @i.enqueue_thread_wait
1451
1452
  Timecop.freeze( Time.parse('2016-04-13 14:04:12 +0900') )
@@ -1454,7 +1455,6 @@ class BufferedOutputTest < Test::Unit::TestCase
1454
1455
  @i.enqueue_thread_wait
1455
1456
  Timecop.freeze( Time.parse('2016-04-13 14:04:14 +0900') )
1456
1457
  @i.enqueue_thread_wait
1457
- @i.flush_thread_wakeup
1458
1458
 
1459
1459
  assert{ @i.buffer.stage.size == 0 }
1460
1460
 
@@ -941,7 +941,7 @@ class BufferedOutputRetryTest < Test::Unit::TestCase
941
941
  @i.enqueue_thread_wait
942
942
 
943
943
  @i.flush_thread_wakeup
944
- waiting(4){ Thread.pass until @i.write_count > 0 }
944
+ waiting(4){ Thread.pass until @i.write_count > 0 && @i.num_errors > 0 }
945
945
  waiting(4) do
946
946
  state = @i.instance_variable_get(:@output_flush_threads).first
947
947
  state.thread.status == 'sleep'
@@ -953,7 +953,7 @@ class BufferedOutputRetryTest < Test::Unit::TestCase
953
953
  now = @i.next_flush_time
954
954
  Timecop.freeze( now )
955
955
  @i.flush_thread_wakeup
956
- waiting(4){ Thread.pass until @i.write_count > 1 }
956
+ waiting(4){ Thread.pass until @i.write_count > 1 && @i.num_errors > 1 }
957
957
  waiting(4) do
958
958
  state = @i.instance_variable_get(:@output_flush_threads).first
959
959
  state.thread.status == 'sleep'
@@ -164,7 +164,7 @@ class CSVParserTest < ::Test::Unit::TestCase
164
164
  text = 'a"b,"a"""c"'
165
165
  assert_raise(CSV::MalformedCSVError) {
166
166
  normal.instance.parse(text) { |t, r| }
167
- }
167
+ }
168
168
  assert_nothing_raised {
169
169
  # generate broken record
170
170
  fast.instance.parse(text) { |t, r| }
@@ -668,12 +668,12 @@ class ServerPluginHelperTest < Test::Unit::TestCase
668
668
 
669
669
  received = ""
670
670
  responses = []
671
- port = unused_port(protocol: :udp)
671
+ port = unused_port(protocol: :udp, bind: "::1")
672
672
  @d.server_create_udp(:s, port, bind: "::1", max_bytes: 128) do |data, sock|
673
673
  received << data
674
674
  sock.write "ack\n"
675
675
  end
676
- bind_port = unused_port(protocol: :udp)
676
+ bind_port = unused_port(protocol: :udp, bind: "::1")
677
677
  3.times do
678
678
  begin
679
679
  sock = UDPSocket.new(Socket::AF_INET6)
@@ -214,6 +214,9 @@ class SupervisorTest < ::Test::Unit::TestCase
214
214
  def test_cont_in_main_process_signal_handlers
215
215
  omit "Windows cannot handle signals" if Fluent.windows?
216
216
 
217
+ # https://github.com/fluent/fluentd/issues/4063
218
+ GC.start
219
+
217
220
  sv = Fluent::Supervisor.new({})
218
221
  sv.send(:install_main_process_signal_handlers)
219
222
 
@@ -229,6 +232,9 @@ class SupervisorTest < ::Test::Unit::TestCase
229
232
  def test_term_cont_in_main_process_signal_handlers
230
233
  omit "Windows cannot handle signals" if Fluent.windows?
231
234
 
235
+ # https://github.com/fluent/fluentd/issues/4063
236
+ GC.start
237
+
232
238
  create_debug_dummy_logger
233
239
 
234
240
  sv = Fluent::Supervisor.new({})
@@ -296,6 +302,9 @@ class SupervisorTest < ::Test::Unit::TestCase
296
302
  def test_cont_in_supervisor_signal_handler
297
303
  omit "Windows cannot handle signals" if Fluent.windows?
298
304
 
305
+ # https://github.com/fluent/fluentd/issues/4063
306
+ GC.start
307
+
299
308
  server = DummyServer.new
300
309
  server.install_supervisor_signal_handlers
301
310
 
@@ -311,6 +320,9 @@ class SupervisorTest < ::Test::Unit::TestCase
311
320
  def test_term_cont_in_supervisor_signal_handler
312
321
  omit "Windows cannot handle signals" if Fluent.windows?
313
322
 
323
+ # https://github.com/fluent/fluentd/issues/4063
324
+ GC.start
325
+
314
326
  server = DummyServer.new
315
327
  server.install_supervisor_signal_handlers
316
328
 
@@ -390,34 +402,31 @@ class SupervisorTest < ::Test::Unit::TestCase
390
402
  def test_supervisor_event_dump_windows
391
403
  omit "Only for Windows, alternative to UNIX signals" unless Fluent.windows?
392
404
 
405
+ # https://github.com/fluent/fluentd/issues/4063
406
+ GC.start
407
+
408
+ ENV['SIGDUMP_PATH'] = TMP_DIR + "/sigdump.log"
409
+
393
410
  server = DummyServer.new
394
411
  def server.config
395
412
  {:signame => "TestFluentdEvent"}
396
413
  end
397
414
  server.install_windows_event_handler
398
415
 
399
- assert_rr do
400
- # Have to use mock because `Sigdump.dump` seems to be somehow incompatible with RR.
401
- # The `mock(server).restart(true) { nil }` line in `test_rpc_server_windows` cause the next error.
402
- # Failure: test_supervisor_event_dump_windows(SupervisorTest):
403
- # class()
404
- # Called 0 times.
405
- # Expected 1 times.
406
- # .../Ruby26-x64/lib/ruby/gems/2.6.0/gems/sigdump-0.2.4/lib/sigdump.rb:74:in `block in dump_object_count'
407
- # 73: ObjectSpace.each_object {|o|
408
- # 74: c = o.class <-- HERE!
409
- mock(Sigdump).dump(anything)
410
-
411
- begin
412
- sleep 0.1 # Wait for starting windows event thread
413
- event = Win32::Event.open("TestFluentdEvent_CONT")
414
- event.set
415
- event.close
416
- sleep 1.0 # Wait for dumping
417
- ensure
418
- server.stop_windows_event_thread
419
- end
416
+ begin
417
+ sleep 0.1 # Wait for starting windows event thread
418
+ event = Win32::Event.open("TestFluentdEvent_CONT")
419
+ event.set
420
+ event.close
421
+ sleep 1.0 # Wait for dumping
422
+ ensure
423
+ server.stop_windows_event_thread
420
424
  end
425
+
426
+ result_filepaths = Dir.glob("#{TMP_DIR}/*")
427
+ assert {result_filepaths.length > 0}
428
+ ensure
429
+ ENV.delete('SIGDUMP_PATH')
421
430
  end
422
431
 
423
432
  data(:ipv4 => ["0.0.0.0", "127.0.0.1", false],
data/test/test_tls.rb CHANGED
@@ -9,7 +9,7 @@ class UniqueIdTest < Test::Unit::TestCase
9
9
  TEST_TLS1_2_CASES = {
10
10
  'New TLS v1.2' => :'TLS1_2',
11
11
  'Old TLS v1.2' => :'TLSv1_2'
12
- }
12
+ }
13
13
  TEST_TLS_CASES = TEST_TLS1_1_CASES.merge(TEST_TLS1_2_CASES)
14
14
 
15
15
  sub_test_case 'constants' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluentd
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.7
4
+ version: 1.16.8
5
5
  platform: x86-mingw32
6
6
  authors:
7
7
  - Sadayuki Furuhashi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-29 00:00:00.000000000 Z
11
+ date: 2025-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -218,16 +218,16 @@ dependencies:
218
218
  name: logger
219
219
  requirement: !ruby/object:Gem::Requirement
220
220
  requirements:
221
- - - '='
221
+ - - "~>"
222
222
  - !ruby/object:Gem::Version
223
- version: 1.6.2
223
+ version: '1.6'
224
224
  type: :runtime
225
225
  prerelease: false
226
226
  version_requirements: !ruby/object:Gem::Requirement
227
227
  requirements:
228
- - - '='
228
+ - - "~>"
229
229
  - !ruby/object:Gem::Version
230
- version: 1.6.2
230
+ version: '1.6'
231
231
  - !ruby/object:Gem::Dependency
232
232
  name: win32-service
233
233
  requirement: !ruby/object:Gem::Requirement
@@ -284,6 +284,20 @@ dependencies:
284
284
  - - "~>"
285
285
  - !ruby/object:Gem::Version
286
286
  version: 0.1.7
287
+ - !ruby/object:Gem::Dependency
288
+ name: fiddle
289
+ requirement: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - "~>"
292
+ - !ruby/object:Gem::Version
293
+ version: '1.1'
294
+ type: :runtime
295
+ prerelease: false
296
+ version_requirements: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - "~>"
299
+ - !ruby/object:Gem::Version
300
+ version: '1.1'
287
301
  - !ruby/object:Gem::Dependency
288
302
  name: rake
289
303
  requirement: !ruby/object:Gem::Requirement
@@ -1025,7 +1039,7 @@ homepage: https://www.fluentd.org/
1025
1039
  licenses:
1026
1040
  - Apache-2.0
1027
1041
  metadata: {}
1028
- post_install_message:
1042
+ post_install_message:
1029
1043
  rdoc_options: []
1030
1044
  require_paths:
1031
1045
  - lib
@@ -1041,7 +1055,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1041
1055
  version: '0'
1042
1056
  requirements: []
1043
1057
  rubygems_version: 3.4.19
1044
- signing_key:
1058
+ signing_key:
1045
1059
  specification_version: 4
1046
1060
  summary: Fluentd event collector
1047
1061
  test_files: