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 +4 -4
- data/.github/workflows/test.yml +4 -0
- data/CHANGELOG.md +28 -0
- data/fluentd.gemspec +4 -3
- data/lib/fluent/compat/formatter.rb +6 -0
- data/lib/fluent/config/parser.rb +15 -3
- data/lib/fluent/config/v1_parser.rb +1 -1
- data/lib/fluent/plugin/formatter_csv.rb +18 -4
- data/lib/fluent/plugin/in_http.rb +1 -1
- data/lib/fluent/plugin/in_tail.rb +1 -1
- data/lib/fluent/supervisor.rb +2 -2
- data/lib/fluent/version.rb +1 -1
- data/lib/fluent/winsvc.rb +15 -10
- data/test/config/test_plugin_configuration.rb +6 -6
- data/test/plugin/test_buffer.rb +2 -2
- data/test/plugin/test_filter_grep.rb +1 -1
- data/test/plugin/test_in_http.rb +1 -1
- data/test/plugin/test_in_tail.rb +1 -0
- data/test/plugin/test_output.rb +1 -1
- data/test/plugin/test_output_as_buffered.rb +2 -2
- data/test/plugin/test_output_as_buffered_retries.rb +2 -2
- data/test/plugin/test_parser_csv.rb +1 -1
- data/test/plugin_helper/test_server.rb +2 -2
- data/test/test_supervisor.rb +30 -21
- data/test/test_tls.rb +1 -1
- metadata +23 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c5ae232fdfccc14424b4d022e8d3e4ca9bd05b3b7c8a8de10508263c6ea651c
|
4
|
+
data.tar.gz: 60d0abe234b4493236956d88f63d5807c7124682dec6333d3966148f66efa1dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e606b2d087be49f0ddaa3dff9d4dd0b62ad8e70e0a3d5f044df875b53606dc46ab0755d33edca16bd10b9c386be4e87ea10ef47a34a4cecda4f635e32f2236da
|
7
|
+
data.tar.gz: a19cde7e7a898b1c93f404dfdc94b9828140f4793c118a3c596e49c7ba77e317c33ac958cb9cc1d4fe33b6ea7cadd2962ed6d4373e6f865e417fa44d742a48f9
|
data/.github/workflows/test.yml
CHANGED
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
|
-
|
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
|
data/lib/fluent/config/parser.rb
CHANGED
@@ -92,10 +92,23 @@ module Fluent
|
|
92
92
|
else
|
93
93
|
basepath = '/'
|
94
94
|
fname = path
|
95
|
-
|
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 =
|
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 =
|
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 =
|
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.
|
@@ -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`.
|
data/lib/fluent/supervisor.rb
CHANGED
@@ -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`.
|
data/lib/fluent/version.rb
CHANGED
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
|
-
|
61
|
-
|
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
|
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
|
|
data/test/plugin/test_buffer.rb
CHANGED
@@ -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
|
data/test/plugin/test_in_http.rb
CHANGED
@@ -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
|
|
data/test/plugin/test_in_tail.rb
CHANGED
@@ -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(
|
data/test/plugin/test_output.rb
CHANGED
@@ -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
|
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)
|
data/test/test_supervisor.rb
CHANGED
@@ -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
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
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
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.
|
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
|
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
|
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
|
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:
|