logstash-core 6.0.0.rc2-java → 6.0.1-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-core/logstash-core.jar +0 -0
- data/lib/logstash/compiler/lscl.rb +16 -4
- data/lib/logstash/filter_delegator.rb +2 -2
- data/lib/logstash/instrument/wrapped_write_client.rb +3 -3
- data/lib/logstash/output_delegator.rb +2 -2
- data/lib/logstash/runner.rb +4 -1
- data/lib/logstash/timestamp.rb +0 -5
- data/lib/logstash/util/wrapped_acked_queue.rb +2 -2
- data/lib/logstash/util/wrapped_synchronous_queue.rb +2 -2
- data/logstash-core.gemspec +1 -1
- data/spec/logstash/compiler/compiler_spec.rb +85 -0
- data/spec/logstash/timestamp_spec.rb +5 -0
- data/versions-gem-copy.yml +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9948f10f7f434f0e67b751dca73b6bc83f577f1b933985b1251dbc6bca7a59dc
|
4
|
+
data.tar.gz: 405b2588cab170eaea4e861e2f559c8698ad40ea3bcc4468e4fcd0e84e869269
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61314838211ae44135b607178f642b449b86ca2dd83f38c5a5d9979438f5ae77b1c1f692dd5384fdf4f9069a8caf521f111b8e22ea17778166b23a33e3389502
|
7
|
+
data.tar.gz: e8660a1b7f2781cc4fa2df9299c50f3c4f31ecec1921a884867c7004264d12bffa1f18959675a81f98802897c63e46e10b44c6b4b7f83763eec62a3e91786734
|
Binary file
|
@@ -101,9 +101,21 @@ module LogStashCompilerLSCLGrammar; module LogStash; module Compiler; module LSC
|
|
101
101
|
else
|
102
102
|
[k,v]
|
103
103
|
end
|
104
|
-
}.reduce({}) do |hash,kv|
|
105
|
-
k,v = kv
|
106
|
-
hash[k]
|
104
|
+
}.reduce({}) do |hash, kv|
|
105
|
+
k, v = kv
|
106
|
+
existing = hash[k]
|
107
|
+
if existing.nil?
|
108
|
+
hash[k] = v
|
109
|
+
elsif existing.kind_of?(::Hash)
|
110
|
+
# For legacy reasons, a config can contain multiple `AST::Attribute`s with the same name
|
111
|
+
# and a hash-type value (e.g., "match" in the grok filter), which are merged into a single
|
112
|
+
# hash value; e.g., `{"match" => {"baz" => "bar"}, "match" => {"foo" => "bulb"}}` is
|
113
|
+
# interpreted as `{"match" => {"baz" => "bar", "foo" => "blub"}}`.
|
114
|
+
# (NOTE: this bypasses `AST::Hash`'s ability to detect duplicate keys)
|
115
|
+
hash[k] = existing.merge(v)
|
116
|
+
else
|
117
|
+
hash[k] = existing + v
|
118
|
+
end
|
107
119
|
hash
|
108
120
|
end
|
109
121
|
|
@@ -187,7 +199,7 @@ module LogStashCompilerLSCLGrammar; module LogStash; module Compiler; module LSC
|
|
187
199
|
|
188
200
|
def expr
|
189
201
|
validate!
|
190
|
-
::Hash[recursive_select(HashEntry).map(&:expr)]
|
202
|
+
jdsl.eValue(source_meta, ::Hash[recursive_select(HashEntry).map(&:expr)])
|
191
203
|
end
|
192
204
|
end
|
193
205
|
|
@@ -44,9 +44,9 @@ module LogStash
|
|
44
44
|
def multi_filter(events)
|
45
45
|
@metric_events_in.increment(events.size)
|
46
46
|
|
47
|
-
start_time = java.lang.System.
|
47
|
+
start_time = java.lang.System.nano_time
|
48
48
|
new_events = @filter.multi_filter(events)
|
49
|
-
@metric_events_time.increment(java.lang.System.
|
49
|
+
@metric_events_time.increment((java.lang.System.nano_time - start_time) / 1_000_000)
|
50
50
|
|
51
51
|
# There is no guarantee in the context of filter
|
52
52
|
# that EVENTS_INT == EVENTS_OUT, see the aggregates and
|
@@ -25,7 +25,7 @@ module LogStash module Instrument
|
|
25
25
|
|
26
26
|
def push(event)
|
27
27
|
increment_counters(1)
|
28
|
-
start_time = java.lang.System.
|
28
|
+
start_time = java.lang.System.nano_time
|
29
29
|
result = @write_client.push(event)
|
30
30
|
report_execution_time(start_time)
|
31
31
|
result
|
@@ -35,7 +35,7 @@ module LogStash module Instrument
|
|
35
35
|
|
36
36
|
def push_batch(batch)
|
37
37
|
increment_counters(batch.size)
|
38
|
-
start_time = java.lang.System.
|
38
|
+
start_time = java.lang.System.nano_time
|
39
39
|
result = @write_client.push_batch(batch)
|
40
40
|
report_execution_time(start_time)
|
41
41
|
result
|
@@ -50,7 +50,7 @@ module LogStash module Instrument
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def report_execution_time(start_time)
|
53
|
-
execution_time = java.lang.System.
|
53
|
+
execution_time = (java.lang.System.nano_time - start_time) / 1_000_000
|
54
54
|
@events_metrics_time.increment(execution_time)
|
55
55
|
@pipeline_metrics_time.increment(execution_time)
|
56
56
|
@plugin_events_metrics_time.increment(execution_time)
|
@@ -45,9 +45,9 @@ module LogStash class OutputDelegator
|
|
45
45
|
|
46
46
|
def multi_receive(events)
|
47
47
|
@in_counter.increment(events.length)
|
48
|
-
start_time = java.lang.System.
|
48
|
+
start_time = java.lang.System.nano_time
|
49
49
|
@strategy.multi_receive(events)
|
50
|
-
@time_metric.increment(java.lang.System.
|
50
|
+
@time_metric.increment((java.lang.System.nano_time - start_time) / 1_000_000)
|
51
51
|
@out_counter.increment(events.length)
|
52
52
|
end
|
53
53
|
|
data/lib/logstash/runner.rb
CHANGED
@@ -484,7 +484,10 @@ class LogStash::Runner < Clamp::StrictCommand
|
|
484
484
|
Stud::trap("INT") do
|
485
485
|
if @interrupted_once
|
486
486
|
logger.fatal(I18n.t("logstash.agent.forced_sigint"))
|
487
|
-
exit
|
487
|
+
# calling just Kernel.exit only raises SystemExit exception
|
488
|
+
# and doesn't guarantee the process will terminate
|
489
|
+
# We must call Kernel.exit! so java.lang.System.exit is called
|
490
|
+
exit!(1)
|
488
491
|
else
|
489
492
|
logger.warn(I18n.t("logstash.agent.sigint"))
|
490
493
|
Thread.new(logger) {|lg| sleep 5; lg.warn(I18n.t("logstash.agent.slow_shutdown")) }
|
data/lib/logstash/timestamp.rb
CHANGED
@@ -205,7 +205,7 @@ module LogStash; module Util
|
|
205
205
|
end
|
206
206
|
|
207
207
|
def start_clock
|
208
|
-
@inflight_clocks[Thread.current] = java.lang.System.
|
208
|
+
@inflight_clocks[Thread.current] = java.lang.System.nano_time
|
209
209
|
end
|
210
210
|
|
211
211
|
def stop_clock(batch)
|
@@ -214,7 +214,7 @@ module LogStash; module Util
|
|
214
214
|
# only stop (which also records) the metrics if the batch is non-empty.
|
215
215
|
# start_clock is now called at empty batch creation and an empty batch could
|
216
216
|
# stay empty all the way down to the close_batch call.
|
217
|
-
time_taken = java.lang.System.
|
217
|
+
time_taken = (java.lang.System.nano_time - @inflight_clocks[Thread.current]) / 1_000_000
|
218
218
|
@event_metric.report_time(:duration_in_millis, time_taken)
|
219
219
|
@pipeline_metric.report_time(:duration_in_millis, time_taken)
|
220
220
|
end
|
@@ -146,7 +146,7 @@ module LogStash; module Util
|
|
146
146
|
end
|
147
147
|
|
148
148
|
def start_clock
|
149
|
-
@inflight_clocks[Thread.current] = java.lang.System.
|
149
|
+
@inflight_clocks[Thread.current] = java.lang.System.nano_time
|
150
150
|
end
|
151
151
|
|
152
152
|
def stop_clock(batch)
|
@@ -155,7 +155,7 @@ module LogStash; module Util
|
|
155
155
|
# only stop (which also records) the metrics if the batch is non-empty.
|
156
156
|
# start_clock is now called at empty batch creation and an empty batch could
|
157
157
|
# stay empty all the way down to the close_batch call.
|
158
|
-
time_taken = java.lang.System.
|
158
|
+
time_taken = (java.lang.System.nano_time - @inflight_clocks[Thread.current]) / 1_000_000
|
159
159
|
@event_metric_time.increment(time_taken)
|
160
160
|
@pipeline_metric_time.increment(time_taken)
|
161
161
|
end
|
data/logstash-core.gemspec
CHANGED
@@ -64,7 +64,7 @@ Gem::Specification.new do |gem|
|
|
64
64
|
gem.add_runtime_dependency "i18n", "= 0.6.9" #(MIT license)
|
65
65
|
|
66
66
|
# filetools and rakelib
|
67
|
-
gem.add_runtime_dependency "minitar", "~> 0.
|
67
|
+
gem.add_runtime_dependency "minitar", "~> 0.6.1"
|
68
68
|
gem.add_runtime_dependency "rubyzip", "~> 1.2.1"
|
69
69
|
gem.add_runtime_dependency "thread_safe", "~> 0.3.5" #(Apache 2.0 license)
|
70
70
|
|
@@ -193,6 +193,91 @@ describe LogStash::Compiler do
|
|
193
193
|
expect(c_plugin).to ir_eql(j.iPlugin(INPUT, "generator", expected_plugin_args))
|
194
194
|
end
|
195
195
|
end
|
196
|
+
|
197
|
+
describe "a filter plugin that repeats a Hash directive" do
|
198
|
+
let(:source) { "input { } filter { #{plugin_source} } output { } " }
|
199
|
+
subject(:c_plugin) { compiled[:filter] }
|
200
|
+
|
201
|
+
let(:plugin_source) do
|
202
|
+
%q[
|
203
|
+
grok {
|
204
|
+
match => { "message" => "%{WORD:word}" }
|
205
|
+
match => { "examplefield" => "%{NUMBER:num}" }
|
206
|
+
break_on_match => false
|
207
|
+
}
|
208
|
+
]
|
209
|
+
end
|
210
|
+
|
211
|
+
let(:expected_plugin_args) do
|
212
|
+
{
|
213
|
+
"match" => {
|
214
|
+
"message" => "%{WORD:word}",
|
215
|
+
"examplefield" => "%{NUMBER:num}"
|
216
|
+
},
|
217
|
+
"break_on_match" => "false"
|
218
|
+
}
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should merge the contents of the individual directives" do
|
222
|
+
expect(c_plugin).to ir_eql(j.iPlugin(FILTER, "grok", expected_plugin_args))
|
223
|
+
end
|
224
|
+
|
225
|
+
describe "a filter plugin that has nested Hash directives" do
|
226
|
+
let(:source) { "input { } filter { #{plugin_source} } output { } " }
|
227
|
+
let(:plugin_source) do
|
228
|
+
<<-FILTER
|
229
|
+
matryoshka {
|
230
|
+
key => "%{host}"
|
231
|
+
filter_options => {
|
232
|
+
string => "string"
|
233
|
+
integer => 3
|
234
|
+
nested => { # <-- This is nested hash!
|
235
|
+
string => "nested-string"
|
236
|
+
integer => 7
|
237
|
+
"quoted-key-string" => "nested-quoted-key-string"
|
238
|
+
"quoted-key-integer" => 31
|
239
|
+
deep => { # <-- This is deeper nested hash!
|
240
|
+
string => "deeply-nested-string"
|
241
|
+
integer => 127
|
242
|
+
"quoted-key-string" => "deeply-nested-quoted-key-string"
|
243
|
+
"quoted-key-integer" => 8191
|
244
|
+
}
|
245
|
+
}
|
246
|
+
}
|
247
|
+
ttl => 5
|
248
|
+
}
|
249
|
+
FILTER
|
250
|
+
end
|
251
|
+
subject(:c_plugin) { compiled[:filter] }
|
252
|
+
|
253
|
+
let(:expected_plugin_args) do
|
254
|
+
{
|
255
|
+
"key" => "%{host}",
|
256
|
+
"filter_options" => {
|
257
|
+
"string" => "string",
|
258
|
+
"integer" => 3,
|
259
|
+
"nested" => { # <-- This is nested hash!
|
260
|
+
"string" => "nested-string",
|
261
|
+
"integer" => 7,
|
262
|
+
"quoted-key-string" => "nested-quoted-key-string",
|
263
|
+
"quoted-key-integer" => 31,
|
264
|
+
"deep" => { # <-- This is deeper nested hash!
|
265
|
+
"string" => "deeply-nested-string",
|
266
|
+
"integer" => 127,
|
267
|
+
"quoted-key-string" => "deeply-nested-quoted-key-string",
|
268
|
+
"quoted-key-integer" => 8191
|
269
|
+
}
|
270
|
+
}
|
271
|
+
},
|
272
|
+
"ttl" => 5
|
273
|
+
}
|
274
|
+
end
|
275
|
+
|
276
|
+
it "should produce a nested ::Hash object" do
|
277
|
+
expect(c_plugin).to ir_eql(j.iPlugin(FILTER, "matryoshka", expected_plugin_args))
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
196
281
|
end
|
197
282
|
|
198
283
|
context "inputs" do
|
data/versions-gem-copy.yml
CHANGED
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: 6.0.
|
4
|
+
version: 6.0.1
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -209,7 +209,7 @@ dependencies:
|
|
209
209
|
requirements:
|
210
210
|
- - "~>"
|
211
211
|
- !ruby/object:Gem::Version
|
212
|
-
version: 0.
|
212
|
+
version: 0.6.1
|
213
213
|
name: minitar
|
214
214
|
prerelease: false
|
215
215
|
type: :runtime
|
@@ -217,7 +217,7 @@ dependencies:
|
|
217
217
|
requirements:
|
218
218
|
- - "~>"
|
219
219
|
- !ruby/object:Gem::Version
|
220
|
-
version: 0.
|
220
|
+
version: 0.6.1
|
221
221
|
- !ruby/object:Gem::Dependency
|
222
222
|
requirement: !ruby/object:Gem::Requirement
|
223
223
|
requirements:
|
@@ -627,9 +627,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
627
627
|
version: '0'
|
628
628
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
629
629
|
requirements:
|
630
|
-
- - "
|
630
|
+
- - ">="
|
631
631
|
- !ruby/object:Gem::Version
|
632
|
-
version:
|
632
|
+
version: '0'
|
633
633
|
requirements:
|
634
634
|
- jar org.apache.logging.log4j:log4j-slf4j-impl, 2.6.2
|
635
635
|
- jar org.apache.logging.log4j:log4j-api, 2.6.2
|