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 +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/logstash/filters/dns.rb +20 -11
- data/logstash-filter-dns.gemspec +4 -1
- data/spec/filters/dns_spec.rb +23 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c66e9cc4c24075018788af9b4c55806d560baef3fb0650eba76ff5e8bb3dcb3e
|
4
|
+
data.tar.gz: 0aefc64b12ccc9febf31e874b3eb2e3491f4876dba593e74f390c5378b947b3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0eb13a2bb6ba82cabfc2c400efa9f7e64f78360a37c1330736eee4cc556192ef8451c98b6744d7eec4482dffcd9c2c5b194e55de36b33eb2f94f3e9dadb2a3ef
|
7
|
+
data.tar.gz: 6165e2266bddf1bd33cead92f8caf6faadf85a22b4352ecd520fd77b583cfd12f90958b99542c7357bccb4e884868546fe162508673cd96e436f9c01c088a42a
|
data/CHANGELOG.md
CHANGED
@@ -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
|
|
data/lib/logstash/filters/dns.rb
CHANGED
@@ -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
|
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
|
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
|
-
|
327
|
-
|
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
|
data/logstash-filter-dns.gemspec
CHANGED
@@ -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.
|
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
|
|
data/spec/filters/dns_spec.rb
CHANGED
@@ -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(
|
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
|
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
|
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(
|
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.
|
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-
|
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:
|
96
|
+
version: 2.0.0
|
97
97
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
99
|
- - ">="
|