logstash-filter-grok 3.2.0 → 3.2.1

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
  SHA1:
3
- metadata.gz: a34c685833867a04238f8544429c5938cd58a696
4
- data.tar.gz: 096eb04af33607c064d210c9e007ffbfccb3a9fa
3
+ metadata.gz: 26ce02b49c1b5bf27a1ea5470cef3b2875fa73e6
4
+ data.tar.gz: 936454b6cf21105471e21ed161835d722a9092c2
5
5
  SHA512:
6
- metadata.gz: b7aacf53f2a102c96c65597710b529ef0acef10730358ae4c5d4fd32c9dd053e5f226a2696535921fccc75504f205c8580762287ead404d413359bac8e9758f1
7
- data.tar.gz: 61bfb20dbb5452b957e08e82b5ad54d8b1f89d50dcdd2d0ba6bd37f7e06b2f630e2d92247ddd9e81de7fcefba720f12a3a32b5a21edb99eafb9d6a57331b7b54
6
+ metadata.gz: 2723677afeb369af6e1555b308b11c24ee4cb9f6c1baf6b74fc2fdedcff3e4d09702bcabf1532a2738134850eaa9f4c9821daf3f230df02f0a2c8bed66f701eb
7
+ data.tar.gz: 2625317a10db35a9de2905ba534bfa80bbf7d6df031122077e180e252d0dc20ea1bfdaa46e62ada24894150502275c007c6706ef3433bb5a02735c45189b26c2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 3.2.1
2
+ - Fix race condition in TimeoutEnforcer that could cause crashes
3
+ - Fix shutdown code to close cleanly and properly close the enforcer
4
+
1
5
  ## 3.2.0
2
6
  - Add new timeout options to cancel grok execution if a threshold time is exceeded
3
7
 
@@ -222,6 +222,8 @@
222
222
  # will be parsed and `hello world` will overwrite the original message.
223
223
  config :overwrite, :validate => :array, :default => []
224
224
 
225
+ attr_reader :timeout_enforcer
226
+
225
227
  # Register default pattern paths
226
228
  @@patterns_path ||= Set.new
227
229
  @@patterns_path += [
@@ -390,7 +392,7 @@
390
392
  end # def add_patterns_from_files
391
393
 
392
394
  def close
393
- @timeout_handler.stop!
395
+ @timeout_enforcer.stop!
394
396
  end
395
397
 
396
398
  end # class LogStash::Filters::Grok
@@ -1,4 +1,6 @@
1
1
  class LogStash::Filters::Grok::TimeoutEnforcer
2
+ attr_reader :running
3
+
2
4
  def initialize(logger, timeout_nanos)
3
5
  @logger = logger
4
6
  @running = true
@@ -42,12 +44,14 @@ class LogStash::Filters::Grok::TimeoutEnforcer
42
44
  end
43
45
 
44
46
  def cancel_timed_out!
45
- @threads_to_start_time.each do |thread,start_time|
46
- now = java.lang.System.nanoTime # save ourselves some nanotime calls
47
- elapsed = java.lang.System.nanoTime - start_time
48
- if elapsed > @timeout_nanos
49
- elapsed_millis = elapsed / 1000
50
- thread.raise(::LogStash::Filters::Grok::TimeoutException.new(elapsed_millis))
47
+ @timer_mutex.synchronize do
48
+ @threads_to_start_time.each do |thread,start_time|
49
+ now = java.lang.System.nanoTime # save ourselves some nanotime calls
50
+ elapsed = java.lang.System.nanoTime - start_time
51
+ if elapsed > @timeout_nanos
52
+ elapsed_millis = elapsed / 1000
53
+ thread.raise(::LogStash::Filters::Grok::TimeoutException.new(elapsed_millis))
54
+ end
51
55
  end
52
56
  end
53
57
  end
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-grok'
4
- s.version = '3.2.0'
4
+ s.version = '3.2.1'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "Parse arbitrary text and structure it."
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"
@@ -821,4 +821,23 @@ describe LogStash::Filters::Grok do
821
821
  end
822
822
  end
823
823
 
824
+ describe "closing" do
825
+ subject(:plugin) do
826
+ ::LogStash::Filters::Grok.new("match" => {"message" => "A"})
827
+ end
828
+
829
+ before do
830
+ plugin.register
831
+ end
832
+
833
+ it "should close cleanly" do
834
+ expect { plugin.do_close }.not_to raise_error
835
+ end
836
+
837
+ it "should stop the timeout enforcer" do
838
+ plugin.do_close
839
+ expect(plugin.timeout_enforcer.running).to be false
840
+ end
841
+ end
842
+
824
843
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-grok
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-02 00:00:00.000000000 Z
11
+ date: 2016-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement