logstash-filter-jdbc_streaming 1.0.9 → 1.0.10

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: 677e0e5ec0f5045d139d29bc159e197d7f771391e303a11f0de12b707e54d224
4
- data.tar.gz: af5f3e19476f2789a65afd5e5e10faa48a632b667ba0c5ca2ffc030720a23562
3
+ metadata.gz: 68322804fb8d02a7f7831e6ea4eb3c47514e02033ae3ffa8d7f562a9a9ac25fe
4
+ data.tar.gz: 1fbbb4043350281a2660c6b7108ad1d2cff58ac98ef35ae695a8028c253f7d21
5
5
  SHA512:
6
- metadata.gz: 82b751b0170789cf6b27939030976f3c315d53221e82dcc5862ab1cbca43cdf7df2086ee2f9649aa2da469dbbac5a49d058fe6095c47e4f8228a4a6c0ba50c7a
7
- data.tar.gz: a096d52b59659d6aee46c764567a9131bb077da1e13aed1e492884f10ace4050448f88750e433d689d509e3642286865d756df3e0d6e8713370cd9f6c2d3d2e3
6
+ metadata.gz: 74996330617c8b291b4f09ebe001c91d76ed6e07de666b40f6260e2fb0a63b4c6140519ba3f5199db7953f2511d70333d21d7bc20dc3a5fdbfa05271cba1b423
7
+ data.tar.gz: eb7a1d7750383f2678b319933a645a529f582165c32bdb2689a939b10628024bf169b06972aeabca9ba6b4f34bcbd5abe07d81991d2bf5ef348e4464d95ed31a
@@ -1,3 +1,6 @@
1
+ ## 1.0.10
2
+ - Fixed driver loading [#35](https://github.com/logstash-plugins/logstash-filter-jdbc_streaming/pull/35)
3
+
1
4
  ## 1.0.9
2
5
  - Added support for prepared statements [PR 32](https://github.com/logstash-plugins/logstash-filter-jdbc_streaming/pull/32)
3
6
  - Added support for `sequel_opts` to pass options to the 3rd party Sequel library.
@@ -58,28 +58,19 @@ module LogStash module PluginMixins module JdbcStreaming
58
58
 
59
59
  private
60
60
 
61
- def load_drivers
62
- return if @jdbc_driver_library.nil? || @jdbc_driver_library.empty?
63
- driver_jars = @jdbc_driver_library.split(",")
64
-
65
- # Needed for JDK 11 as the DriverManager has a different ClassLoader than Logstash
66
- urls = java.net.URL[driver_jars.length].new
67
- driver_jars.each_with_index do |driver, idx|
68
- urls[idx] = java.io.File.new(driver).toURI().toURL()
61
+ def load_driver_jars
62
+ unless @jdbc_driver_library.nil? || @jdbc_driver_library.empty?
63
+ @jdbc_driver_library.split(",").each do |driver_jar|
64
+ begin
65
+ @logger.debug("loading #{driver_jar}")
66
+ # Use https://github.com/jruby/jruby/wiki/CallingJavaFromJRuby#from-jar-files to make classes from jar
67
+ # available
68
+ require driver_jar
69
+ rescue LoadError => e
70
+ raise LogStash::PluginLoadingError, "unable to load #{driver_jar} from :jdbc_driver_library, #{e.message}"
71
+ end
69
72
  end
70
- ucl = java.net.URLClassLoader.new_instance(urls)
71
- begin
72
- klass = java.lang.Class.forName(@jdbc_driver_class.to_java(:string), true, ucl);
73
- rescue Java::JavaLang::ClassNotFoundException => e
74
- raise LogStash::Error, "Unable to find driver class via URLClassLoader in given driver jars: #{@jdbc_driver_class}"
75
- end
76
- begin
77
- driver = klass.getConstructor().newInstance();
78
- java.sql.DriverManager.register_driver(WrappedDriver.new(driver.to_java(java.sql.Driver)).to_java(java.sql.Driver))
79
- rescue Java::JavaSql::SQLException => e
80
- raise LogStash::Error, "Unable to register driver with java.sql.DriverManager using WrappedDriver: #{@jdbc_driver_class}"
81
- end
82
-
73
+ end
83
74
  end
84
75
 
85
76
  public
@@ -88,7 +79,7 @@ module LogStash module PluginMixins module JdbcStreaming
88
79
  require "sequel/adapters/jdbc"
89
80
  require "java"
90
81
 
91
- load_drivers
82
+ load_driver_jars
92
83
 
93
84
  @sequel_opts_symbols = @sequel_opts.inject({}) {|hash, (k,v)| hash[k.to_sym] = v; hash}
94
85
  @sequel_opts_symbols[:user] = @jdbc_user unless @jdbc_user.nil? || @jdbc_user.empty?
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-filter-jdbc_streaming'
3
- s.version = '1.0.9'
3
+ s.version = '1.0.10'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "Enrich events with your database 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/plugin install gemname. This gem is not a stand-alone program"
@@ -25,5 +25,4 @@ Gem::Specification.new do |s|
25
25
 
26
26
  s.add_development_dependency 'logstash-devutils'
27
27
  s.add_development_dependency 'jdbc-derby'
28
- s.add_development_dependency 'jdbc-postgres'
29
28
  end
@@ -1,6 +1,5 @@
1
1
  require "logstash/devutils/rspec/spec_helper"
2
2
  require "logstash/filters/jdbc_streaming"
3
- require 'jdbc/postgres'
4
3
  require "sequel"
5
4
  require "sequel/adapters/jdbc"
6
5
 
@@ -10,17 +9,15 @@ module LogStash module Filters
10
9
  end
11
10
 
12
11
  describe JdbcStreaming, :integration => true do
13
- # Use Postgres for integration tests
14
- ::Jdbc::Postgres.load_driver
15
-
16
12
  ENV["TZ"] = "Etc/UTC"
17
13
 
18
14
  # For Travis and CI based on docker, we source from ENV
19
15
  jdbc_connection_string = ENV.fetch("PG_CONNECTION_STRING",
20
- "jdbc:postgresql://localhost:5432") + "/jdbc_streaming_db?user=postgres"
16
+ "jdbc:postgresql://postgresql:5432") + "/jdbc_streaming_db?user=postgres"
21
17
 
22
18
  let(:mixin_settings) do
23
19
  { "jdbc_driver_class" => "org.postgresql.Driver",
20
+ "jdbc_driver_library" => "/usr/share/logstash/postgresql.jar",
24
21
  "jdbc_connection_string" => jdbc_connection_string
25
22
  }
26
23
  end
@@ -50,19 +47,9 @@ module LogStash module Filters
50
47
  let(:ipaddr) { "10.#{idx}.1.1" }
51
48
 
52
49
  before :each do
53
- db.create_table :reference_table do
54
- String :ip
55
- String :name
56
- String :location
57
- end
58
- 1.upto(250) do |i|
59
- db[:reference_table].insert(:ip => "10.#{i}.1.1", :name => "ldn-server-#{i}", :location => "LDN-#{i}-2-3")
60
- end
61
50
  plugin.register
62
51
  end
63
52
 
64
- after(:each) { db.drop_table(:reference_table) }
65
-
66
53
  describe "found record - uses row" do
67
54
  let(:idx) { 200 }
68
55
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-jdbc_streaming
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.10
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-24 00:00:00.000000000 Z
11
+ date: 2019-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -86,20 +86,6 @@ dependencies:
86
86
  - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
- - !ruby/object:Gem::Dependency
90
- requirement: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: '0'
95
- name: jdbc-postgres
96
- prerelease: false
97
- type: :development
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
89
  description: This gem is a logstash plugin required to be installed on top of the
104
90
  Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not
105
91
  a stand-alone program