logstash-filter-dns 3.1.3 → 3.1.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 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
  - - ">="