logstash-input-beats 6.8.3-java → 6.9.0-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d5d648febef34d9834c245aa2bf0e0df2c911dc3afc1ce3ba8fb1ee41b2117ff
4
- data.tar.gz: acd87cf69f58bc303aa2b3181160d816f9302bf196caf6d84ac1206e02bb3fc1
3
+ metadata.gz: 01fefa4a08a49d5b8327676fb8e9699f4dac1a656c4af806bfd52ab8b4765525
4
+ data.tar.gz: 5088c69b9ee6e5af1fd1eca90bafc1666834a6fa33759d7f5ec11e55d118b095
5
5
  SHA512:
6
- metadata.gz: 930b79caab311cbf62bf7ed51409d2e6458f3eb162db4c3de338d14a56e06b9934312a5bffc23e941952699d5cb86036fe86b4375231913b3665636ff41d6e88
7
- data.tar.gz: 6b2bd8ddc4d0127998cd1c877ea15b575144730eb788caad210b033efa45fbc402dfbad5bc41e8eb21b5ecae239fcbf46c47ecdbf93bc15bd649f2422b494697
6
+ metadata.gz: 397e56a448f16eb3b0c149924b84474c494d680ebf9f5b51fbda46fc11d2cd3ab94896be435dde4e094b7b737fde9623d44feb2e922f74f50456420137d63948
7
+ data.tar.gz: c68a662dbb9494535b3200c2a0866da4fb2703667be266868b4214755b32e169ec1fee640a2c54b12c4b2a999f8d3b58e7126726eadbfbf66888d1d1664bec24
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 6.9.0
2
+ - Improvements on plugin's shutdown [#500](https://github.com/logstash-plugins/logstash-input-beats/pull/500)
3
+ - Fix: avoid plugin crash when connection terminated but processing the message
4
+ - Graceful shutdown: close acceptor group (incoming socket handler) first, ask and wait for the executors which have pending tasks, better message handling when executors terminated
5
+
6
+ ## 6.8.4
7
+ - Fixed to populate the `@metadata` fields even if the source's metadata value is `nil` [#502](https://github.com/logstash-plugins/logstash-input-beats/pull/502)
8
+
1
9
  ## 6.8.3
