fluentd 1.16.8-x86-mingw32 → 1.17.0-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.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.github/DISCUSSION_TEMPLATE/q-a-japanese.yml +50 -0
  3. data/.github/DISCUSSION_TEMPLATE/q-a.yml +47 -0
  4. data/.github/workflows/test-ruby-head.yml +31 -0
  5. data/.github/workflows/test.yml +2 -13
  6. data/CHANGELOG.md +33 -69
  7. data/README.md +3 -1
  8. data/Rakefile +1 -1
  9. data/fluentd.gemspec +9 -10
  10. data/lib/fluent/command/binlog_reader.rb +1 -1
  11. data/lib/fluent/command/fluentd.rb +1 -1
  12. data/lib/fluent/compat/formatter.rb +0 -6
  13. data/lib/fluent/config/configure_proxy.rb +2 -2
  14. data/lib/fluent/config/parser.rb +3 -15
  15. data/lib/fluent/config/types.rb +1 -1
  16. data/lib/fluent/config/v1_parser.rb +1 -1
  17. data/lib/fluent/config/yaml_parser/parser.rb +0 -4
  18. data/lib/fluent/configurable.rb +2 -2
  19. data/lib/fluent/counter/mutex_hash.rb +1 -1
  20. data/lib/fluent/fluent_log_event_router.rb +0 -2
  21. data/lib/fluent/plugin/buf_file.rb +1 -1
  22. data/lib/fluent/plugin/buffer/file_chunk.rb +1 -1
  23. data/lib/fluent/plugin/buffer/file_single_chunk.rb +2 -3
  24. data/lib/fluent/plugin/filter_parser.rb +26 -8
  25. data/lib/fluent/plugin/formatter_csv.rb +4 -18
  26. data/lib/fluent/plugin/in_http.rb +17 -52
  27. data/lib/fluent/plugin/in_tail.rb +35 -3
  28. data/lib/fluent/plugin/out_file.rb +0 -8
  29. data/lib/fluent/plugin/out_http.rb +125 -13
  30. data/lib/fluent/plugin/owned_by_mixin.rb +0 -1
  31. data/lib/fluent/plugin/parser_json.rb +34 -9
  32. data/lib/fluent/plugin/parser_msgpack.rb +24 -3
  33. data/lib/fluent/plugin_helper/metrics.rb +2 -2
  34. data/lib/fluent/registry.rb +6 -6
  35. data/lib/fluent/supervisor.rb +3 -3
  36. data/lib/fluent/test/output_test.rb +1 -1
  37. data/lib/fluent/unique_id.rb +1 -1
  38. data/lib/fluent/version.rb +1 -1
  39. data/lib/fluent/winsvc.rb +8 -38
  40. data/test/command/test_cat.rb +2 -2
  41. data/test/command/test_fluentd.rb +10 -57
  42. data/test/config/test_plugin_configuration.rb +6 -6
  43. data/test/helper.rb +7 -27
  44. data/test/log/test_console_adapter.rb +10 -3
  45. data/test/plugin/data/log_numeric/01.log +0 -0
  46. data/test/plugin/data/log_numeric/02.log +0 -0
  47. data/test/plugin/data/log_numeric/12.log +0 -0
  48. data/test/plugin/data/log_numeric/14.log +0 -0
  49. data/test/plugin/in_tail/test_io_handler.rb +14 -13
  50. data/test/plugin/in_tail/test_position_file.rb +7 -6
  51. data/test/plugin/out_forward/test_ack_handler.rb +3 -3
  52. data/test/plugin/out_forward/test_socket_cache.rb +3 -3
  53. data/test/plugin/test_buffer.rb +2 -2
  54. data/test/plugin/test_filter_grep.rb +1 -1
  55. data/test/plugin/test_in_forward.rb +1 -2
  56. data/test/plugin/test_in_http.rb +23 -1
  57. data/test/plugin/test_in_monitor_agent.rb +6 -6
  58. data/test/plugin/test_in_syslog.rb +18 -25
  59. data/test/plugin/test_in_tail.rb +153 -5
  60. data/test/plugin/test_in_tcp.rb +1 -1
  61. data/test/plugin/test_in_udp.rb +10 -16
  62. data/test/plugin/test_out_exec_filter.rb +7 -12
  63. data/test/plugin/test_out_file.rb +2 -22
  64. data/test/plugin/test_out_forward.rb +3 -2
  65. data/test/plugin/test_out_http.rb +128 -0
  66. data/test/plugin/test_out_stream.rb +1 -1
  67. data/test/plugin/test_output.rb +1 -1
  68. data/test/plugin/test_output_as_buffered.rb +2 -2
  69. data/test/plugin/test_output_as_buffered_retries.rb +2 -2
  70. data/test/plugin/test_owned_by.rb +0 -1
  71. data/test/plugin/test_parser_csv.rb +1 -1
  72. data/test/plugin/test_parser_json.rb +106 -31
  73. data/test/plugin/test_parser_msgpack.rb +127 -0
  74. data/test/plugin/test_storage.rb +0 -1
  75. data/test/plugin_helper/test_child_process.rb +4 -4
  76. data/test/plugin_helper/test_http_server_helper.rb +1 -1
  77. data/test/plugin_helper/test_server.rb +41 -64
  78. data/test/plugin_helper/test_socket.rb +1 -1
  79. data/test/test_config.rb +0 -6
  80. data/test/test_event_router.rb +2 -2
  81. data/test/test_supervisor.rb +21 -30
  82. data/test/test_tls.rb +1 -1
  83. metadata +85 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0c5ae232fdfccc14424b4d022e8d3e4ca9bd05b3b7c8a8de10508263c6ea651c
