logstash-filter-dns 3.1.3 → 3.1.4

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: 42e105e5fc1ecf91266bcd1497c8ea82ac0b0224b26980c9c4cce814b1f2ec14
4
- data.tar.gz: 96585aa3899ec180dc844cd4b9e4197e42052fd6054de5e206d1c9c11e2efc1d
3
+ metadata.gz: c66e9cc4c24075018788af9b4c55806d560baef3fb0650eba76ff5e8bb3dcb3e
4
+ data.tar.gz: 0aefc64b12ccc9febf31e874b3eb2e3491f4876dba593e74f390c5378b947b3b
5
5
  SHA512:
6
- metadata.gz: 61b22319a08350fb1c33199332217bf54cee91989e1a2bfc03cf80c7c2a5e785056da4d0f0a2dafdcd2821147982f5c50e638e79478f1b8f7b1a0ff507dfdd33
7
- data.tar.gz: bb8fa5118a9a2ee2f32f736ecc7fccbea4362dc2966edb36f50e40eb8eb1569af33a1df9945c027a6a5cefae8ec718b3ae98acf7bca772dbf220ff7bf1ff01cb
6
+ metadata.gz: 0eb13a2bb6ba82cabfc2c400efa9f7e64f78360a37c1330736eee4cc556192ef8451c98b6744d7eec4482dffcd9c2c5b194e55de36b33eb2f94f3e9dadb2a3ef
7
+ data.tar.gz: 6165e2266bddf1bd33cead92f8caf6faadf85a22b4352ecd520fd77b583cfd12f90958b99542c7357bccb4e884868546fe162508673cd96e436f9c01c088a42a
@@ -1,3 +1,7 @@
1
+ ## 3.1.4
2
+ - Replaced Timeout::timeout block with `Resolv::DNS::timeouts=` [#62](https://github.com/logstash-plugins/logstash-filter-dns/pull/62)
3
+ - Added restriction for ruby version > 2.0, effectively making Logstash 6.x+ a requirement [#62](https://github.com/logstash-plugins/logstash-filter-dns/pull/62)
4
+
1
5
  ## 3.1.3
2
6
  - Fixed an issue where each missed lookup could result in unreclaimed memory ([jruby bug](https://github.com/jruby/jruby/issues/6015)) by handling lookup misses without raising exceptions [#61](https://github.com/logstash-plugins/logstash-filter-dns/pull/61)
3
7
 
@@ -3,7 +3,6 @@ require "logstash/filters/base"
3
3
  require "logstash/namespace"
4
4
  require "lru_redux"
5
5
  require "resolv"
6
- require "timeout"
7
6
  require "logstash/filters/dns/resolv_patch"
8
7
 
9
8
  java_import 'java.net.IDN'
@@ -29,7 +28,6 @@ java_import 'java.net.IDN'
29
28
  # milliseconds, the maximum throughput you can achieve with a single filter
30
29
  # worker is 500 events per second (1000 milliseconds / 2 milliseconds).
31
30
  class LogStash::Filters::DNS < LogStash::Filters::Base
32
- # TODO(sissel): The timeout limitation does seem to be fixed in here: http://redmine.ruby-lang.org/issues/5100 # but isn't currently in JRuby.
33
31
  # TODO(sissel): make `action` required? This was always the intent, but it
34
32
  # due to a typo it was never enforced. Thus the default behavior in past
35
33
  # versions was `append` by accident.
@@ -94,7 +92,7 @@ class LogStash::Filters::DNS < LogStash::Filters::Base
94
92
  public
95
93
  def register
96
94
  if @nameserver.nil? && @hostsfile.nil?
97
- @resolv = Resolv.new
95
+ @resolv = Resolv.new(default_resolvers)
98
96
  else
99
97
  @resolv = Resolv.new(build_resolvers)
100
98
  end
@@ -125,6 +123,20 @@ class LogStash::Filters::DNS < LogStash::Filters::Base
125
123
 
126
124
  private
127
125
 
126
+ def default_resolvers
127
+ [::Resolv::Hosts.new, default_dns_resolver]
128
+ end
129
+
130
+ def default_dns_resolver
131
+ dns_resolver(nil)
132
+ end
133
+
134
+ def dns_resolver(args=nil)
135
+ dns_resolver = ::Resolv::DNS.new(args)
136
+ dns_resolver.timeouts = @timeout
137
+ dns_resolver
138
+ end
139
+
128
140
  def build_resolvers
129
141
  build_user_host_resolvers.concat([::Resolv::Hosts.new]).concat(build_user_dns_resolver)
130
142
  end
@@ -136,8 +148,7 @@ class LogStash::Filters::DNS < LogStash::Filters::Base
136
148
 
137
149
  def build_user_dns_resolver
138
150
  return [] if @nameserver.nil? || @nameserver.empty?
139
-
140
- [::Resolv::DNS.new(normalised_nameserver)]
151
+ [dns_resolver(normalised_nameserver)]
141
152
  end
142
153
 
143
154
  def normalised_nameserver
@@ -201,7 +212,7 @@ class LogStash::Filters::DNS < LogStash::Filters::Base
201
212
  :field => field, :value => raw)
202
213
  return
203
214
  end
204
- rescue Resolv::ResolvTimeout, Timeout::Error
215
+ rescue Resolv::ResolvTimeout
205
216
  @failed_cache[raw] = true if @failed_cache
206
217
  @logger.warn("DNS: timeout on resolving the hostname.",
207
218
  :field => field, :value => raw)
@@ -282,7 +293,7 @@ class LogStash::Filters::DNS < LogStash::Filters::Base
282
293
  :field => field, :value => raw)
283
294
  return
284
295
  end
285
- rescue Resolv::ResolvTimeout, Timeout::Error
296
+ rescue Resolv::ResolvTimeout
286
297
  @failed_cache[raw] = true if @failed_cache
287
298
  @logger.warn("DNS: timeout on resolving address.",
288
299
  :field => field, :value => raw)
@@ -323,10 +334,8 @@ class LogStash::Filters::DNS < LogStash::Filters::Base
323
334
  def retriable_request(&block)
324
335
  tries = 0
325
336
  begin
326
- Timeout::timeout(@timeout) do
327
- block.call
328
- end
329
- rescue Timeout::Error, SocketError
337
+ block.call
338
+ rescue Resolv::ResolvTimeout, SocketError
330
339
  if tries < @max_retries
331
340
  tries = tries + 1
332
341
  retry
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-dns'
4
- s.version = '3.1.3'
4
+ s.version = '3.1.4'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "Performs a standard or reverse DNS lookup"
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"
@@ -10,6 +10,9 @@ Gem::Specification.new do |s|
10
10
  s.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html"
11
11
  s.require_paths = ["lib"]
12
12
 
13
+ # This effectively requires Logstash >= 6.x
14
+ s.required_ruby_version = '>= 2.0.0'
15
+
13
16
  # Files
14
17
  s.files = Dir["lib/**/*","spec/**/*","*.gemspec","*.md","CONTRIBUTORS","Gemfile","LICENSE","NOTICE.TXT", "vendor/jar-dependencies/**/*.jar", "vendor/jar-dependencies/**/*.rb", "VERSION", "docs/**/*"]
15
18
 
@@ -2,6 +2,8 @@
2
2
  require "logstash/devutils/rspec/spec_helper"
3
3
  require "logstash/filters/dns"
4
4
  require "resolv"
5
+ require "logstash/filters/dns/resolv_patch"
6
+
5
7
 
6
8
  describe LogStash::Filters::DNS do
7
9
  describe "with stubbed Resolv" do
@@ -377,7 +379,7 @@ describe LogStash::Filters::DNS do
377
379
 
378
380
  context "when failing permanently" do
379
381
  before(:each) do
380
- allow(subject).to receive(:getaddress).and_raise(Timeout::Error)
382
+ allow(subject).to receive(:getaddress).and_raise(Resolv::ResolvTimeout)
381
383
  end
382
384
 
383
385
  it "should fail a resolve after max_retries" do
@@ -385,7 +387,24 @@ describe LogStash::Filters::DNS do
385
387
  subject.filter(event)
386
388
  end
387
389
 
388
- it "should cache the timeout" do
390
+ it "should cache the failure" do
391
+ expect do
392
+ subject.filter(event)
393
+ end.to change { subject.failed_cache[host] }.from(nil).to(true)
394
+ end
395
+ end
396
+
397
+ context "when unable to resolve an address" do
398
+ before(:each) do
399
+ allow(subject).to receive(:getaddress).and_return(nil)
400
+ end
401
+
402
+ it "should fail a resolve after max_retries" do
403
+ expect(subject).to receive(:getaddress).once
404
+ subject.filter(event)
405
+ end
406
+
407
+ it "should cache the failure" do
389
408
  expect do
390
409
  subject.filter(event)
391
410
  end.to change { subject.failed_cache[host] }.from(nil).to(true)
@@ -406,7 +425,7 @@ describe LogStash::Filters::DNS do
406
425
  @try ||= 0
407
426
  if @try < 2
408
427
  @try = @try + 1
409
- raise Timeout::Error
428
+ raise SocketError
410
429
  else
411
430
  "127.0.0.1"
412
431
  end
@@ -527,7 +546,7 @@ describe LogStash::Filters::DNS do
527
546
  # Resolv::DNS.new will be called without arguments thus reading /etc/resolv.conf
528
547
  # for its configuration which is the desired behaviour for backward compatibility
529
548
 
530
- expect(Resolv::DNS).to receive(:new).once.with(no_args)
549
+ expect(Resolv::DNS).to receive(:new).once.with(nil).and_call_original
531
550
  dns_filter_plugin.register
532
551
  end
533
552
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-dns
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.3
4
+ version: 3.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-06 00:00:00.000000000 Z
11
+ date: 2020-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -93,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 2.0.0
97
97
  required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - ">="