2
10
  - bump netty to 4.1.109 [#495](https://github.com/logstash-plugins/logstash-input-beats/pull/495)
3
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 6.8.3
1
+ 6.9.0
@@ -2,12 +2,12 @@
2
2
  require "logstash/inputs/beats"
3
3
 
4
4
  module LogStash module Inputs class Beats
5
- # Use the new callback based approch instead of using blocks
5
+ # Use the new callback based approach instead of using blocks
6
6
  # so we can retain some context of the execution, and make it easier to test
7
7
  class CodecCallbackListener
8
8
  attr_accessor :data
9
9
  # The path acts as the `stream_identity`,
10
- # usefull when the clients is reading multiples files
10
+ # useful when the clients is reading multiples files
11
11
  attr_accessor :path
12
12
 
13
13
  def initialize(data, hash, path, transformer, queue)
@@ -35,7 +35,7 @@ module LogStash module Inputs class Beats
35
35
 
36
36
  if @input.include_source_metadata?
37
37
  ip_address = ip_address(ctx)
38
- unless ip_address.nil? || hash['@metadata'].nil?
38
+ unless ip_address.nil?
39
39
  set_nested(hash, @input.field_hostip, ip_address)
40
40
  end
41
41
  end
@@ -49,11 +49,18 @@ module LogStash module Inputs class Beats
49
49
  @nocodec_transformer.transform(event)
50
50
  @queue << event
51
51
  else
52
- codec(ctx).accept(CodecCallbackListener.new(target_field,
53
- hash,
54
- message.getIdentityStream(),
55
- @codec_transformer,
56
- @queue))
52
+ current_codec = codec(ctx)
53
+ if current_codec
54
+ current_codec.accept(CodecCallbackListener.new(target_field,
55
+ hash,
56
+ message.getIdentityStream(),
57
+ @codec_transformer,
58
+ @queue))
59
+ else
60
+ # the possible cases: connection closed or exception with a connection
61
+ # let client retry
62
+ input.logger.warn("No codec available to process the message. This may due to connection termination and message was being processed.")
63
+ end
57
64
  end
58
65
  end
59
66
 
@@ -167,7 +174,7 @@ module LogStash module Inputs class Beats
167
174
  field_ref = Java::OrgLogstash::FieldReference.from(field_name)
168
175
  # create @metadata sub-hash if needed
169
176
  if field_ref.type == Java::OrgLogstash::FieldReference::META_CHILD
170
- nesting_hash = hash["@metadata"]
177
+ nesting_hash = hash['@metadata'] ||= {}
171
178
  else
172
179
  nesting_hash = hash
173
180
  end
@@ -8,4 +8,4 @@ require_jar('io.netty', 'netty-transport', '4.1.109.Final')
8
8
  require_jar('io.netty', 'netty-handler', '4.1.109.Final')
9
9
  require_jar('io.netty', 'netty-transport-native-unix-common', '4.1.109.Final')
10
10
  require_jar('org.javassist', 'javassist', '3.24.0-GA')
11
- require_jar('org.logstash.beats', 'logstash-input-beats', '6.8.3')
11
+ require_jar('org.logstash.beats', 'logstash-input-beats', '6.9.0')
@@ -109,6 +109,15 @@ shared_examples "when the message is from any libbeat" do |ecs_compatibility, ho
109
109
  expect(event.get(host_field_name)).to eq(nil)
110
110
  end
111
111
  end
112
+
113
+ context 'when @metadata is nil' do
114
+ let(:data) { super().reject { |k| '@metadata'.eql?(k) } }
115
+
116
+ it 'extracts event with the host field metadata set' do
117
+ subject.onNewMessage(ctx, message)
118
+ expect(queue.pop.get(host_field_name)).to eq(ip_address)
119
+ end
120
+ end
112
121
  end
113
122
 
114
123
  describe LogStash::Inputs::Beats::MessageListener do
@@ -209,6 +218,24 @@ describe LogStash::Inputs::Beats::MessageListener do
209
218
  end
210
219
  end
211
220
 
221
+ context "when connection is terminated" do
222
+ let(:message) { MockMessage.new("message from Mars", { "message" => "hello world", "@metadata" => {} } )}
223
+
224
+ it "handles without crashing" do
225
+ subject.onConnectionClose(ctx)
226
+ expect(subject.connections_list[ctx]).to be nil
227
+
228
+ expect( input.logger ).to receive(:warn) do |message |
229
+ expect( message ).to match /No codec available to process the message. This may due to connection termination and message was being processed./
230
+ end
231
+
232
+ subject.onNewMessage(ctx, message)
233
+ # doesn't push to queue, so should be nil
234
+ event = queue.pop
235
+ expect(event.get("message")).to be nil
236
+ end
237
+ end
238
+
212
239
  it_behaves_like "when the message is from any libbeat", :disabled, "[@metadata][ip_address]"
213
240
  it_behaves_like "when the message is from any libbeat", :v1, "[@metadata][input][beats][host][ip]"
214
241
  it_behaves_like "when the message is from any libbeat", :v8, "[@metadata][input][beats][host][ip]"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-beats
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.8.3
4
+ version: 6.9.0
5
5
  platform: java
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-23 00:00:00.000000000 Z
11
+ date: 2024-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -326,7 +326,7 @@ files:
326
326
  - vendor/jar-dependencies/io/netty/netty-transport-native-unix-common/4.1.109.Final/netty-transport-native-unix-common-4.1.109.Final.jar
327
327
  - vendor/jar-dependencies/io/netty/netty-transport/4.1.109.Final/netty-transport-4.1.109.Final.jar
328
328
  - vendor/jar-dependencies/org/javassist/javassist/3.24.0-GA/javassist-3.24.0-GA.jar
329
- - vendor/jar-dependencies/org/logstash/beats/logstash-input-beats/6.8.3/logstash-input-beats-6.8.3.jar
329
+ - vendor/jar-dependencies/org/logstash/beats/logstash-input-beats/6.9.0/logstash-input-beats-6.9.0.jar
330
330
  homepage: http://www.elastic.co/guide/en/logstash/current/index.html
331
331
  licenses:
332
332
  - Apache License (2.0)