logstash-codec-multiline 3.1.0 → 3.1.1
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/CHANGELOG.md +3 -0
- data/lib/logstash/codecs/identity_map_codec.rb +2 -1
- data/logstash-codec-multiline.gemspec +1 -1
- data/spec/codecs/identity_map_codec_spec.rb +16 -7
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2579876a333e816be9826e4d9f0f02f67634a4e4370f90cbcde04465f9d18b2a
|
4
|
+
data.tar.gz: 4c915fe445fe7b98e3ce584432a196951317d5b8fe2be41897e0234fd25868a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44f1bba5815ee431f52265a630628b41e5b0460a23d54fb1eccd3d21004f1fd441129434baf75616995d27ff28c2925d04510f83e36fd02d5af9e5a23dad3250
|
7
|
+
data.tar.gz: 3770b8ed35551d6c21a88f037b0ed94417b7fad630f5e680afa1bb93ca481d985d593c29af77e8537b40eb85adec5e7e2743dcf293c64aa4056a510056b573df
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
## 3.1.1
|
2
|
+
- Fix: avoid reusing per-identity codec instances for differing identities. Removes a very minor optimization so that stateful codecs like CSV can work reliably [#70](https://github.com/logstash-plugins/logstash-codec-multiline/pull/70)
|
3
|
+
|
1
4
|
## 3.1.0
|
2
5
|
- Feat: ECS compatibility [#69](https://github.com/logstash-plugins/logstash-codec-multiline/pull/69)
|
3
6
|
|
@@ -290,6 +290,7 @@ module LogStash module Codecs class IdentityMapCodec
|
|
290
290
|
end
|
291
291
|
|
292
292
|
def codec_without_usage_update(identity)
|
293
|
+
return base_codec if identity.nil? # mirror optimization in `stream_codec`
|
293
294
|
find_codec_value(identity).codec
|
294
295
|
end
|
295
296
|
|
@@ -336,7 +337,7 @@ module LogStash module Codecs class IdentityMapCodec
|
|
336
337
|
end
|
337
338
|
|
338
339
|
def codec_builder(hash, k)
|
339
|
-
codec =
|
340
|
+
codec = @base_codec.clone
|
340
341
|
codec.use_mapper_auto_flush if using_mapped_auto_flush?
|
341
342
|
compo = CodecValue.new(codec).tap do |o|
|
342
343
|
now = Time.now
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-codec-multiline'
|
4
|
-
s.version = '3.1.
|
4
|
+
s.version = '3.1.1'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Merges multiline messages into a single event"
|
7
7
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
|
@@ -29,7 +29,8 @@ describe LogStash::Codecs::IdentityMapCodec do
|
|
29
29
|
let(:stream1) { nil }
|
30
30
|
|
31
31
|
it "transparently refers to the original codec" do
|
32
|
-
|
32
|
+
resolved_codec = demuxer.codec_without_usage_update(stream1)
|
33
|
+
expect(resolved_codec).to eq(codec)
|
33
34
|
end
|
34
35
|
end
|
35
36
|
|
@@ -37,8 +38,8 @@ describe LogStash::Codecs::IdentityMapCodec do
|
|
37
38
|
|
38
39
|
before { demuxer.decode(arg1, stream1) }
|
39
40
|
|
40
|
-
it "the first identity refers to
|
41
|
-
expect(
|
41
|
+
it "the first identity refers to a copy of original codec" do
|
42
|
+
expect(codec1).to_not eql(codec)
|
42
43
|
end
|
43
44
|
end
|
44
45
|
|
@@ -212,8 +213,11 @@ describe LogStash::Codecs::IdentityMapCodec do
|
|
212
213
|
let(:demuxer) { described_class.new(codec).evict_timeout(1).cleaner_interval(1) }
|
213
214
|
it "the cleaner evicts the codec and flushes it first" do
|
214
215
|
demuxer.decode(Object.new, "stream1"){|*| 42}
|
216
|
+
mapped_codec = demuxer.codec_without_usage_update("stream1") # get before eviction
|
217
|
+
|
215
218
|
sleep(2.1)
|
216
|
-
|
219
|
+
|
220
|
+
expect(mapped_codec.trace_for(:flush)).to eq(42)
|
217
221
|
expect(demuxer.identity_map.keys).not_to include("stream1")
|
218
222
|
end
|
219
223
|
end
|
@@ -227,9 +231,12 @@ describe LogStash::Codecs::IdentityMapCodec do
|
|
227
231
|
end
|
228
232
|
it "the cleaner evicts the codec and flushes it first using the eviction_block" do
|
229
233
|
demuxer.decode(Object.new, "stream1"){|*| 42}
|
234
|
+
mapped_codec = demuxer.codec_without_usage_update("stream1") # get before eviction
|
235
|
+
|
230
236
|
sleep(2.1)
|
231
|
-
|
232
|
-
expect(
|
237
|
+
|
238
|
+
expect(mapped_codec.trace_for(:flush)).to eq(24)
|
239
|
+
expect(demuxer.identity_map.keys).to_not include("stream1")
|
233
240
|
end
|
234
241
|
end
|
235
242
|
end
|
@@ -251,7 +258,9 @@ describe LogStash::Codecs::IdentityMapCodec do
|
|
251
258
|
it "no events are generated (the line is buffered)" do
|
252
259
|
expect(imc.identity_count).to eq(1)
|
253
260
|
expect(queue.size).to eq(0)
|
254
|
-
|
261
|
+
|
262
|
+
mapped_codec = imc.codec_without_usage_update(identity)
|
263
|
+
expect(mapped_codec.internal_buffer[0]).to eq("foo")
|
255
264
|
end
|
256
265
|
end
|
257
266
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-codec-multiline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -20,8 +20,8 @@ dependencies:
|
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '2.99'
|
22
22
|
name: logstash-core-plugin-api
|
23
|
-
type: :runtime
|
24
23
|
prerelease: false
|
24
|
+
type: :runtime
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
@@ -37,8 +37,8 @@ dependencies:
|
|
37
37
|
- !ruby/object:Gem::Version
|
38
38
|
version: '1.3'
|
39
39
|
name: logstash-mixin-ecs_compatibility_support
|
40
|
-
type: :runtime
|
41
40
|
prerelease: false
|
41
|
+
type: :runtime
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
@@ -51,8 +51,8 @@ dependencies:
|
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '1.0'
|
53
53
|
name: logstash-mixin-event_support
|
54
|
-
type: :runtime
|
55
54
|
prerelease: false
|
55
|
+
type: :runtime
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
@@ -65,8 +65,8 @@ dependencies:
|
|
65
65
|
- !ruby/object:Gem::Version
|
66
66
|
version: '0'
|
67
67
|
name: logstash-patterns-core
|
68
|
-
type: :runtime
|
69
68
|
prerelease: false
|
69
|
+
type: :runtime
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - ">="
|
@@ -79,8 +79,8 @@ dependencies:
|
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: 0.11.1
|
81
81
|
name: jls-grok
|
82
|
-
type: :runtime
|
83
82
|
prerelease: false
|
83
|
+
type: :runtime
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
@@ -93,8 +93,8 @@ dependencies:
|
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: '0'
|
95
95
|
name: concurrent-ruby
|
96
|
-
type: :runtime
|
97
96
|
prerelease: false
|
97
|
+
type: :runtime
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - ">="
|
@@ -107,8 +107,8 @@ dependencies:
|
|
107
107
|
- !ruby/object:Gem::Version
|
108
108
|
version: '0'
|
109
109
|
name: logstash-devutils
|
110
|
-
type: :development
|
111
110
|
prerelease: false
|
111
|
+
type: :development
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
114
|
- - ">="
|
@@ -121,8 +121,8 @@ dependencies:
|
|
121
121
|
- !ruby/object:Gem::Version
|
122
122
|
version: '0'
|
123
123
|
name: insist
|
124
|
-
type: :development
|
125
124
|
prerelease: false
|
125
|
+
type: :development
|
126
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
128
|
- - ">="
|
@@ -173,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
173
|
- !ruby/object:Gem::Version
|
174
174
|
version: '0'
|
175
175
|
requirements: []
|
176
|
-
rubygems_version: 3.
|
176
|
+
rubygems_version: 3.1.6
|
177
177
|
signing_key:
|
178
178
|
specification_version: 4
|
179
179
|
summary: Merges multiline messages into a single event
|