logstash-core 6.8.17-java → 7.0.0.alpha1-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/lib/logstash-core/version.rb +3 -1
  3. data/lib/logstash/agent.rb +69 -85
  4. data/lib/logstash/api/modules/stats.rb +1 -1
  5. data/lib/logstash/compiler/lscl.rb +7 -7
  6. data/lib/logstash/config/config_ast.rb +1 -1
  7. data/lib/logstash/config/mixin.rb +1 -1
  8. data/lib/logstash/config/modules_common.rb +3 -3
  9. data/lib/logstash/dependency_report.rb +1 -2
  10. data/lib/logstash/environment.rb +4 -9
  11. data/lib/logstash/event.rb +1 -24
  12. data/lib/logstash/filter_delegator.rb +69 -2
  13. data/lib/logstash/filters/base.rb +2 -0
  14. data/lib/logstash/instrument/metric_store.rb +1 -1
  15. data/lib/logstash/instrument/periodic_poller/dlq.rb +7 -5
  16. data/lib/logstash/instrument/periodic_poller/jvm.rb +3 -3
  17. data/lib/logstash/instrument/periodic_poller/pq.rb +8 -6
  18. data/lib/logstash/instrument/periodic_pollers.rb +3 -3
  19. data/lib/logstash/java_pipeline.rb +11 -38
  20. data/lib/logstash/modules/kibana_config.rb +1 -1
  21. data/lib/logstash/modules/logstash_config.rb +1 -1
  22. data/lib/logstash/patches/resolv.rb +32 -17
  23. data/lib/logstash/pipeline.rb +11 -28
  24. data/lib/logstash/pipeline_action/base.rb +1 -1
  25. data/lib/logstash/pipeline_action/create.rb +13 -7
  26. data/lib/logstash/pipeline_action/reload.rb +12 -35
  27. data/lib/logstash/pipeline_action/stop.rb +6 -4
  28. data/lib/logstash/pipeline_settings.rb +1 -2
  29. data/lib/logstash/plugins/registry.rb +2 -5
  30. data/lib/logstash/runner.rb +0 -24
  31. data/lib/logstash/settings.rb +5 -5
  32. data/lib/logstash/state_resolver.rb +5 -5
  33. data/lib/logstash/util.rb +1 -11
  34. data/lib/logstash/util/duration_formatter.rb +1 -1
  35. data/lib/logstash/util/safe_uri.rb +0 -1
  36. data/lib/logstash/util/substitution_variables.rb +1 -22
  37. data/lib/logstash/util/thread_dump.rb +1 -1
  38. data/locales/en.yml +7 -16
  39. data/logstash-core.gemspec +11 -2
  40. data/spec/logstash/acked_queue_concurrent_stress_spec.rb +2 -2
  41. data/spec/logstash/agent/converge_spec.rb +31 -25
  42. data/spec/logstash/agent/metrics_spec.rb +1 -1
  43. data/spec/logstash/agent_spec.rb +7 -6
  44. data/spec/logstash/compiler/compiler_spec.rb +0 -28
  45. data/spec/logstash/config/config_ast_spec.rb +0 -15
  46. data/spec/logstash/config/mixin_spec.rb +2 -3
  47. data/spec/logstash/converge_result_spec.rb +1 -1
  48. data/spec/logstash/environment_spec.rb +4 -4
  49. data/spec/logstash/event_spec.rb +2 -10
  50. data/spec/logstash/filter_delegator_spec.rb +12 -2
  51. data/spec/logstash/filters/base_spec.rb +9 -45
  52. data/spec/logstash/instrument/periodic_poller/cgroup_spec.rb +2 -0
  53. data/spec/logstash/instrument/wrapped_write_client_spec.rb +1 -1
  54. data/spec/logstash/java_filter_delegator_spec.rb +11 -1
  55. data/spec/logstash/legacy_ruby_event_spec.rb +5 -6
  56. data/spec/logstash/patches_spec.rb +3 -1
  57. data/spec/logstash/pipeline_action/create_spec.rb +8 -14
  58. data/spec/logstash/pipeline_action/reload_spec.rb +9 -16
  59. data/spec/logstash/pipeline_action/stop_spec.rb +3 -4
  60. data/spec/logstash/queue_factory_spec.rb +1 -2
  61. data/spec/logstash/runner_spec.rb +0 -2
  62. data/spec/logstash/settings/array_coercible_spec.rb +1 -1
  63. data/spec/logstash/settings/bytes_spec.rb +2 -2
  64. data/spec/logstash/settings/port_range_spec.rb +1 -1
  65. data/spec/logstash/settings_spec.rb +0 -10
  66. data/spec/logstash/state_resolver_spec.rb +22 -26
  67. data/spec/logstash/util/safe_uri_spec.rb +0 -40
  68. data/spec/logstash/util/secretstore_spec.rb +1 -1
  69. data/spec/logstash/util/time_value_spec.rb +1 -1
  70. data/spec/logstash/util/wrapped_acked_queue_spec.rb +1 -1
  71. data/spec/logstash/webserver_spec.rb +5 -9
  72. data/spec/support/matchers.rb +19 -25
  73. data/spec/support/shared_contexts.rb +3 -3
  74. data/versions-gem-copy.yml +9 -9
  75. metadata +31 -44
  76. data/lib/logstash/patches/resolv_9270.rb +0 -2903
  77. data/lib/logstash/pipelines_registry.rb +0 -166
  78. data/lib/logstash/util/lazy_singleton.rb +0 -33
  79. data/spec/logstash/jruby_version_spec.rb +0 -15
  80. data/spec/logstash/pipelines_registry_spec.rb +0 -220