4
- data.tar.gz: 60d0abe234b4493236956d88f63d5807c7124682dec6333d3966148f66efa1dc
3
+ metadata.gz: cc7924012e09f9568cbda96bbb4d1449074a4db721795d74900261b984b04047
4
+ data.tar.gz: 8c3e8f5ef86237b5c18943ffbf393188338f9dbd3dbcac3d9fb321973ba3b43e
5
5
  SHA512:
6
- metadata.gz: e606b2d087be49f0ddaa3dff9d4dd0b62ad8e70e0a3d5f044df875b53606dc46ab0755d33edca16bd10b9c386be4e87ea10ef47a34a4cecda4f635e32f2236da
7
- data.tar.gz: a19cde7e7a898b1c93f404dfdc94b9828140f4793c118a3c596e49c7ba77e317c33ac958cb9cc1d4fe33b6ea7cadd2962ed6d4373e6f865e417fa44d742a48f9
6
+ metadata.gz: 7998a2f12349a767e7952dcf3a17a108cfb0f2e2063524862d97b83159012e8b753e46d2e4893e235e6a4bb1d43533f3068dc955601533fddf839f75edcca096
7
+ data.tar.gz: '09dac9716859404ddb3b563408cab32921c894300f2701b3e7aff89a608be154d0090e321adbbed9e0615459b06a4be3038f3e5b16206e624a0e1e770970c803'
@@ -0,0 +1,50 @@
1
+ title: "[QA (Japanese)]"
2
+ labels: ["Q&A (Japanese)"]
3
+ body:
4
+ - type: markdown
5
+ attributes:
6
+ value: |
7
+ 日本語で気軽に質問するためのカテゴリです。もし他の人が困っているのを見つけたらぜひ回答してあげてください。
8
+ - type: textarea
9
+ id: question
10
+ attributes:
11
+ label: やりたいこと
12
+ description: |
13
+ 何について困っているのかを書いてください。試したことや実際の結果を示してください。
14
+ 期待する挙動と実際の結果の違いがあればそれも書くのをおすすめします。
15
+ render: markdown
16
+ validations:
17
+ required: true
18
+ - type: textarea
19
+ id: configuration
20
+ attributes:
21
+ label: 設定した内容
22
+ description: |
23
+ どのような設定をして期待する挙動を実現しようとしたのかを書いてください。(例: fluentd.confの内容を貼り付ける)
24
+ render: apache
25
+ - type: textarea
26
+ id: logs
27
+ attributes:
28
+ label: ログの内容
29
+ description: |
30
+ Fluentdのログを提示してください。エラーログがあると回答の助けになります。(例: fluentd.logの内容を貼り付ける)
31
+ render: shell
32
+ - type: textarea
33
+ id: environment
34
+ attributes:
35
+ label: 環境について
36
+ description: |
37
+ - Fluentd or td-agent version: `fluentd --version` or `td-agent --version`
38
+ - Operating system: `cat /etc/os-release`
39
+ - Kernel version: `uname -r`
40
+
41
+ どんな環境で困っているかの情報がないと、再現できないため誰も回答できないことがあります。
42
+ 必要な情報を記入することをおすすめします。
43
+ value: |
44
+ - Fluentd version:
45
+ - TD Agent version:
46
+ - Fluent Package version:
47
+ - Docker image (tag):
48
+ - Operating system:
49
+ - Kernel version:
50
+ render: markdown
@@ -0,0 +1,47 @@
1
+ title: "[Q&A]"
2
+ labels: ["Q&A"]
3
+ body:
4
+ - type: markdown
5
+ attributes:
6
+ value: |
7
+ It is recommended to support each other.
8
+ - type: textarea
9
+ id: question
10
+ attributes:
11
+ label: What is a problem?
12
+ description: |
13
+ A clear and concise description of what you want to happen.
14
+ What exactly did you do (or not do) that was effective (or ineffective)?
15
+ render: markdown
16
+ validations:
17
+ required: true
18
+ - type: textarea
19
+ id: configuration
20
+ attributes:
21
+ label: Describe the configuration of Fluentd
22
+ description: |
23
+ If there is the actual configuration of Fluentd, it will help.
24
+ - type: textarea
25
+ id: logs
26
+ attributes:
27
+ label: Describe the logs of Fluentd
28
+ description: |
29
+ If there are error logs of Fluentd, it will help.
30
+ - type: textarea
31
+ id: environment
32
+ attributes:
33
+ label: Environment
34
+ description: |
35
+ - Fluentd or td-agent version: `fluentd --version` or `td-agent --version`
36
+ - Operating system: `cat /etc/os-release`
37
+ - Kernel version: `uname -r`
38
+
39
+ Please describe your environment information. If will help to support.
40
+ value: |
41
+ - Fluentd version:
42
+ - TD Agent version:
43
+ - Fluent Package version:
44
+ - Docker image (tag):
45
+ - Operating system:
46
+ - Kernel version:
47
+ render: markdown
@@ -0,0 +1,31 @@
1
+ name: Test with Ruby head
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '11 14 * * 0'
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ${{ matrix.os }}
11
+ continue-on-error: true
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ os: ['ubuntu-latest', 'macos-latest', 'windows-latest']
16
+ ruby-version: ['head']
17
+
18
+ name: Ruby ${{ matrix.ruby-version }} on ${{ matrix.os }}
19
+ steps:
20
+ - uses: actions/checkout@v3
21
+ - name: Set up Ruby
22
+ uses: ruby/setup-ruby@v1
23
+ with:
24
+ ruby-version: ${{ matrix.ruby-version }}
25
+ - name: Install addons
26
+ if: ${{ matrix.os == 'ubuntu-latest' }}
27
+ run: sudo apt-get install libgmp3-dev libcap-ng-dev
28
+ - name: Install dependencies
29
+ run: bundle install
30
+ - name: Run tests
31
+ run: bundle exec rake test TESTOPTS="-v --no-show-detail-immediately"
@@ -2,19 +2,9 @@ name: Test
2
2
 
