logstash-input-jdbc 2.0.2 → 2.0.3
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 +6 -2
- data/lib/logstash/plugin_mixins/jdbc.rb +32 -1
- data/logstash-input-jdbc.gemspec +1 -1
- data/spec/inputs/jdbc_spec.rb +33 -0
- metadata +31 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9a172f33d553e84914b76176ea860be37621cb1
|
4
|
+
data.tar.gz: 1ae5eedcd6b6d392c33b49f6050a661c1a564c4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d2873101ca8ac7491d897317cd8e74dfb1681fd97fc574a4a9f21c1ea186e05278e942697a9c23420f949b4877084fc13d596da3dfafb44bb97d70e84f0f314
|
7
|
+
data.tar.gz: 607a3fcb288f023ae56cc6f3668c318e15addf16b4ec2911351ec82f099f0636a7409bce584b97743f22e78c6115d07c4f2d7ef7f295253f0463c11fb828cbc4
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
+
## 2.0.3
|
2
|
+
- Added ability to configure timeout
|
3
|
+
- Added catch-all configuration option for any other options that Sequel lib supports
|
4
|
+
|
1
5
|
## 2.0.0
|
2
6
|
- Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
|
3
7
|
instead of using Thread.raise on the plugins' threads. Ref: https://github.com/elastic/logstash/pull/3895
|
4
8
|
- Dependency on logstash-core update to 2.0
|
5
9
|
|
6
|
-
* 1.0.0
|
7
|
-
- Initial release
|
10
|
+
* 1.0.0
|
11
|
+
- Initial release
|
@@ -57,6 +57,37 @@ module LogStash::PluginMixins::Jdbc
|
|
57
57
|
# Connection pool configuration.
|
58
58
|
# How often to validate a connection (in seconds)
|
59
59
|
config :jdbc_validation_timeout, :validate => :number, :default => 3600
|
60
|
+
|
61
|
+
# Connection pool configuration.
|
62
|
+
# The amount of seconds to wait to acquire a connection before raising a PoolTimeoutError (default 5)
|
63
|
+
config :jdbc_pool_timeout, :validate => :number, :default => 5
|
64
|
+
|
65
|
+
# General/Vendor-specific Sequel configuration options.
|
66
|
+
#
|
67
|
+
# An example of an optional connection pool configuration
|
68
|
+
# max_connections - The maximum number of connections the connection pool
|
69
|
+
#
|
70
|
+
# examples of vendor-specific options can be found in this
|
71
|
+
# documentation page: https://github.com/jeremyevans/sequel/blob/master/doc/opening_databases.rdoc
|
72
|
+
config :sequel_opts, :validate => :hash, :default => {}
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
def jdbc_connect
|
77
|
+
opts = {
|
78
|
+
:user => @jdbc_user,
|
79
|
+
:password => @jdbc_password,
|
80
|
+
:pool_timeout => @jdbc_pool_timeout
|
81
|
+
}.merge(@sequel_opts)
|
82
|
+
begin
|
83
|
+
Sequel.connect(@jdbc_connection_string, opts=opts)
|
84
|
+
rescue Sequel::PoolTimeout => e
|
85
|
+
@logger.error("Failed to connect to database. #{@jdbc_pool_timeout} second timeout exceeded.")
|
86
|
+
raise e
|
87
|
+
rescue Sequel::Error => e
|
88
|
+
@logger.error("Unable to connect to database", :error_message => e.message)
|
89
|
+
raise e
|
90
|
+
end
|
60
91
|
end
|
61
92
|
|
62
93
|
public
|
@@ -76,7 +107,7 @@ module LogStash::PluginMixins::Jdbc
|
|
76
107
|
end
|
77
108
|
raise LogStash::ConfigurationError, "#{e}. #{message}"
|
78
109
|
end
|
79
|
-
@database =
|
110
|
+
@database = jdbc_connect()
|
80
111
|
@database.extension(:pagination)
|
81
112
|
if @jdbc_validate_connection
|
82
113
|
@database.extension(:connection_validator)
|
data/logstash-input-jdbc.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-input-jdbc'
|
3
|
-
s.version = '2.0.
|
3
|
+
s.version = '2.0.3'
|
4
4
|
s.licenses = ['Apache License (2.0)']
|
5
5
|
s.summary = "This example input streams a string at a definable interval."
|
6
6
|
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"
|
data/spec/inputs/jdbc_spec.rb
CHANGED
@@ -310,4 +310,37 @@ describe LogStash::Inputs::Jdbc do
|
|
310
310
|
expect { plugin.register }.to raise_error(LogStash::ConfigurationError)
|
311
311
|
end
|
312
312
|
end
|
313
|
+
|
314
|
+
context "when timing out on connection" do
|
315
|
+
let(:settings) do
|
316
|
+
{
|
317
|
+
"statement" => "SELECT * FROM test_table",
|
318
|
+
"jdbc_pool_timeout" => 0,
|
319
|
+
"jdbc_connection_string" => 'mock://localhost:1527/db',
|
320
|
+
"sequel_opts" => {
|
321
|
+
"max_connections" => 1
|
322
|
+
}
|
323
|
+
}
|
324
|
+
end
|
325
|
+
|
326
|
+
it "should raise PoolTimeout error" do
|
327
|
+
plugin.register
|
328
|
+
db = plugin.instance_variable_get(:@database)
|
329
|
+
expect(db.pool.instance_variable_get(:@timeout)).to eq(0)
|
330
|
+
expect(db.pool.instance_variable_get(:@max_size)).to eq(1)
|
331
|
+
|
332
|
+
q, q1 = Queue.new, Queue.new
|
333
|
+
t = Thread.new{db.pool.hold{|c| q1.push nil; q.pop}}
|
334
|
+
q1.pop
|
335
|
+
expect{db.pool.hold {|c|}}.to raise_error(Sequel::PoolTimeout)
|
336
|
+
q.push nil
|
337
|
+
t.join
|
338
|
+
end
|
339
|
+
|
340
|
+
it "should log error message" do
|
341
|
+
allow(Sequel).to receive(:connect).and_raise(Sequel::PoolTimeout)
|
342
|
+
expect(plugin.logger).to receive(:error).with("Failed to connect to database. 0 second timeout exceeded.")
|
343
|
+
expect { plugin.register }.to raise_error(Sequel::PoolTimeout)
|
344
|
+
end
|
345
|
+
end
|
313
346
|
end
|
metadata
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-jdbc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
|
14
|
+
name: logstash-core
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
17
|
- - '>='
|
17
18
|
- !ruby/object:Gem::Version
|
@@ -19,10 +20,7 @@ dependencies:
|
|
19
20
|
- - <
|
20
21
|
- !ruby/object:Gem::Version
|
21
22
|
version: 3.0.0
|
22
|
-
|
23
|
-
prerelease: false
|
24
|
-
type: :runtime
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirement: !ruby/object:Gem::Requirement
|
26
24
|
requirements:
|
27
25
|
- - '>='
|
28
26
|
- !ruby/object:Gem::Version
|
@@ -30,119 +28,121 @@ dependencies:
|
|
30
28
|
- - <
|
31
29
|
- !ruby/object:Gem::Version
|
32
30
|
version: 3.0.0
|
31
|
+
prerelease: false
|
32
|
+
type: :runtime
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
+
name: logstash-codec-plain
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
34
40
|
requirement: !ruby/object:Gem::Requirement
|
35
41
|
requirements:
|
36
42
|
- - '>='
|
37
43
|
- !ruby/object:Gem::Version
|
38
44
|
version: '0'
|
39
|
-
name: logstash-codec-plain
|
40
45
|
prerelease: false
|
41
46
|
type: :runtime
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: sequel
|
42
49
|
version_requirements: !ruby/object:Gem::Requirement
|
43
50
|
requirements:
|
44
51
|
- - '>='
|
45
52
|
- !ruby/object:Gem::Version
|
46
53
|
version: '0'
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
54
|
requirement: !ruby/object:Gem::Requirement
|
49
55
|
requirements:
|
50
56
|
- - '>='
|
51
57
|
- !ruby/object:Gem::Version
|
52
58
|
version: '0'
|
53
|
-
name: sequel
|
54
59
|
prerelease: false
|
55
60
|
type: :runtime
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: rufus-scheduler
|
56
63
|
version_requirements: !ruby/object:Gem::Requirement
|
57
64
|
requirements:
|
58
65
|
- - '>='
|
59
66
|
- !ruby/object:Gem::Version
|
60
67
|
version: '0'
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
68
|
requirement: !ruby/object:Gem::Requirement
|
63
69
|
requirements:
|
64
70
|
- - '>='
|
65
71
|
- !ruby/object:Gem::Version
|
66
72
|
version: '0'
|
67
|
-
name: rufus-scheduler
|
68
73
|
prerelease: false
|
69
74
|
type: :runtime
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: logstash-devutils
|
70
77
|
version_requirements: !ruby/object:Gem::Requirement
|
71
78
|
requirements:
|
72
79
|
- - '>='
|
73
80
|
- !ruby/object:Gem::Version
|
74
81
|
version: '0'
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
82
|
requirement: !ruby/object:Gem::Requirement
|
77
83
|
requirements:
|
78
84
|
- - '>='
|
79
85
|
- !ruby/object:Gem::Version
|
80
86
|
version: '0'
|
81
|
-
name: logstash-devutils
|
82
87
|
prerelease: false
|
83
88
|
type: :development
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: timecop
|
84
91
|
version_requirements: !ruby/object:Gem::Requirement
|
85
92
|
requirements:
|
86
93
|
- - '>='
|
87
94
|
- !ruby/object:Gem::Version
|
88
95
|
version: '0'
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
96
|
requirement: !ruby/object:Gem::Requirement
|
91
97
|
requirements:
|
92
98
|
- - '>='
|
93
99
|
- !ruby/object:Gem::Version
|
94
100
|
version: '0'
|
95
|
-
name: timecop
|
96
101
|
prerelease: false
|
97
102
|
type: :development
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: jdbc-derby
|
98
105
|
version_requirements: !ruby/object:Gem::Requirement
|
99
106
|
requirements:
|
100
107
|
- - '>='
|
101
108
|
- !ruby/object:Gem::Version
|
102
109
|
version: '0'
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
110
|
requirement: !ruby/object:Gem::Requirement
|
105
111
|
requirements:
|
106
112
|
- - '>='
|
107
113
|
- !ruby/object:Gem::Version
|
108
114
|
version: '0'
|
109
|
-
name: jdbc-derby
|
110
115
|
prerelease: false
|
111
116
|
type: :development
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: docker-api
|
112
119
|
version_requirements: !ruby/object:Gem::Requirement
|
113
120
|
requirements:
|
114
121
|
- - '>='
|
115
122
|
- !ruby/object:Gem::Version
|
116
123
|
version: '0'
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
124
|
requirement: !ruby/object:Gem::Requirement
|
119
125
|
requirements:
|
120
126
|
- - '>='
|
121
127
|
- !ruby/object:Gem::Version
|
122
128
|
version: '0'
|
123
|
-
name: docker-api
|
124
129
|
prerelease: false
|
125
130
|
type: :development
|
126
|
-
version_requirements: !ruby/object:Gem::Requirement
|
127
|
-
requirements:
|
128
|
-
- - '>='
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version: '0'
|
131
131
|
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
|
132
132
|
email: info@elastic.co
|
133
133
|
executables: []
|
134
134
|
extensions: []
|
135
135
|
extra_rdoc_files: []
|
136
136
|
files:
|
137
|
+
- lib/logstash/inputs/jdbc.rb
|
138
|
+
- lib/logstash/plugin_mixins/jdbc.rb
|
139
|
+
- spec/inputs/jdbc_spec.rb
|
140
|
+
- logstash-input-jdbc.gemspec
|
141
|
+
- README.md
|
137
142
|
- CHANGELOG.md
|
138
143
|
- Gemfile
|
139
144
|
- LICENSE
|
140
145
|
- NOTICE.TXT
|
141
|
-
- README.md
|
142
|
-
- lib/logstash/inputs/jdbc.rb
|
143
|
-
- lib/logstash/plugin_mixins/jdbc.rb
|
144
|
-
- logstash-input-jdbc.gemspec
|
145
|
-
- spec/inputs/jdbc_spec.rb
|
146
146
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
147
147
|
licenses:
|
148
148
|
- Apache License (2.0)
|
@@ -165,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
165
|
version: '0'
|
166
166
|
requirements: []
|
167
167
|
rubyforge_project:
|
168
|
-
rubygems_version: 2.
|
168
|
+
rubygems_version: 2.1.9
|
169
169
|
signing_key:
|
170
170
|
specification_version: 4
|
171
171
|
summary: This example input streams a string at a definable interval.
|