@@ -12,7 +12,7 @@ module LogStash module PipelineAction
12
12
  end
13
13
  alias_method :to_s, :inspect
14
14
 
15
- def execute(agent, pipelines_registry)
15
+ def execute(agent, pipelines)
16
16
  raise "`#execute` Not implemented!"
17
17
  end
18
18
 
@@ -3,7 +3,6 @@ require "logstash/pipeline_action/base"
3
3
  require "logstash/pipeline"
4
4
  require "logstash/java_pipeline"
5
5
 
6
-
7
6
  module LogStash module PipelineAction
8
7
  class Create < Base
9
8
  include LogStash::Util::Loggable
@@ -31,26 +30,33 @@ module LogStash module PipelineAction
31
30
 
32
31
  # The execute assume that the thread safety access of the pipeline
33
32
  # is managed by the caller.
34
- def execute(agent, pipelines_registry)
35
- new_pipeline =
33
+ def execute(agent, pipelines)
34
+ pipeline =
36
35
  if @pipeline_config.settings.get_value("pipeline.java_execution")
37
36
  LogStash::JavaPipeline.new(@pipeline_config, @metric, agent)
38
37
  else
39
38
  agent.exclusive do
40
39
  # The Ruby pipeline initialization is not thread safe because of the module level
41
40
  # shared state in LogsStash::Config::AST. When using multiple pipelines this gets
42
- # executed simultaneously in different threads and we need to synchronize this initialization.
41
+ # executed simultaneously in different threads and we need to synchonize this initialization.
43
42
  LogStash::Pipeline.new(@pipeline_config, @metric, agent)
44
43
  end
45
44
  end
46
45
 
47
- success = pipelines_registry.create_pipeline(pipeline_id, new_pipeline) do
48
- new_pipeline.start # block until the pipeline is correctly started or crashed
46
+ status = nil
47
+ pipelines.compute(pipeline_id) do |id,value|
48
+ if value
49
+ LogStash::ConvergeResult::ActionResult.create(self, true)
50
+ end
51
+ status = pipeline.start # block until the pipeline is correctly started or crashed
52
+ pipeline # The pipeline is successfully started we can add it to the map
49
53
  end
50
54
 
51
- LogStash::ConvergeResult::ActionResult.create(self, success)
55
+
56
+ LogStash::ConvergeResult::ActionResult.create(self, status)
52
57
  end
53
58
 
59
+
54
60
  def to_s
55
61
  "PipelineAction::Create<#{pipeline_id}>"
56
62
  end
@@ -20,12 +20,8 @@ module LogStash module PipelineAction
20
20
  "PipelineAction::Reload<#{pipeline_id}>"
21
21
  end
22
22
 
23
- def execute(agent, pipelines_registry)
24
- old_pipeline = pipelines_registry.get_pipeline(pipeline_id)
25
-
26
- if old_pipeline.nil?
27
- return LogStash::ConvergeResult::FailedAction.new("Cannot reload pipeline, because the pipeline does not exist")
28
- end
23
+ def execute(agent, pipelines)
24
+ old_pipeline = pipelines[pipeline_id]
29
25
 
30
26
  if !old_pipeline.reloadable?
31
27
  return LogStash::ConvergeResult::FailedAction.new("Cannot reload pipeline, because the existing pipeline is not reloadable")