3
3
  on:
4
4
  push:
5
- branches: [v1.16]
6
- paths-ignore:
7
- - '*.md'
8
- - 'lib/fluent/version.rb'
5
+ branches: [master]
9
6
  pull_request:
10
- branches: [v1.16]
11
- paths-ignore:
12
- - '*.md'
13
- - 'lib/fluent/version.rb'
14
-
15
- concurrency:
16
- group: ${{ github.head_ref || github.sha }}-${{ github.workflow }}
17
- cancel-in-progress: true
7
+ branches: [master]
18
8
 
19
9
  jobs:
20
10
  test:
@@ -33,7 +23,6 @@ jobs:
33
23
  uses: ruby/setup-ruby@v1
34
24
  with:
35
25
  ruby-version: ${{ matrix.ruby-version }}
36
- rubygems: latest
37
26
  - name: Install addons
38
27
  if: ${{ matrix.os == 'ubuntu-latest' }}
39
28
  run: sudo apt-get install libgmp3-dev libcap-ng-dev
data/CHANGELOG.md CHANGED
@@ -1,82 +1,46 @@
1
- # v1.16
2
-
3
- ## Release v1.16.8 - 2025/05/01
4
-
5
- ### Bug Fix
1
+ # v1.17
6
2
 
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
3
+ ## Release v1.17.0 - 2024/04/30
11
4
 
