logstash-codec-multiline 2.0.3 → 2.0.4
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 +9 -2
- data/logstash-codec-multiline.gemspec +2 -2
- data/spec/codecs/identity_map_codec_spec.rb +20 -5
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd43c9171bdc01db5f0d381b4c95994e7b6073d4
|
4
|
+
data.tar.gz: 07230a73ec9e7cb9ccddb94921d540323e4d0e86
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2aec937d4fdf0bbde23c38dee5544198ee8bb5c89efe146bf96b24d4e77bf0f004ba197508168e37f700bd8ebcd913a4719a766b7ce7c7c50ce526b9f9d83623
|
7
|
+
data.tar.gz: 3174e737bc7922cbafec8cda5f1ee85ec9c1691e6918e5e61ab20da35167b6c9969147a4ff869e52057a8385190edd2058699fbc636bf5e69f3b7ccba8a60983
|
data/CHANGELOG.md
CHANGED
@@ -101,7 +101,8 @@ module LogStash module Codecs class IdentityMapCodec
|
|
101
101
|
@max_identities = MAX_IDENTITIES
|
102
102
|
@evict_timeout = EVICT_TIMEOUT
|
103
103
|
@cleaner = MapCleaner.new(self, CLEANER_INTERVAL)
|
104
|
-
@decode_block = lambda {|*| }
|
104
|
+
@decode_block = lambda {|*| true }
|
105
|
+
@eviction_block = nil
|
105
106
|
end
|
106
107
|
|
107
108
|
# ==============================================
|
@@ -126,6 +127,12 @@ module LogStash module Codecs class IdentityMapCodec
|
|
126
127
|
@cleaner = MapCleaner.new(self, interval.to_i)
|
127
128
|
self
|
128
129
|
end
|
130
|
+
|
131
|
+
# used to add a non-default eviction block
|
132
|
+
def eviction_block(block)
|
133
|
+
@eviction_block = block
|
134
|
+
self
|
135
|
+
end
|
129
136
|
# end Constructional/builder methods
|
130
137
|
# ==============================================
|
131
138
|
|
@@ -184,7 +191,7 @@ module LogStash module Codecs class IdentityMapCodec
|
|
184
191
|
# contents should not mutate during this call
|
185
192
|
identity_map.delete_if do |identity, compo|
|
186
193
|
if (flag = compo.timeout <= cut_off)
|
187
|
-
compo.codec.flush(
|
194
|
+
compo.codec.flush(&(@eviction_block || @decode_block))
|
188
195
|
end
|
189
196
|
flag
|
190
197
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-codec-multiline'
|
4
|
-
s.version = '2.0.
|
4
|
+
s.version = '2.0.4'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "The multiline codec will collapse multiline messages and merge them 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/plugin install gemname. This gem is not a stand-alone program"
|
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.metadata = { "logstash_plugin" => "true", "logstash_group" => "codec" }
|
21
21
|
|
22
22
|
# Gem dependencies
|
23
|
-
s.add_runtime_dependency "logstash-core", ">= 2.0.0
|
23
|
+
s.add_runtime_dependency "logstash-core", ">= 2.0.0", "< 3.0.0"
|
24
24
|
|
25
25
|
s.add_runtime_dependency 'logstash-patterns-core'
|
26
26
|
s.add_runtime_dependency 'jls-grok', '~> 0.11.1'
|
@@ -18,7 +18,7 @@ class IdentityMapCodecTracer
|
|
18
18
|
def clone() self.class.new; end
|
19
19
|
def decode(data) @tracer.push [:decode, data]; end
|
20
20
|
def encode(event) @tracer.push [:encode, event]; end
|
21
|
-
def flush(&block) @tracer.push [:flush,
|
21
|
+
def flush(&block) @tracer.push [:flush, block.call]; end
|
22
22
|
def close() @tracer.push [:close, true]; end
|
23
23
|
def logger() @logger ||= LogTracer.new; end
|
24
24
|
|
@@ -175,7 +175,7 @@ describe LogStash::Codecs::IdentityMapCodec do
|
|
175
175
|
sleep(1.2)
|
176
176
|
demuxer.decode(Object.new, "stream2")
|
177
177
|
expect(demuxer.identity_count).to eq(limit)
|
178
|
-
expect { demuxer.decode(Object.new, "stream4") }.not_to raise_error
|
178
|
+
expect { demuxer.decode(Object.new, "stream4"){|*| 42 } }.not_to raise_error
|
179
179
|
end
|
180
180
|
end
|
181
181
|
end
|
@@ -195,12 +195,27 @@ describe LogStash::Codecs::IdentityMapCodec do
|
|
195
195
|
end
|
196
196
|
|
197
197
|
describe "codec eviction" do
|
198
|
-
let(:demuxer) { described_class.new(codec).evict_timeout(1).cleaner_interval(1) }
|
199
198
|
context "when an identity has become stale" do
|
199
|
+
let(:demuxer) { described_class.new(codec).evict_timeout(1).cleaner_interval(1) }
|
200
200
|
it "the cleaner evicts the codec and flushes it first" do
|
201
|
-
demuxer.decode(Object.new, "stream1")
|
201
|
+
demuxer.decode(Object.new, "stream1"){|*| 42}
|
202
|
+
sleep(2.1)
|
203
|
+
expect(codec.trace_for(:flush)).to eq(42)
|
204
|
+
expect(demuxer.identity_map.keys).not_to include("stream1")
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
context "when an identity has become stale and an evition block is set" do
|
209
|
+
let(:demuxer) do
|
210
|
+
described_class.new(codec)
|
211
|
+
.evict_timeout(1)
|
212
|
+
.cleaner_interval(1)
|
213
|
+
.eviction_block(lambda {|*| 24} )
|
214
|
+
end
|
215
|
+
it "the cleaner evicts the codec and flushes it first using the eviction_block" do
|
216
|
+
demuxer.decode(Object.new, "stream1"){|*| 42}
|
202
217
|
sleep(2.1)
|
203
|
-
expect(codec.trace_for(:flush)).to
|
218
|
+
expect(codec.trace_for(:flush)).to eq(24)
|
204
219
|
expect(demuxer.identity_map.keys).not_to include("stream1")
|
205
220
|
end
|
206
221
|
end
|
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: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logstash-core
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.0.0
|
19
|
+
version: 2.0.0
|
20
20
|
- - <
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 3.0.0
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
requirements:
|
25
25
|
- - '>='
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 2.0.0
|
27
|
+
version: 2.0.0
|
28
28
|
- - <
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: 3.0.0
|
@@ -78,18 +78,18 @@ executables: []
|
|
78
78
|
extensions: []
|
79
79
|
extra_rdoc_files: []
|
80
80
|
files:
|
81
|
-
- lib/logstash/codecs/identity_map_codec.rb
|
82
|
-
- lib/logstash/codecs/multiline.rb
|
83
|
-
- spec/codecs/multiline_spec.rb
|
84
|
-
- spec/codecs/identity_map_codec_spec.rb
|
85
|
-
- spec/supports/helpers.rb
|
86
|
-
- logstash-codec-multiline.gemspec
|
87
|
-
- README.md
|
88
81
|
- CHANGELOG.md
|
89
82
|
- CONTRIBUTORS
|
90
83
|
- Gemfile
|
91
84
|
- LICENSE
|
92
85
|
- NOTICE.TXT
|
86
|
+
- README.md
|
87
|
+
- lib/logstash/codecs/identity_map_codec.rb
|
88
|
+
- lib/logstash/codecs/multiline.rb
|
89
|
+
- logstash-codec-multiline.gemspec
|
90
|
+
- spec/codecs/identity_map_codec_spec.rb
|
91
|
+
- spec/codecs/multiline_spec.rb
|
92
|
+
- spec/supports/helpers.rb
|
93
93
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
94
94
|
licenses:
|
95
95
|
- Apache License (2.0)
|
@@ -112,11 +112,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
112
|
version: '0'
|
113
113
|
requirements: []
|
114
114
|
rubyforge_project:
|
115
|
-
rubygems_version: 2.
|
115
|
+
rubygems_version: 2.4.8
|
116
116
|
signing_key:
|
117
117
|
specification_version: 4
|
118
118
|
summary: The multiline codec will collapse multiline messages and merge them into a single event.
|
119
119
|
test_files:
|
120
|
-
- spec/codecs/multiline_spec.rb
|
121
120
|
- spec/codecs/identity_map_codec_spec.rb
|
121
|
+
- spec/codecs/multiline_spec.rb
|
122
122
|
- spec/supports/helpers.rb
|