@@ -38,8 +34,8 @@ module LogStash module PipelineAction
38
34
  else
39
35
  agent.exclusive do
40
36
  # The Ruby pipeline initialization is not thread safe because of the module level
41
- # shared state in LogsStash::Config::AST. When using multiple pipelines this gets
42
- # executed simultaneously in different threads and we need to synchronize this initialization.
37
+ # shared state in LogsStash::Config::AST. When using multiple pipelines this can gets
38
+ # executed simultaneously in different threads and we need to synchonize this initialization.
43
39
  LogStash::BasePipeline.new(@pipeline_config)
44
40
  end
45
41
  end
@@ -53,35 +49,16 @@ module LogStash module PipelineAction
53
49
 
54
50
  logger.info("Reloading pipeline", "pipeline.id" => pipeline_id)
55
51
 
56
- success = pipelines_registry.reload_pipeline(pipeline_id) do
57
- # important NOT to explicitly return from block here
58
- # the block must emit a success boolean value
52
+ pipelines.compute(pipeline_id) do |_,pipeline|
53
+ status = Stop.new(pipeline_id).execute(agent, pipelines)
59
54
 
60
- # First shutdown old pipeline
61
- old_pipeline.shutdown { LogStash::ShutdownWatcher.start(old_pipeline) }
62
- old_pipeline.thread.join
63
-
64
- # Then create a new pipeline
65
- new_pipeline =
66
- if @pipeline_config.settings.get_value("pipeline.java_execution")
67
- LogStash::JavaPipeline.new(@pipeline_config, @metric, agent)
68
- else
69
- agent.exclusive do
70
- # The Ruby pipeline initialization is not thread safe because of the module level
71
- # shared state in LogsStash::Config::AST. When using multiple pipelines this gets
72
- # executed simultaneously in different threads and we need to synchronize this initialization.
73
- LogStash::Pipeline.new(@pipeline_config, @metric, agent)
74
- end
75
- end
76
-
77
- success = new_pipeline.start # block until the pipeline is correctly started or crashed
78
-
79
- # return success and new_pipeline to registry reload_pipeline
80
- [success, new_pipeline]
55
+ if status
56
+ return Create.new(@pipeline_config, @metric).execute(agent, pipelines)
57
+ else
58
+ return status
59
+ end
60
+ pipeline
81
61
  end
82
-
83
- LogStash::ConvergeResult::ActionResult.create(self, success)
84
62
  end
85
-
86
63
  end
87
64
  end end
@@ -9,13 +9,15 @@ module LogStash module PipelineAction
9
9
  @pipeline_id = pipeline_id
10
10
  end
11
11
 
12
- def execute(agent, pipelines_registry)
13
- pipelines_registry.terminate_pipeline(pipeline_id) do |pipeline|
12
+ def execute(agent, pipelines)
13
+ pipelines.compute(pipeline_id) do |_,pipeline|
14
14
  pipeline.shutdown { LogStash::ShutdownWatcher.start(pipeline) }
15
15
  pipeline.thread.join
16
+ nil # delete the pipeline
16
17
  end
17
-
18
- LogStash::ConvergeResult::SuccessfulAction.new
18
+ # If we reach this part of the code we have succeeded because
19
+ # the shutdown call will block.
20
+ return LogStash::ConvergeResult::SuccessfulAction.new
19
21
  end
20
22
 
21
23
  def to_s
@@ -28,7 +28,6 @@ module LogStash
28
28
  "queue.checkpoint.acks",
29
29
  "queue.checkpoint.interval",
30
30
  "queue.checkpoint.writes",
31
- "queue.checkpoint.retry",
32
31
  "queue.drain",
33
32
  "queue.max_bytes",
34
33
  "queue.max_events",
@@ -47,7 +46,7 @@ module LogStash
47
46
 
48
47
  def register(setting)
49
48
  unless SETTINGS_WHITE_LIST.include?(setting.name)
50
- raise ArgumentError.new("Only pipeline related settings can be registed in a PipelineSettings object. Received \"#{setting.name}\". Allowed settings: #{SETTINGS_WHITE_LIST}")
49
+ raise ArgumentError.new("Only pipeline related settings can be registered in a PipelineSettings object. Received \"#{setting.name}\". Allowed settings: #{SETTINGS_WHITE_LIST}")
51
50
  end
52
51
  super(setting)
53
52
  end