12
- ### Misc
5
+ ### Enhancement
13
6
 
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
-
31
- ## Release v1.16.7 - 2025/01/29
7
+ * in_http: Recognize CSP reports as JSON data
8
+ https://github.com/fluent/fluentd/pull/4282
9
+ * out_http: Add option to reuse connections
10
+ https://github.com/fluent/fluentd/pull/4330
11
+ * in_tail: Expand glob capability for square brackets and one character matcher
12
+ https://github.com/fluent/fluentd/pull/4401
13
+ * out_http: Support AWS Signature Version 4 authentication
14
+ https://github.com/fluent/fluentd/pull/4459
32
15
 
33
16
  ### Bug Fix
34
17
 
35
- * Windows: Fix `NoMethodError` of `--daemon` option
36
- https://github.com/fluent/fluentd/pull/4796
37
- * Windows: Fixed an issue where stopping the service immediately after startup could leave the processes
38
- https://github.com/fluent/fluentd/pull/4782
39
- * Windows: Fixed an issue where stopping service sometimes can not be completed forever
40
- https://github.com/fluent/fluentd/pull/4782
18
+ * Make sure `parser_json` and `parser_msgpack` return `Hash`.
19
+ Make `parser_json` and `parser_msgpack` accept only `Hash` or `Array` of `Hash`.
20
+ https://github.com/fluent/fluentd/pull/4474
21
+ * filter_parser: Add error event for multiple parsed results
22
+ https://github.com/fluent/fluentd/pull/4478
41
23
 
42
24
  ### Misc
43
25
 
44
- * Windows: Add workaround for unexpected exception
45
- https://github.com/fluent/fluentd/pull/4747
46
- * README: remove deprecated google analytics beacon
47
- https://github.com/fluent/fluentd/pull/4797
48
- * CI improvemnts
49
- https://github.com/fluent/fluentd/pull/4723
50
- https://github.com/fluent/fluentd/pull/4788
51
- https://github.com/fluent/fluentd/pull/4789
52
- https://github.com/fluent/fluentd/pull/4790
53
- https://github.com/fluent/fluentd/pull/4791
54
- https://github.com/fluent/fluentd/pull/4793
55
- https://github.com/fluent/fluentd/pull/4794
56
- https://github.com/fluent/fluentd/pull/4795
57
- https://github.com/fluent/fluentd/pull/4798
58
- https://github.com/fluent/fluentd/pull/4799
59
- https://github.com/fluent/fluentd/pull/4800
60
- https://github.com/fluent/fluentd/pull/4801
61
- https://github.com/fluent/fluentd/pull/4803
62
-
63
- ## Release v1.16.6 - 2024/08/16
26
+ * Raise minimum required ruby version
27
+ https://github.com/fluent/fluentd/pull/4288
28
+ * Require missing dependent gems as of Ruby 3.4-dev
29
+ https://github.com/fluent/fluentd/pull/4411
30
+ * Minor code refactoring
31
+ https://github.com/fluent/fluentd/pull/4294
32
+ https://github.com/fluent/fluentd/pull/4299
33
+ https://github.com/fluent/fluentd/pull/4302
34
+ https://github.com/fluent/fluentd/pull/4320
35
+ * CI fixes
36
+ https://github.com/fluent/fluentd/pull/4369
37
+ https://github.com/fluent/fluentd/pull/4433
38
+ https://github.com/fluent/fluentd/pull/4452
39
+ https://github.com/fluent/fluentd/pull/4477
40
+ * github: unify YAML file extension to .yml
41
+ https://github.com/fluent/fluentd/pull/4429
64
42
 
