logstash-codec-multiline 2.0.3 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|