@@ -262,14 +262,11 @@ module LogStash module Plugins
262
262
  # @param name [String] plugin name
263
263
  # @return [Boolean] true if klass is a valid plugin for name
264
264
  def is_a_plugin?(klass, name)
265
- (klass.class == Java::JavaClass && klass.simple_name.downcase == name.gsub('_','')) ||
266
- (klass.ancestors.include?(LogStash::Plugin) && klass.respond_to?(:config_name) && klass.config_name == name)
265
+ klass.ancestors.include?(LogStash::Plugin) && klass.respond_to?(:config_name) && klass.config_name == name
267
266
  end
268
267
 
269
268
  def add_plugin(type, name, klass)
270
- if klass.respond_to?("javaClass", true)
271
- @registry[key_for(type, name)] = PluginSpecification.new(type, name, klass.javaClass)
272
- elsif !exists?(type, name)
269
+ if !exists?(type, name)
273
270
  specification_klass = type == :universal ? UniversalPluginSpecification : PluginSpecification
274
271
  @registry[key_for(type, name)] = specification_klass.new(type, name, klass)
275
272
  else
@@ -276,17 +276,6 @@ class LogStash::Runner < Clamp::StrictCommand
276
276
  LogStash::PLUGIN_REGISTRY.hooks.register_emitter(self.class, @dispatcher)
277
277
 
278
278
  @settings.validate_all
279
-
280
- if @settings.registered?("xpack.monitoring.enabled")
281
- verify_deprecated_setting("xpack.monitoring.elasticsearch.url", "xpack.monitoring.elasticsearch.hosts")
282
- verify_deprecated_setting("xpack.monitoring.elasticsearch.ssl.ca", "xpack.monitoring.elasticsearch.ssl.certificate_authority")
283
- end
284
-
285
- if @settings.registered?("xpack.management.enabled")
286
- verify_deprecated_setting("xpack.management.elasticsearch.url", "xpack.management.elasticsearch.hosts")
287
- verify_deprecated_setting("xpack.management.elasticsearch.ssl.ca", "xpack.management.elasticsearch.ssl.certificate_authority")
288
- end
289
-
290
279
  @dispatcher.fire(:before_bootstrap_checks)
291
280
 
292
281
  return start_shell(setting("interactive"), binding) if setting("interactive")
@@ -380,8 +369,6 @@ class LogStash::Runner < Clamp::StrictCommand
380
369
 
381
370
  @agent.shutdown
382
371
 
383
- logger.info("Logstash shut down.")
384
-
385
372
  # flush any outstanding log messages during shutdown
386
373
  org.apache.logging.log4j.LogManager.shutdown
387
374
 
@@ -514,15 +501,4 @@ class LogStash::Runner < Clamp::StrictCommand
514
501
  @settings.get_value(key)
515
502
  end
516
503
 
517
- def verify_deprecated_setting(old_setting, new_setting)
518
- if @settings.set?(old_setting)
519
- logger.warn("Deprecated setting `#{old_setting}` please use `#{new_setting}`")
520
- if @settings.set?(new_setting)
521
- signal_usage_error("Both `#{new_setting}` and the deprecated `#{old_setting}` settings are set, please remove `#{old_setting}`")
522
- else
523
- @settings.set_value(new_setting, @settings.get_value(old_setting))
524
- end
525
- end
526
- end
527
-
528
504
  end
@@ -368,7 +368,7 @@ module LogStash
368
368
  case value
369
369
  when ::Range
370
370
  value
371
- when ::Integer
371
+ when ::Fixnum
372
372
  value..value
373
373
  when ::String
374
374
  first, last = value.split(PORT_SEPARATOR)
@@ -481,11 +481,11 @@ module LogStash
481
481
 
482
482
  class Bytes < Coercible
483
483
  def initialize(name, default=nil, strict=true)
484
- super(name, ::Integer, default, strict=true) { |value| valid?(value) }
484
+ super(name, ::Fixnum, default, strict=true) { |value| valid?(value) }
485
485
  end
486
486
 
487
487
  def valid?(value)
488
- value.is_a?(::Integer) && value >= 0
488
+ value.is_a?(Fixnum) && value >= 0
489
489
  end
490
490
 
491
491
  def coerce(value)
@@ -508,11 +508,11 @@ module LogStash
508
508
 
509
509
  class TimeValue < Coercible
510
510
  def initialize(name, default, strict=true, &validator_proc)
511
- super(name, ::Integer, default, strict, &validator_proc)
511
+ super(name, ::Fixnum, default, strict, &validator_proc)
512
512
  end