65
- ### Bug Fix
66
-
67
- * YAML config syntax: Fix issue where `$log_level` element was not supported correctly
68
- https://github.com/fluent/fluentd/pull/4486
69
- * parser_json: Fix wrong LoadError warning
70
- https://github.com/fluent/fluentd/pull/4592
71
- * `fluentd` command: Fix `--plugin` (`-p`) option not to overwrite default value
72
- https://github.com/fluent/fluentd/pull/4605
73
-
74
- ### Misc
75
-
76
- * out_file: Add warn message for symlink_path setting
77
- https://github.com/fluent/fluentd/pull/4512
78
- * Keep console gem v1.23 to avoid LoadError
79
- https://github.com/fluent/fluentd/pull/4510
43
+ # v1.16
80
44
 
81
45
  ## Release v1.16.5 - 2024/03/27
82
46
 
data/README.md CHANGED
@@ -29,7 +29,7 @@ Fluentd: Open-Source Log Collector
29
29
 
30
30
  ### Prerequisites
31
31
 
32
- - Ruby 2.4 or later
32
+ - Ruby 2.7 or later
33
33
  - git
34
34
 
35
35
  `git` should be in `PATH`. On Windows, you can use `Github for Windows` and `GitShell` for easy setup.
@@ -71,3 +71,5 @@ See [SECURITY](SECURITY.md) to contact us about vulnerability.
71
71
  ## Contributors:
72
72
 
