logstash-integration-jdbc 5.6.4 → 5.6.5
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/README.md +1 -1
- data/lib/logstash/plugin_mixins/jdbc/common.rb +19 -0
- data/spec/inputs/jdbc_spec.rb +50 -0
- data/vendor/jar-dependencies/org/apache/derby/derby/10.15.2.1/derby-10.15.2.1.jar +0 -0
- data/vendor/jar-dependencies/org/apache/derby/derbyclient/10.15.2.1/derbyclient-10.15.2.1.jar +0 -0
- data/vendor/jar-dependencies/org/apache/derby/derbyshared/10.15.2.1/derbyshared-10.15.2.1.jar +0 -0
- data/vendor/jar-dependencies/org/apache/derby/derbytools/10.15.2.1/derbytools-10.15.2.1.jar +0 -0
- data/version +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 819be7f98076d1baa5ccf68299025f16441218c8a8fbde49818a4711ee153598
|
|
4
|
+
data.tar.gz: f746524e0a8e2ae44fbc4e817299165a174ffff09fadc987d6cfc21b62c43c08
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8bf0523bfd1e0a687d8f3ec0833ba80c9e98524fd1992dede58195ec8562e94f5fda0f9c1afbf14e840480fd8e0196f92b0c22191b072721007f0ffb03b3a8b3
|
|
7
|
+
data.tar.gz: ee270f7fc7c07ce78ba08272d3407652dc59668ac50a251652ac4cf71ef0dda17fdb42cad43325477db04efc5d6e4331e695c93bc554ab7041ac46dc0ae27b29
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
## 5.6.5
|
|
2
|
+
- Prevent concurrent Sequel JDBC subadapter initialization races by preloading adapter at driver load time [#203](https://github.com/logstash-plugins/logstash-integration-jdbc/pull/203)
|
|
3
|
+
|
|
1
4
|
## 5.6.4
|
|
2
5
|
- Fix connection leak on statement retry by opening JDBC connection once outside retry loop [#201](https://github.com/logstash-plugins/logstash-integration-jdbc/pull/201)
|
|
3
6
|
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Logstash Integration Plugin for JDBC, including Logstash Input and Filter Plugins
|
|
3
3
|
# Logstash Plugin
|
|
4
4
|
|
|
5
|
-
[](https://github.com/logstash-plugins/logstash-integration-jdbc/actions/workflows/unit-tests.yml)
|
|
6
6
|
|
|
7
7
|
This is a plugin for [Logstash](https://github.com/elastic/logstash).
|
|
8
8
|
|
|
@@ -32,6 +32,7 @@ module LogStash module PluginMixins module Jdbc
|
|
|
32
32
|
# concurrency related problems with multiple pipelines and multiple drivers
|
|
33
33
|
DRIVERS_LOADING_LOCK.lock()
|
|
34
34
|
begin
|
|
35
|
+
preload_sequel_jdbc_subadapter
|
|
35
36
|
load_driver_jars
|
|
36
37
|
begin
|
|
37
38
|
@driver_impl = load_jdbc_driver_class
|
|
@@ -50,6 +51,24 @@ module LogStash module PluginMixins module Jdbc
|
|
|
50
51
|
end
|
|
51
52
|
end
|
|
52
53
|
|
|
54
|
+
def preload_sequel_jdbc_subadapter
|
|
55
|
+
subadapter = jdbc_subadapter_scheme
|
|
56
|
+
return unless subadapter
|
|
57
|
+
|
|
58
|
+
# Ensure first-time Sequel jdbc/<subadapter> loading happens serially.
|
|
59
|
+
Sequel::Database.load_adapter(subadapter, :map => Sequel::JDBC::DATABASE_SETUP, :subdir => 'jdbc')
|
|
60
|
+
rescue Sequel::AdapterNotFound
|
|
61
|
+
# Some JDBC URLs can work without a dedicated Sequel sub-adapter.
|
|
62
|
+
@logger.debug("Skipping Sequel JDBC sub-adapter preload", :subadapter => subadapter, :jdbc_connection_string => @jdbc_connection_string)
|
|
63
|
+
nil
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def jdbc_subadapter_scheme
|
|
67
|
+
return nil unless @jdbc_connection_string
|
|
68
|
+
|
|
69
|
+
@jdbc_connection_string[/\Ajdbc:([^:]+):/, 1]&.downcase&.to_sym
|
|
70
|
+
end
|
|
71
|
+
|
|
53
72
|
def load_driver_jars
|
|
54
73
|
if jdbc_driver_library_set?
|
|
55
74
|
@jdbc_driver_library.split(",").each do |driver_jar|
|
data/spec/inputs/jdbc_spec.rb
CHANGED
|
@@ -1907,4 +1907,54 @@ describe LogStash::Inputs::Jdbc do
|
|
|
1907
1907
|
end
|
|
1908
1908
|
end
|
|
1909
1909
|
end
|
|
1910
|
+
|
|
1911
|
+
describe "jdbc adapter preloading", :no_connection do
|
|
1912
|
+
before do
|
|
1913
|
+
allow(plugin).to receive(:load_jdbc_driver_class).and_return(double("driver_class"))
|
|
1914
|
+
end
|
|
1915
|
+
|
|
1916
|
+
it "extracts jdbc sub-adapter scheme in lowercase" do
|
|
1917
|
+
plugin.instance_variable_set(:@jdbc_connection_string, "jdbc:Oracle:thin:@//localhost:1521/FREEPDB1")
|
|
1918
|
+
|
|
1919
|
+
expect(plugin.send(:jdbc_subadapter_scheme)).to eq(:oracle)
|
|
1920
|
+
end
|
|
1921
|
+
|
|
1922
|
+
it "preloads sequel jdbc sub-adapter for jdbc URLs" do
|
|
1923
|
+
expect(Sequel::Database).to receive(:load_adapter).with(:derby, :map => Sequel::JDBC::DATABASE_SETUP, :subdir => 'jdbc').and_call_original
|
|
1924
|
+
|
|
1925
|
+
plugin.send(:load_driver)
|
|
1926
|
+
end
|
|
1927
|
+
|
|
1928
|
+
it "uses normalized jdbc sub-adapter scheme while preloading" do
|
|
1929
|
+
plugin.instance_variable_set(:@jdbc_connection_string, "jdbc:Oracle:thin:@//localhost:1521/FREEPDB1")
|
|
1930
|
+
|
|
1931
|
+
expect(Sequel::Database).to receive(:load_adapter).with(:oracle, :map => Sequel::JDBC::DATABASE_SETUP, :subdir => 'jdbc').and_return(nil)
|
|
1932
|
+
|
|
1933
|
+
expect { plugin.send(:load_driver) }.not_to raise_error
|
|
1934
|
+
end
|
|
1935
|
+
|
|
1936
|
+
it "does not try to preload when URL is not jdbc" do
|
|
1937
|
+
plugin.instance_variable_set(:@jdbc_connection_string, "mock://localhost:1527/db")
|
|
1938
|
+
|
|
1939
|
+
expect(Sequel::Database).not_to receive(:load_adapter)
|
|
1940
|
+
|
|
1941
|
+
plugin.send(:load_driver)
|
|
1942
|
+
end
|
|
1943
|
+
|
|
1944
|
+
it "ignores unknown jdbc sub-adapters" do
|
|
1945
|
+
plugin.instance_variable_set(:@jdbc_connection_string, "jdbc:unknown://localhost:1527/db")
|
|
1946
|
+
|
|
1947
|
+
expect(Sequel::Database).to receive(:load_adapter).with(:unknown, :map => Sequel::JDBC::DATABASE_SETUP, :subdir => 'jdbc').and_raise(Sequel::AdapterNotFound)
|
|
1948
|
+
|
|
1949
|
+
expect { plugin.send(:load_driver) }.not_to raise_error
|
|
1950
|
+
end
|
|
1951
|
+
|
|
1952
|
+
it "treats nil-returning jdbc sub-adapter load as a no-op" do
|
|
1953
|
+
plugin.instance_variable_set(:@jdbc_connection_string, "jdbc:unknown://localhost:1527/db")
|
|
1954
|
+
|
|
1955
|
+
expect(Sequel::Database).to receive(:load_adapter).with(:unknown, :map => Sequel::JDBC::DATABASE_SETUP, :subdir => 'jdbc').and_return(nil)
|
|
1956
|
+
|
|
1957
|
+
expect { plugin.send(:load_driver) }.not_to raise_error
|
|
1958
|
+
end
|
|
1959
|
+
end
|
|
1910
1960
|
end
|
|
Binary file
|
data/vendor/jar-dependencies/org/apache/derby/derbyclient/10.15.2.1/derbyclient-10.15.2.1.jar
CHANGED
|
Binary file
|
data/vendor/jar-dependencies/org/apache/derby/derbyshared/10.15.2.1/derbyshared-10.15.2.1.jar
CHANGED
|
Binary file
|
|
Binary file
|
data/version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
5.6.
|
|
1
|
+
5.6.5
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: logstash-integration-jdbc
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.6.
|
|
4
|
+
version: 5.6.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Elastic
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-
|
|
10
|
+
date: 2026-08-25 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: logstash-core-plugin-api
|