513
513
 
514
514
  def coerce(value)
515
- return value if value.is_a?(::Integer)
515
+ return value if value.is_a?(::Fixnum)
516
516
  Util::TimeValue.from_value(value).to_nanos
517
517
  end
518
518
  end
@@ -10,11 +10,11 @@ module LogStash
10
10
  @metric = metric
11
11
  end
12
12
 
13
- def resolve(pipelines_registry, pipeline_configs)
13
+ def resolve(pipelines, pipeline_configs)
14
14
  actions = []
15
15
 
16
16
  pipeline_configs.each do |pipeline_config|
17
- pipeline = pipelines_registry.get_pipeline(pipeline_config.pipeline_id)
17
+ pipeline = pipelines[pipeline_config.pipeline_id]
18
18
 
19
19
  if pipeline.nil?
20
20
  actions << LogStash::PipelineAction::Create.new(pipeline_config, @metric)
@@ -25,12 +25,12 @@ module LogStash
25
25
  end
26
26
  end
27
27
 
28
- configured_pipelines = pipeline_configs.collect(&:pipeline_id)
28
+ running_pipelines = pipeline_configs.collect(&:pipeline_id)
29
29
 
30
30
  # If one of the running pipeline is not in the pipeline_configs, we assume that we need to
31
31
  # stop it.
32
- pipelines_registry.running_pipelines.keys
33
- .select { |pipeline_id| !configured_pipelines.include?(pipeline_id) }
32
+ pipelines.keys
33
+ .select { |pipeline_id| !running_pipelines.include?(pipeline_id) }
34
34
  .each { |pipeline_id| actions << LogStash::PipelineAction::Stop.new(pipeline_id) }
35
35
 
36
36
  actions.sort # See logstash/pipeline_action.rb
data/lib/logstash/util.rb CHANGED
@@ -9,8 +9,6 @@ module LogStash::Util
9
9
 
10
10
  PR_SET_NAME = 15
11
11
  def self.set_thread_name(name)
12
- previous_name = Java::java.lang.Thread.currentThread.getName() if block_given?
13
-
14
12
  if RUBY_ENGINE == "jruby"
15
13
  # Keep java and ruby thread names in sync.
16
14
  Java::java.lang.Thread.currentThread.setName(name)
@@ -23,14 +21,6 @@ module LogStash::Util
23
21
  # since MRI 1.9, JRuby, and Rubinius use system threads for this.
24
22
  LibC.prctl(PR_SET_NAME, name[0..16], 0, 0, 0)
25
23
  end
26
-
27
- if block_given?
28
- begin
29
- yield
30
- ensure
31
- set_thread_name(previous_name)
32
- end
33
- end
34
24
  end # def set_thread_name
35
25
 
36
26
  def self.set_thread_plugin(plugin)
@@ -201,7 +191,7 @@ module LogStash::Util
201
191
  o.inject({}) {|h, (k,v)| h[k] = deep_clone(v); h }
202
192
  when Array
203
193
  o.map {|v| deep_clone(v) }
204
- when Integer, Symbol, IO, TrueClass, FalseClass, NilClass
194
+ when Fixnum, Symbol, IO, TrueClass, FalseClass, NilClass
205
195
  o
206
196
  when LogStash::Codecs::Base
207
197
  o.clone
@@ -7,7 +7,7 @@ module LogStash::Util::DurationFormatter
7
7
  # a format that a human can understand. This is currently used by
8
8
  # the API.
9
9
  #
10
- # @param [Integer] Duration in milliseconds
10
+ # @param [Fixnum] Duration in milliseconds
11
11
  # @return [String] Duration in human format
12
12
  def self.human_format(duration)
13
13
  ChronicDuration.output(duration / 1000, CHRONIC_OPTIONS)
@@ -26,7 +26,6 @@ class LogStash::Util::SafeURI
26
26
  else
27
27
  raise ArgumentError, "Expected a string, java.net.URI, or URI, got a #{arg.class} creating a URL"
28
28
  end
29
- raise ArgumentError, "URI is not valid - host is not specified" if @uri.host.nil?
30
29
  end
31
30
 
32
31
  def to_s
@@ -2,17 +2,12 @@
2
2
 
3
3
  java_import "org.logstash.secret.store.SecretStoreExt"
4
4
 
5
- require_relative 'lazy_singleton'
6
-
7
5
  module ::LogStash::Util::SubstitutionVariables