73
73
  Patches contributed by [great developers](https://github.com/fluent/fluentd/contributors).
74
+
75
+ [<img src="https://ga-beacon.appspot.com/UA-24890265-6/fluent/fluentd" />](https://github.com/fluent/fluentd)
data/Rakefile CHANGED
@@ -13,7 +13,7 @@ task test: [:base_test]
13
13
  namespace :build do
14
14
  desc 'Build gems for all platforms'
15
15
  task :all do
16
- Bundler.with_clean_env do
16
+ Bundler.with_original_env do
17
17
  %w[ruby x86-mingw32 x64-mingw32 x64-mingw-ucrt].each do |name|
18
18
  ENV['GEM_BUILD_FAKE_PLATFORM'] = name
19
19
  Rake::Task["build"].execute
data/fluentd.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ["lib"]
17
17
  gem.license = "Apache-2.0"
18
18
 
19
- gem.required_ruby_version = '>= 2.4'
19
+ gem.required_ruby_version = '>= 2.7'
20
20
 
21
21
  gem.add_runtime_dependency("bundler")
22
22
  gem.add_runtime_dependency("msgpack", [">= 1.3.1", "< 2.0.0"])
@@ -29,10 +29,11 @@ Gem::Specification.new do |gem|
29
29
  gem.add_runtime_dependency("tzinfo-data", ["~> 1.0"])
30
30
  gem.add_runtime_dependency("strptime", [">= 0.2.4", "< 1.0.0"])
31
31
  gem.add_runtime_dependency("webrick", ["~> 1.4"])
32
- gem.add_runtime_dependency("console", ["< 1.24"])
33
32
 
34
- # gems that aren't default gems as of Ruby 3.5
35
- gem.add_runtime_dependency("logger", ["~> 1.6"])
33
+ # gems that aren't default gems as of Ruby 3.4
34
+ gem.add_runtime_dependency("base64", ["~> 0.2"])
35
+ gem.add_runtime_dependency("csv", ["~> 3.2"])
36
+ gem.add_runtime_dependency("drb", ["~> 2.2"])
36
37
 
37
38
  # build gem for a certain platform. see also Rakefile
38
39
  fake_platform = ENV['GEM_BUILD_FAKE_PLATFORM'].to_s
@@ -42,9 +43,6 @@ Gem::Specification.new do |gem|
42
43
  gem.add_runtime_dependency("win32-ipc", ["~> 0.7.0"])
43
44
  gem.add_runtime_dependency("win32-event", ["~> 0.6.3"])
44
45
  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"])
48
46
  end
49
47
 
50
48
  gem.add_development_dependency("rake", ["~> 13.0"])
@@ -52,12 +50,13 @@ Gem::Specification.new do |gem|
52
50
  gem.add_development_dependency("parallel_tests", ["~> 0.15.3"])
53
51
  gem.add_development_dependency("simplecov", ["~> 0.7"])
54
52
  gem.add_development_dependency("rr", ["~> 3.0"])
55
- # timecop v0.9.9 supports `Process.clock_gettime`. It breaks some tests.
56
- # (https://github.com/fluent/fluentd/pull/4521)
57
- gem.add_development_dependency("timecop", ["< 0.9.9"])
53
+ gem.add_development_dependency("timecop", ["~> 0.9"])
58
54
  gem.add_development_dependency("test-unit", ["~> 3.3"])
59
55
  gem.add_development_dependency("test-unit-rr", ["~> 1.0"])
60
56
  gem.add_development_dependency("oj", [">= 2.14", "< 4"])
61
57
  gem.add_development_dependency("async", "~> 1.23")
62
58
  gem.add_development_dependency("async-http", ">= 0.50.0")
59
+ gem.add_development_dependency("aws-sigv4", ["~> 1.8"])
60
+ gem.add_development_dependency("aws-sdk-core", ["~> 3.191"])
61
+ gem.add_development_dependency("rexml", ["~> 3.2"])
63
62
  end
@@ -130,7 +130,7 @@ module BinlogReaderCommand
130
130
  private
131
131
 
132
132
  def configure_option_parser
133
- @options.merge!(config_params: {})
133
+ @options[:config_params] = {}
134
134
 
135
135
  @opt_parser.banner = "Usage: fluent-binlog-reader #{self.class.to_s.split('::').last.downcase} [options] file"
136
136
 
@@ -46,7 +46,7 @@ op.on('--show-plugin-config=PLUGIN', "[DEPRECATED] Show PLUGIN configuration and
46
46
  }
47
47
 
48
48
  op.on('-p', '--plugin DIR', "add plugin directory") {|s|
49
- (cmd_opts[:plugin_dirs] ||= default_opts[:plugin_dirs]) << s
49
+ (cmd_opts[:plugin_dirs] ||= []) << s
50
50
  }
51
51
 
52
52
  op.on('-I PATH', "add library path") {|s|
@@ -101,12 +101,6 @@ 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
110
104
  end
111
105
 
112
106
  class SingleValueFormatter < Fluent::Plugin::SingleValueFormatter
@@ -201,7 +201,7 @@ module Fluent
201
201
 
202
202
  def overwrite_defaults(other) # other is owner plugin's corresponding proxy
203
203
  self.defaults = self.defaults.merge(other.defaults)
204
- self.sections.keys.each do |section_key|
204
+ self.sections.each_key do |section_key|
205
205
  if other.sections.has_key?(section_key)
206
206
  self.sections[section_key].overwrite_defaults(other.sections[section_key])
207
207
  end
@@ -274,7 +274,7 @@ module Fluent
274
274
  option_value_type!(name, opts, :deprecated, String)
275
275
  option_value_type!(name, opts, :obsoleted, String)
276
276
  if type == :enum
277
- if !opts.has_key?(:list) || !opts[:list].is_a?(Array) || opts[:list].empty? || !opts[:list].all?{|v| v.is_a?(Symbol) }
277
+ if !opts.has_key?(:list) || !opts[:list].is_a?(Array) || opts[:list].empty? || !opts[:list].all?(Symbol)
278
278
  raise ArgumentError, "#{name}: enum parameter requires :list of Symbols"
279
279
  end
280
280
  end
@@ -92,23 +92,10 @@ module Fluent
92
92
  else
93
93
  basepath = '/'
94
94
  fname = path
95
- parser_proc = ->(f) {
95
+ require 'open-uri'
96
+ URI.open(uri) {|f|
96
97
  Parser.new(basepath, f.each_line, fname).parse!(allow_include, nil, attrs, elems)
97
98
  }
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
112
99
  end
113
100
 
114
101
  rescue SystemCallError => e
@@ -117,3 +104,4 @@ module Fluent
117
104
  end
118
105
  end
119
106
  end
107
+
@@ -123,7 +123,7 @@ module Fluent
123
123
 
124
124
  s = val.to_sym
125
125
  list = opts[:list]
126
- raise "Plugin BUG: config type 'enum' requires :list of symbols" unless list.is_a?(Array) && list.all?{|v| v.is_a? Symbol }
126
+ raise "Plugin BUG: config type 'enum' requires :list of symbols" unless list.is_a?(Array) && list.all?(Symbol)
127
127
  unless list.include?(s)
128
128
  raise ConfigError, "valid options are #{list.join(',')} but got #{val}"
129
129
  end
@@ -172,7 +172,7 @@ module Fluent
172
172
  require 'open-uri'
173
173
  basepath = '/'
174
174
  fname = path
175
- data = u.open { |f| f.read }
175
+ data = URI.open(uri) { |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)
@@ -138,10 +138,6 @@ module Fluent
138
138
  sb.add_line('@id', v)
139
139
  end
140
140
 
141
- if (v = config.delete('$log_level'))
142
- sb.add_line('@log_level', v)
143
- end
144
-
145
141
  config.each do |key, val|
146
142
  if val.is_a?(Array)
147
143
  val.each do |v|
@@ -31,13 +31,13 @@ module Fluent
31
31
  super
32
32
  # to simulate implicit 'attr_accessor' by config_param / config_section and its value by config_set_default
33
33
  proxy = self.class.merged_configure_proxy
34
- proxy.params.keys.each do |name|
34
+ proxy.params.each_key do |name|
35
35
  next if name.to_s.start_with?('@')
36
36
  if proxy.defaults.has_key?(name)
37
37
  instance_variable_set("@#{name}".to_sym, proxy.defaults[name])
38
38
  end
39
39
  end
40
- proxy.sections.keys.each do |name|
40
+ proxy.sections.each_key do |name|
41
41
  next if name.to_s.start_with?('@')
42
42
  subproxy = proxy.sections[name]
43
43
  if subproxy.multi?
@@ -54,7 +54,7 @@ module Fluent
54
54
  if mutex.try_lock
55
55
  locks[key] = mutex
56
56
  else
57
- locks.values.each(&:unlock)
57
+ locks.each_value(&:unlock)
58
58
  locks = {} # flush locked keys
59
59
  break
60
60
  end
@@ -47,8 +47,6 @@ module Fluent
47
47
  # it's not suppressed in default event router for non-log-event events
48
48
  log_event_router.suppress_missing_match!
49
49
 
50
- log_event_router = log_event_router
51
-
52
50
  unmatched_tags = Fluent::Log.event_tags.select { |t| !log_event_router.match?(t) }
53
51
  unless unmatched_tags.empty?
54
52
  $log.warn "match for some tags of log events are not defined in @FLUENT_LOG label (to be ignored)", tags: unmatched_tags
@@ -56,7 +56,7 @@ module Fluent
56
56
 
57
57
  @variable_store = Fluent::VariableStore.fetch_or_build(:buf_file)
58
58
 
59
- multi_workers_configured = owner.system_config.workers > 1 ? true : false
59
+ multi_workers_configured = owner.system_config.workers > 1
60
60
 
61
61
  using_plugin_root_dir = false
62
62
  unless @path
@@ -399,7 +399,7 @@ module Fluent
399
399
  end
400
400
 
401
401
  if chunk.slice(0, 2) == BUFFER_HEADER
402
- size = chunk.slice(2, 4).unpack('N').first
402
+ size = chunk.slice(2, 4).unpack1('N')
403
403
  if size
404
404
  return Fluent::MessagePackFactory.msgpack_unpacker(symbolize_keys: true).feed(chunk.slice(6, size)).read rescue nil
405
405
  end
@@ -238,17 +238,16 @@ module Fluent
238
238
  callback.call(file) if callback
239
239
  end
240
240
 
241
- URI_PARSER = URI::Parser.new
242
241
  ESCAPE_REGEXP = /[^-_.a-zA-Z0-9]/n
243
242
 
244
243
  def encode_key(metadata)
245
244
  k = @key ? metadata.variables[@key] : metadata.tag
246
245
  k ||= ''
247
- URI_PARSER.escape(k, ESCAPE_REGEXP)
246
+ URI::DEFAULT_PARSER.escape(k, ESCAPE_REGEXP)
248
247
  end
249
248
 
250
249
  def decode_key(key)
251
- URI_PARSER.unescape(key)
250
+ URI::DEFAULT_PARSER.unescape(key)
252
251
  end
253
252
 
254
253
  def create_new_chunk(path, metadata, perm)
@@ -70,6 +70,13 @@ module Fluent::Plugin
70
70
  end
71
71
  end
72
72
  begin
73
+ # Note: https://github.com/fluent/fluentd/issues/4100
74
+ # If the parser returns multiple records from one raw_value,
75
+ # this returns only the first one record.
76
+ # This should be fixed in the future version.
77
+ result_time = nil
78
+ result_record = nil
79
+
73
80
  @parser.parse(raw_value) do |t, values|
74
81
  if values
75
82
  t = if @reserve_time
@@ -79,20 +86,31 @@ module Fluent::Plugin
79
86
  end
80
87
  @accessor.delete(record) if @remove_key_name_field
81
88
  r = handle_parsed(tag, record, t, values)
82
- return t, r
89
+
90
+ if result_record.nil?
91
+ result_time = t
92
+ result_record = r
93
+ else
94
+ if @emit_invalid_record_to_error
95
+ router.emit_error_event(tag, t, r, Fluent::Plugin::Parser::ParserError.new(
96
+ "Could not emit the event. The parser returned multiple results, but currently filter_parser plugin only returns the first parsed result. Raw data: '#{raw_value}'"
97
+ ))
98
+ end
99
+ end
83
100
  else
84
101
  if @emit_invalid_record_to_error
85
102
  router.emit_error_event(tag, time, record, Fluent::Plugin::Parser::ParserError.new("pattern not matched with data '#{raw_value}'"))
86
103
  end
87
- if @reserve_data
88
- t = time
89
- r = handle_parsed(tag, record, time, {})
90
- return t, r
91
- else
92
- return FAILED_RESULT
93
- end
104
+
105
+ next unless @reserve_data
106
+ next unless result_record.nil?
107
+
108
+ result_time = time
109
+ result_record = handle_parsed(tag, record, time, {})
94
110
  end
95
111
  end
112
+
113
+ return result_time, result_record
96
114
  rescue Fluent::Plugin::Parser::ParserError => e
97
115
  if @emit_invalid_record_to_error
98
116
  raise e