logstash-input-jdbc 4.3.17 → 4.3.18
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 +3 -0
- data/lib/logstash/plugin_mixins/jdbc/jdbc.rb +13 -23
- data/logstash-input-jdbc.gemspec +1 -2
- data/spec/inputs/integ_spec.rb +49 -7
- data/spec/inputs/jdbc_spec.rb +0 -20
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70e0a214e348c26f1431b84ae27846402335b2c4ea7494e4dc39a75020773a7b
|
4
|
+
data.tar.gz: 60fb0bdabb7f72560d5bd466a2290ad607ad6ab9d16bee81f4351868769d5748
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 189329d3d59485bbf3ced93560f02f56d1e760d9ce3745ec8955f5cd8ae0e6ec81dc5784c976a185d0ec0136cc0188a99693ce68b4dde6c50ba8357133f196b5
|
7
|
+
data.tar.gz: 284d2472358969d0efacb7633d1a22e2f8df48762bbc63d06f2aac6df1c98f2cbadaeb452f04433237263a79a9ec273aee591e38ff139dffd084dc4f915c596e
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
## 4.3.18
|
2
|
+
- Fix issue with driver loading [#356](https://github.com/logstash-plugins/logstash-input-jdbc/pull/356)
|
3
|
+
|
1
4
|
## 4.3.17
|
2
5
|
- Added documentation to provide more info about jdbc driver loading [#352](https://github.com/logstash-plugins/logstash-input-jdbc/pull/352)
|
3
6
|
|
@@ -140,28 +140,18 @@ module LogStash module PluginMixins module Jdbc
|
|
140
140
|
|
141
141
|
private
|
142
142
|
|
143
|
-
def
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
begin
|
156
|
-
klass = java.lang.Class.forName(@jdbc_driver_class.to_java(:string), true, ucl);
|
157
|
-
rescue Java::JavaLang::ClassNotFoundException => e
|
158
|
-
raise LogStash::Error, "Unable to find driver class via URLClassLoader in given driver jars: #{@jdbc_driver_class}"
|
159
|
-
end
|
160
|
-
begin
|
161
|
-
driver = klass.getConstructor().newInstance();
|
162
|
-
java.sql.DriverManager.register_driver(WrappedDriver.new(driver.to_java(java.sql.Driver)).to_java(java.sql.Driver))
|
163
|
-
rescue Java::JavaSql::SQLException => e
|
164
|
-
raise LogStash::Error, "Unable to register driver with java.sql.DriverManager using WrappedDriver: #{@jdbc_driver_class}"
|
143
|
+
def load_driver_jars
|
144
|
+
unless @jdbc_driver_library.nil? || @jdbc_driver_library.empty?
|
145
|
+
@jdbc_driver_library.split(",").each do |driver_jar|
|
146
|
+
begin
|
147
|
+
@logger.debug("loading #{driver_jar}")
|
148
|
+
# Use https://github.com/jruby/jruby/wiki/CallingJavaFromJRuby#from-jar-files to make classes from jar
|
149
|
+
# available
|
150
|
+
require driver_jar
|
151
|
+
rescue LoadError => e
|
152
|
+
raise LogStash::PluginLoadingError, "unable to load #{driver_jar} from :jdbc_driver_library, #{e.message}"
|
153
|
+
end
|
154
|
+
end
|
165
155
|
end
|
166
156
|
end
|
167
157
|
|
@@ -174,7 +164,7 @@ module LogStash module PluginMixins module Jdbc
|
|
174
164
|
Sequel.application_timezone = @plugin_timezone.to_sym
|
175
165
|
if @drivers_loaded.false?
|
176
166
|
begin
|
177
|
-
|
167
|
+
load_driver_jars
|
178
168
|
Sequel::JDBC.load_driver(@jdbc_driver_class)
|
179
169
|
rescue LogStash::Error => e
|
180
170
|
# raised in load_drivers, e.cause should be the caught Java exceptions
|
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 = '4.3.
|
3
|
+
s.version = '4.3.18'
|
4
4
|
s.licenses = ['Apache License (2.0)']
|
5
5
|
s.summary = "Creates events from JDBC data"
|
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/logstash-plugin install gemname. This gem is not a stand-alone program"
|
@@ -28,5 +28,4 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_development_dependency 'logstash-devutils'
|
29
29
|
s.add_development_dependency 'timecop'
|
30
30
|
s.add_development_dependency 'jdbc-derby'
|
31
|
-
s.add_development_dependency 'jdbc-postgres'
|
32
31
|
end
|
data/spec/inputs/integ_spec.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require "logstash/devutils/rspec/spec_helper"
|
2
2
|
require "logstash/inputs/jdbc"
|
3
|
+
require "sequel"
|
4
|
+
require "sequel/adapters/jdbc"
|
3
5
|
|
4
6
|
# This test requires: Firebird installed to Mac OSX, it uses the built-in example database `employee`
|
5
7
|
|
@@ -8,15 +10,23 @@ describe LogStash::Inputs::Jdbc, :integration => true do
|
|
8
10
|
# is picked up. It could be arbitrarily set to any timezone, but then the test
|
9
11
|
# would have to compensate differently. That's why UTC is chosen.
|
10
12
|
ENV["TZ"] = "Etc/UTC"
|
11
|
-
|
12
|
-
|
13
|
-
|
13
|
+
# For Travis and CI based on docker, we source from ENV
|
14
|
+
jdbc_connection_string = ENV.fetch("PG_CONNECTION_STRING",
|
15
|
+
"jdbc:postgresql://postgresql:5432") + "/jdbc_input_db?user=postgres"
|
16
|
+
|
17
|
+
let(:settings) do
|
18
|
+
{ "jdbc_driver_class" => "org.postgresql.Driver",
|
19
|
+
"jdbc_connection_string" => jdbc_connection_string,
|
20
|
+
"jdbc_driver_library" => "/usr/share/logstash/postgresql.jar",
|
21
|
+
"jdbc_user" => "postgres",
|
22
|
+
"statement" => 'SELECT FIRST_NAME, LAST_NAME FROM "employee" WHERE EMP_NO = 2'
|
23
|
+
}
|
14
24
|
end
|
15
|
-
|
16
|
-
let(:plugin) { LogStash::Inputs::Jdbc.new(
|
25
|
+
|
26
|
+
let(:plugin) { LogStash::Inputs::Jdbc.new(settings) }
|
17
27
|
let(:queue) { Queue.new }
|
18
28
|
|
19
|
-
context "when
|
29
|
+
context "when connecting to a postgres instance" do
|
20
30
|
before do
|
21
31
|
plugin.register
|
22
32
|
end
|
@@ -25,12 +35,44 @@ describe LogStash::Inputs::Jdbc, :integration => true do
|
|
25
35
|
plugin.stop
|
26
36
|
end
|
27
37
|
|
28
|
-
it "should
|
38
|
+
it "should populate the event with database entries" do
|
29
39
|
plugin.run(queue)
|
30
40
|
event = queue.pop
|
31
41
|
expect(event.get('first_name')).to eq("Mark")
|
32
42
|
expect(event.get('last_name')).to eq("Guckenheimer")
|
33
43
|
end
|
34
44
|
end
|
45
|
+
|
46
|
+
context "when supplying a non-existent library" do
|
47
|
+
let(:settings) do
|
48
|
+
super.merge(
|
49
|
+
"jdbc_driver_library" => "/no/path/to/postgresql.jar"
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should not register correctly" do
|
54
|
+
plugin.register
|
55
|
+
q = Queue.new
|
56
|
+
expect do
|
57
|
+
plugin.run(q)
|
58
|
+
end.to raise_error(::LogStash::PluginLoadingError)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context "when connecting to a non-existent server" do
|
63
|
+
let(:settings) do
|
64
|
+
super.merge(
|
65
|
+
"jdbc_connection_string" => "jdbc:postgresql://localhost:65000/somedb"
|
66
|
+
)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should not register correctly" do
|
70
|
+
plugin.register
|
71
|
+
q = Queue.new
|
72
|
+
expect do
|
73
|
+
plugin.run(q)
|
74
|
+
end.to raise_error(::Sequel::DatabaseConnectionError)
|
75
|
+
end
|
76
|
+
end
|
35
77
|
end
|
36
78
|
|
data/spec/inputs/jdbc_spec.rb
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
require "logstash/devutils/rspec/spec_helper"
|
3
3
|
require "logstash/inputs/jdbc"
|
4
4
|
require "jdbc/derby"
|
5
|
-
require 'jdbc/postgres'
|
6
|
-
Jdbc::Postgres.load_driver
|
7
5
|
require "sequel"
|
8
6
|
require "sequel/adapters/jdbc"
|
9
7
|
require "timecop"
|
@@ -78,24 +76,6 @@ describe LogStash::Inputs::Jdbc do
|
|
78
76
|
end
|
79
77
|
end
|
80
78
|
|
81
|
-
context "when connecting to a non-existent server", :no_connection => true do
|
82
|
-
let(:mixin_settings) do
|
83
|
-
super.merge(
|
84
|
-
"jdbc_driver_class" => "org.postgresql.Driver",
|
85
|
-
"jdbc_connection_string" => "jdbc:postgresql://localhost:65000/somedb"
|
86
|
-
)
|
87
|
-
end
|
88
|
-
let(:settings) { super.merge("statement" => "SELECT 1 as col1 FROM test_table", "jdbc_user" => "foo", "jdbc_password" => "bar") }
|
89
|
-
|
90
|
-
it "should not register correctly" do
|
91
|
-
plugin.register
|
92
|
-
q = Queue.new
|
93
|
-
expect do
|
94
|
-
plugin.run(q)
|
95
|
-
end.to raise_error(::Sequel::DatabaseConnectionError)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
79
|
context "when both jdbc_password and jdbc_password_filepath arguments are passed" do
|
100
80
|
let(:statement) { "SELECT * from test_table" }
|
101
81
|
let(:jdbc_password) { "secret" }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-jdbc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.3.
|
4
|
+
version: 4.3.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,20 +142,6 @@ dependencies:
|
|
142
142
|
- - ">="
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
|
-
- !ruby/object:Gem::Dependency
|
146
|
-
requirement: !ruby/object:Gem::Requirement
|
147
|
-
requirements:
|
148
|
-
- - ">="
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version: '0'
|
151
|
-
name: jdbc-postgres
|
152
|
-
prerelease: false
|
153
|
-
type: :development
|
154
|
-
version_requirements: !ruby/object:Gem::Requirement
|
155
|
-
requirements:
|
156
|
-
- - ">="
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
version: '0'
|
159
145
|
description: This gem is a Logstash plugin required to be installed on top of the
|
160
146
|
Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This
|
161
147
|
gem is not a stand-alone program
|