8
6
 
9
7
  include LogStash::Util::Loggable
10
8
 
11
9
  SUBSTITUTION_PLACEHOLDER_REGEX = /\${(?<name>[a-zA-Z_.][a-zA-Z0-9_.]*)(:(?<default>[^}]*))?}/
12
10
 
13
- SECRET_STORE = ::LogStash::Util::LazySingleton.new { load_secret_store }
14
- private_constant :SECRET_STORE
15
-
16
11
  # Recursive method to replace substitution variable references in parameters
17
12
  def deep_replace(value)
18
13
  if value.is_a?(Hash)
@@ -47,7 +42,7 @@ module ::LogStash::Util::SubstitutionVariables
47
42
  logger.debug("Replacing `#{placeholder}` with actual value")
48
43
 
49
44
  #check the secret store if it exists
50
- secret_store = SECRET_STORE.instance
45
+ secret_store = SecretStoreExt.getIfExists(LogStash::SETTINGS.get_setting("keystore.file").value, LogStash::SETTINGS.get_setting("keystore.classname").value)
51
46
  replacement = secret_store.nil? ? nil : secret_store.retrieveSecret(SecretStoreExt.getStoreId(name))
52
47
  #check the environment
53
48
  replacement = ENV.fetch(name, default) if replacement.nil?
@@ -59,20 +54,4 @@ module ::LogStash::Util::SubstitutionVariables
59
54
  end
60
55
  end # def replace_placeholders
61
56
 
62
- class << self
63
- private
64
-
65
- # loads a secret_store from disk if available, or returns nil
66
- #
67
- # @api private
68
- # @return [SecretStoreExt,nil]
69
- def load_secret_store
70
- SecretStoreExt.getIfExists(LogStash::SETTINGS.get_setting("keystore.file").value, LogStash::SETTINGS.get_setting("keystore.classname").value)
71
- end
72
-
73
- # @api test
74
- def reset_secret_store
75
- SECRET_STORE.reset!
76
- end
77
- end
78
57
  end
@@ -5,7 +5,7 @@ module LogStash
5
5
  module Util
6
6
  class ThreadDump
7
7
  SKIPPED_THREADS = [ "Finalizer", "Reference Handler", "Signal Dispatcher" ].freeze
8
- THREADS_COUNT_DEFAULT = 10.freeze
8
+ THREADS_COUNT_DEFAULT = 3.freeze
9
9
  IGNORE_IDLE_THREADS_DEFAULT = true.freeze
10
10
 
11
11
  attr_reader :top_count, :ignore, :dump
data/locales/en.yml CHANGED
@@ -229,32 +229,23 @@ en:
229
229
  If you wish to use both defaults, please use
230
230
  the empty string for the '-e' flag.
231
231
  field-reference-parser: |+
232
+ (DEPRECATED) This option is no longer
233
+ configurable.
234
+
232
235
  Use the given MODE when parsing field
233
236
  references.
234
237
 
235
238
  The field reference parser is used to expand
236
239
  field references in your pipeline configs,
237
- and will be becoming more strict to better
238
- handle illegal and ambbiguous inputs in a
239
- future release of Logstash.
240
+ and has become more strict to better handle
241
+ ambiguous- and illegal-syntax inputs.
240
242
 
241
- Available MODEs are:
242
- - `LEGACY`: parse with the legacy parser,
243
- which is known to handle ambiguous- and
244
- illegal-syntax in surprising ways;
245
- warnings will not be emitted.
246
- - `COMPAT`: warn once for each distinct
247
- ambiguous- or illegal-syntax input, but
248
- continue to expand field references with
249
- the legacy parser.
243
+ The only available MODE is:
250
244
  - `STRICT`: parse in a strict manner; when
251
245
  given ambiguous- or illegal-syntax input,
252
246
  raises a runtime exception that should
253
247
  be handled by the calling plugin.
254
248
 
255
- The MODE can also be set with
256
- `config.field_reference.parser`
257
-
258
249
  modules: |+
259
250
  Load Logstash modules.
260
251
  Modules can be defined using multiple instances
@@ -298,7 +289,7 @@ en:
298
289
  pipeline-workers: |+
299
290
  Sets the number of pipeline workers to run.
300
291
  java-execution: |+
301
- Use Java execution engine.
292
+ (Beta) Use new Java execution engine.
302
293
  pipeline-batch-size: |+
303
294
  Size of batches the pipeline is to work in.
304
295
  pipeline-batch-delay: |+