logstash-core 7.0.0.alpha1-java → 7.0.0.alpha2-java
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/lib/logstash/api/modules/stats.rb +1 -1
- data/lib/logstash/config/config_ast.rb +1 -1
- data/lib/logstash/config/mixin.rb +1 -1
- data/lib/logstash/filter_delegator.rb +2 -69
- data/lib/logstash/instrument/periodic_poller/jvm.rb +3 -3
- data/lib/logstash/java_pipeline.rb +5 -0
- data/lib/logstash/plugins/registry.rb +5 -2
- data/lib/logstash/util/thread_dump.rb +1 -1
- data/logstash-core.gemspec +1 -4
- data/spec/logstash/config/mixin_spec.rb +2 -2
- data/spec/logstash/filter_delegator_spec.rb +2 -12
- data/spec/logstash/java_filter_delegator_spec.rb +1 -11
- metadata +12 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e824ba00a89915dc5806c980c92edc6fcdb117f7c92eba1ce76bdee8a6730b6
|
4
|
+
data.tar.gz: 9bc5a09b8af714e11b2ac6390d05698a85d5523d0b2eff30ef3d197f2fad8f5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31f101ef4e58029d9353da647dd5cef4c22d96b41ab905be18fe469ad6028cc67cfaa863a809e352f8cb887cf728f517500040a730e1c0d5664945f2c7977e7b
|
7
|
+
data.tar.gz: 99f257a1da0b6c3a30aba429edffca4b0981ab7700a95c41f8ba90701415c98153f5ed927f4b50e2da3c50783bddf8ba52eaf82d6ce2337de97bc26c3dda9a5d
|
@@ -10,7 +10,7 @@ module LogStash
|
|
10
10
|
# return hot threads information
|
11
11
|
get "/jvm/hot_threads" do
|
12
12
|
begin
|
13
|
-
top_threads_count = params["threads"] ||
|
13
|
+
top_threads_count = params["threads"] || 10
|
14
14
|
ignore_idle_threads = params["ignore_idle_threads"] || true
|
15
15
|
options = {
|
16
16
|
:threads => top_threads_count.to_i,
|
@@ -136,7 +136,7 @@ module LogStash; module Config; module AST
|
|
136
136
|
events.each{|e| block.call(e)}
|
137
137
|
end
|
138
138
|
|
139
|
-
if @generated_objects[:#{name}].
|
139
|
+
if !@generated_objects[:#{name}].nil? && @generated_objects[:#{name}].has_flush
|
140
140
|
@periodic_flushers << @generated_objects[:#{name}_flush] if @generated_objects[:#{name}].periodic_flush
|
141
141
|
@shutdown_flushers << @generated_objects[:#{name}_flush]
|
142
142
|
end
|
@@ -323,7 +323,7 @@ module LogStash::Config::Mixin
|
|
323
323
|
if config_settings[:list]
|
324
324
|
value = Array(value) # coerce scalars to lists
|
325
325
|
# Empty lists are converted to nils
|
326
|
-
return true,
|
326
|
+
return true, [] if value.empty?
|
327
327
|
|
328
328
|
validated_items = value.map {|v| validate_value(v, config_val)}
|
329
329
|
is_valid = validated_items.all? {|sr| sr[0] }
|
@@ -1,69 +1,2 @@
|
|
1
|
-
#
|
2
|
-
#
|
3
|
-
module LogStash
|
4
|
-
class FilterDelegator
|
5
|
-
extend Forwardable
|
6
|
-
DELEGATED_METHODS = [
|
7
|
-
:register,
|
8
|
-
:close,
|
9
|
-
:threadsafe?,
|
10
|
-
:do_close,
|
11
|
-
:do_stop,
|
12
|
-
:periodic_flush,
|
13
|
-
:reloadable?
|
14
|
-
]
|
15
|
-
def_delegators :@filter, *DELEGATED_METHODS
|
16
|
-
|
17
|
-
attr_reader :id
|
18
|
-
|
19
|
-
def initialize(filter, id)
|
20
|
-
@klass = filter.class
|
21
|
-
@id = id
|
22
|
-
@filter = filter
|
23
|
-
|
24
|
-
# Scope the metrics to the plugin
|
25
|
-
namespaced_metric = filter.metric
|
26
|
-
@metric_events = namespaced_metric.namespace(:events)
|
27
|
-
@metric_events_in = @metric_events.counter(:in)
|
28
|
-
@metric_events_out = @metric_events.counter(:out)
|
29
|
-
@metric_events_time = @metric_events.counter(:duration_in_millis)
|
30
|
-
namespaced_metric.gauge(:name, config_name)
|
31
|
-
|
32
|
-
# Not all the filters will do bufferings
|
33
|
-
define_flush_method if @filter.respond_to?(:flush)
|
34
|
-
end
|
35
|
-
|
36
|
-
def config_name
|
37
|
-
@klass.config_name
|
38
|
-
end
|
39
|
-
|
40
|
-
def multi_filter(events)
|
41
|
-
@metric_events_in.increment(events.size)
|
42
|
-
|
43
|
-
start_time = java.lang.System.nano_time
|
44
|
-
new_events = @filter.multi_filter(events)
|
45
|
-
@metric_events_time.increment((java.lang.System.nano_time - start_time) / 1_000_000)
|
46
|
-
|
47
|
-
# There is no guarantee in the context of filter
|
48
|
-
# that EVENTS_IN == EVENTS_OUT, see the aggregates and
|
49
|
-
# the split filter
|
50
|
-
c = new_events.count { |event| !event.cancelled? }
|
51
|
-
@metric_events_out.increment(c) if c > 0
|
52
|
-
new_events
|
53
|
-
end
|
54
|
-
|
55
|
-
private
|
56
|
-
def define_flush_method
|
57
|
-
define_singleton_method(:flush) do |options = {}|
|
58
|
-
# we also need to trace the number of events
|
59
|
-
# coming from a specific filters.
|
60
|
-
new_events = @filter.flush(options)
|
61
|
-
|
62
|
-
# Filter plugins that does buffering or spooling of events like the
|
63
|
-
# `Logstash-filter-aggregates` can return `NIL` and will flush on the next flush ticks.
|
64
|
-
@metric_events_out.increment(new_events.size) if new_events && new_events.size > 0
|
65
|
-
new_events
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
1
|
+
# The contents of this file have been ported to Java. It is included for for compatibility
|
2
|
+
# with plugins that directly include it.
|
@@ -20,8 +20,8 @@ java_import 'org.logstash.instrument.reports.ProcessReport'
|
|
20
20
|
module LogStash module Instrument module PeriodicPoller
|
21
21
|
class JVM < Base
|
22
22
|
class GarbageCollectorName
|
23
|
-
YOUNG_GC_NAMES = Set.new(["Copy", "PS Scavenge", "ParNew", "G1 Young Generation", "scavenge"])
|
24
|
-
OLD_GC_NAMES = Set.new(["MarkSweepCompact", "PS MarkSweep", "ConcurrentMarkSweep", "G1 Old Generation", "global"])
|
23
|
+
YOUNG_GC_NAMES = Set.new(["Copy", "PS Scavenge", "ParNew", "G1 Young Generation", "scavenge", "GPGC New"])
|
24
|
+
OLD_GC_NAMES = Set.new(["MarkSweepCompact", "PS MarkSweep", "ConcurrentMarkSweep", "G1 Old Generation", "global", "GPGC Old"])
|
25
25
|
|
26
26
|
YOUNG = :young
|
27
27
|
OLD = :old
|
@@ -68,7 +68,7 @@ module LogStash module Instrument module PeriodicPoller
|
|
68
68
|
logger.debug("collector name", :name => collector_name)
|
69
69
|
name = GarbageCollectorName.get(collector_name)
|
70
70
|
if name.nil?
|
71
|
-
logger.error("Unknown garbage collector name", :name =>
|
71
|
+
logger.error("Unknown garbage collector name", :name => collector_name)
|
72
72
|
else
|
73
73
|
metric.gauge([:jvm, :gc, :collectors, name], :collection_count, collector.getCollectionCount())
|
74
74
|
metric.gauge([:jvm, :gc, :collectors, name], :collection_time_in_millis, collector.getCollectionTime())
|
@@ -25,6 +25,8 @@ module LogStash; class JavaPipeline < JavaBasePipeline
|
|
25
25
|
|
26
26
|
@worker_threads = []
|
27
27
|
|
28
|
+
@java_inputs_controller = org.logstash.execution.InputsController.new(lir_execution.javaInputs)
|
29
|
+
|
28
30
|
@drain_queue = settings.get_value("queue.drain") || settings.get("queue.type") == "memory"
|
29
31
|
|
30
32
|
@events_filtered = java.util.concurrent.atomic.LongAdder.new
|
@@ -241,6 +243,7 @@ module LogStash; class JavaPipeline < JavaBasePipeline
|
|
241
243
|
|
242
244
|
def wait_inputs
|
243
245
|
@input_threads.each(&:join)
|
246
|
+
@java_inputs_controller.awaitStop
|
244
247
|
end
|
245
248
|
|
246
249
|
def start_inputs
|
@@ -259,6 +262,7 @@ module LogStash; class JavaPipeline < JavaBasePipeline
|
|
259
262
|
|
260
263
|
# then after all input plugins are successfully registered, start them
|
261
264
|
inputs.each { |input| start_input(input) }
|
265
|
+
@java_inputs_controller.startInputs(self)
|
262
266
|
end
|
263
267
|
|
264
268
|
def start_input(plugin)
|
@@ -324,6 +328,7 @@ module LogStash; class JavaPipeline < JavaBasePipeline
|
|
324
328
|
def stop_inputs
|
325
329
|
@logger.debug("Closing inputs", default_logging_keys)
|
326
330
|
inputs.each(&:do_stop)
|
331
|
+
@java_inputs_controller.stopInputs
|
327
332
|
@logger.debug("Closed inputs", default_logging_keys)
|
328
333
|
end
|
329
334
|
|
@@ -262,11 +262,14 @@ 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.
|
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)
|
266
267
|
end
|
267
268
|
|
268
269
|
def add_plugin(type, name, klass)
|
269
|
-
if
|
270
|
+
if klass.respond_to?("javaClass", true)
|
271
|
+
@registry[key_for(type, name)] = PluginSpecification.new(type, name, klass.javaClass)
|
272
|
+
elsif !exists?(type, name)
|
270
273
|
specification_klass = type == :universal ? UniversalPluginSpecification : PluginSpecification
|
271
274
|
@registry[key_for(type, name)] = specification_klass.new(type, name, klass)
|
272
275
|
else
|
@@ -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 =
|
8
|
+
THREADS_COUNT_DEFAULT = 10.freeze
|
9
9
|
IGNORE_IDLE_THREADS_DEFAULT = true.freeze
|
10
10
|
|
11
11
|
attr_reader :top_count, :ignore, :dump
|
data/logstash-core.gemspec
CHANGED
@@ -53,10 +53,7 @@ Gem::Specification.new do |gem|
|
|
53
53
|
gem.add_runtime_dependency "filesize", "0.0.4" #(MIT license) for :bytes config validator
|
54
54
|
gem.add_runtime_dependency "gems", "~> 0.8.3" #(MIT license)
|
55
55
|
gem.add_runtime_dependency "concurrent-ruby", "~> 1.0", ">= 1.0.5"
|
56
|
-
|
57
|
-
# Later versions are ruby 2.0 only. We should remove the rack dep once we support 9k
|
58
|
-
gem.add_runtime_dependency "rack", '1.6.6'
|
59
|
-
|
56
|
+
gem.add_runtime_dependency "rack", '~> 1.6', '>= 1.6.11'
|
60
57
|
gem.add_runtime_dependency "sinatra", '~> 1.4', '>= 1.4.6'
|
61
58
|
gem.add_runtime_dependency 'puma', '~> 2.16'
|
62
59
|
gem.add_runtime_dependency "jruby-openssl", ">= 0.9.20" # >= 0.9.13 Required to support TLSv1.2
|
@@ -132,8 +132,8 @@ describe LogStash::Config::Mixin do
|
|
132
132
|
context "with an empty list" do
|
133
133
|
let(:strings) { [] }
|
134
134
|
|
135
|
-
it "should return
|
136
|
-
expect(subject.strings).to
|
135
|
+
it "should return an empty list" do
|
136
|
+
expect(subject.strings).to be_empty
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
@@ -51,7 +51,7 @@ describe LogStash::FilterDelegator do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it "defines a flush method" do
|
54
|
-
expect(subject.
|
54
|
+
expect(subject.has_flush).to be_truthy
|
55
55
|
end
|
56
56
|
|
57
57
|
context "when the flush return events" do
|
@@ -128,7 +128,7 @@ describe LogStash::FilterDelegator do
|
|
128
128
|
end
|
129
129
|
|
130
130
|
it "doesnt define a flush method" do
|
131
|
-
expect(subject.
|
131
|
+
expect(subject.has_flush).to be_falsey
|
132
132
|
end
|
133
133
|
|
134
134
|
it "increments the in/out of the metric" do
|
@@ -145,14 +145,4 @@ describe LogStash::FilterDelegator do
|
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
|
-
context "delegate methods to the original plugin" do
|
149
|
-
# I am not testing the behavior of these methods
|
150
|
-
# this is done in the plugin tests. I just want to make sure
|
151
|
-
# the proxy delegates the methods.
|
152
|
-
LogStash::FilterDelegator::DELEGATED_METHODS.each do |method|
|
153
|
-
it "delegate method: `#{method}` to the filter" do
|
154
|
-
expect(subject.respond_to?(method))
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
158
148
|
end
|
@@ -6,7 +6,7 @@ require "support/shared_contexts"
|
|
6
6
|
|
7
7
|
java_import org.logstash.RubyUtil
|
8
8
|
|
9
|
-
describe LogStash::
|
9
|
+
describe LogStash::FilterDelegator do
|
10
10
|
|
11
11
|
class MockGauge
|
12
12
|
def increment(_)
|
@@ -182,14 +182,4 @@ describe LogStash::JavaFilterDelegator do
|
|
182
182
|
end
|
183
183
|
end
|
184
184
|
|
185
|
-
context "delegate methods to the original plugin" do
|
186
|
-
# I am not testing the behavior of these methods
|
187
|
-
# this is done in the plugin tests. I just want to make sure
|
188
|
-
# the proxy delegates the methods.
|
189
|
-
LogStash::FilterDelegator::DELEGATED_METHODS.each do |method|
|
190
|
-
it "delegate method: `#{method}` to the filter" do
|
191
|
-
expect(subject.respond_to?(method))
|
192
|
-
end
|
193
|
-
end
|
194
|
-
end
|
195
185
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.0.0.
|
4
|
+
version: 7.0.0.alpha2
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -103,17 +103,23 @@ dependencies:
|
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
requirement: !ruby/object:Gem::Requirement
|
105
105
|
requirements:
|
106
|
-
- -
|
106
|
+
- - "~>"
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '1.6'
|
109
|
+
- - ">="
|
107
110
|
- !ruby/object:Gem::Version
|
108
|
-
version: 1.6.
|
111
|
+
version: 1.6.11
|
109
112
|
name: rack
|
110
113
|
prerelease: false
|
111
114
|
type: :runtime
|
112
115
|
version_requirements: !ruby/object:Gem::Requirement
|
113
116
|
requirements:
|
114
|
-
- -
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '1.6'
|
120
|
+
- - ">="
|
115
121
|
- !ruby/object:Gem::Version
|
116
|
-
version: 1.6.
|
122
|
+
version: 1.6.11
|
117
123
|
- !ruby/object:Gem::Dependency
|
118
124
|
requirement: !ruby/object:Gem::Requirement
|
119
125
|
requirements:
|