logstash-integration-jdbc 5.4.9 → 5.4.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd25bda7dbc3dbbc14d2db3d79f2aff6c4c1eb39de48c786701c998ed66fefcf
4
- data.tar.gz: 519d0d5d51ad001974ccdf2ca131d81f8d2558984b78f897cb9d2f69b509e444
3
+ metadata.gz: 7604bb8967c9d63f585d14622ab18b70bc0d9e9b34e43bca6b6c59c9d05a6b76
4
+ data.tar.gz: 2e9d142376d12bbd1313142e79174d540d53e098e481330262e784c8177e4898
5
5
  SHA512:
6
- metadata.gz: 4776aa8f80c18579b366713c5eea82f956e0b18304414a6bf66c3866bab4d92f08cf4c10d82ce464d2c33fef5ce51ae69102a0db814383bef4b8aa9f6e4621a7
7
- data.tar.gz: 28b7b9ee174032657084ec43d55eeb9152d51689e97ccbf4d1bac826fa6890b1b9f0e3d190bc2230c5f2b1462f22249c5f18aef1ce50423838d8037c44d2f711
6
+ metadata.gz: 165749e33fed7d98b9635f6a1d74cdb05623563a3942d34c093ef761cd8e4f4784e6eb467a699909e5420ceef8fb4779c00e1b154845838052aa278a592ddc2a
7
+ data.tar.gz: b9a4e7822ea60c3dde25edd6a1a6e72837069a993046a050a05aa32e92172d4689624df12e85c31b79f62c40fd0f45f98700e07a678a7ea2656d9730f2f14a8e
data/CHANGELOG.md CHANGED
@@ -1,6 +1,14 @@
1
+ ## 5.4.11
2
+ - Fixes an issue in which any one instance of a JDBC input plugin using `jdbc_default_timezone` changes the behaviour of plugin instances that do _not_ use `jdbc_default_timezone`, ensuring that timezone offsets remain consistent for each instance of the plugin _as configured_ [#151](https://github.com/logstash-plugins/logstash-integration-jdbc/pull/151)
3
+ - Fixes an exception that could occur while reloading `jdbc_static` databases when the underlying connection to the remote has been broken [#165](https://github.com/logstash-plugins/logstash-integration-jdbc/pull/165)
4
+
5
+ ## 5.4.10
6
+ - Adds retry mechanism when checkout Derby from SVN repository [#158](https://github.com/logstash-plugins/logstash-integration-jdbc/pull/158)
7
+ - [DOC] add known limitations and settings for connection issue [#167](https://github.com/logstash-plugins/logstash-integration-jdbc/pull/167)
8
+
1
9
  ## 5.4.9
2
10
  - Fix Derby missed driver classes when built locally for version 10.15 [#160](https://github.com/logstash-plugins/logstash-integration-jdbc/pull/160)
3
- -
11
+
4
12
  ## 5.4.8
5
13
  - Update Derby with locally built 10.15.2.1 version [#155](https://github.com/logstash-plugins/logstash-integration-jdbc/pull/155)
6
14
 
@@ -176,6 +176,29 @@ input {
176
176
  }
177
177
  ---------------------------------------------------------------------------------------------------
178
178
 
179
+ ==== Database-specific considerations
180
+
181
+ The JDBC input plugin leverages the https://github.com/jeremyevans/sequel[sequel] library to query databases through their JDBC drivers.
182
+ The implementation of drivers will vary, however, potentially leading to unexpected behavior.
183
+
184
+ ===== Unable to reuse connections
185
+
186
+ Some databases - such as Sybase or SQL Anywhere - may have issues with stale connections, timing out between scheduled runs and never reconnecting.
187
+
188
+ To ensure connections are valid before queries are executed, enable <<plugins-{type}s-{plugin}-jdbc_validate_connection>> and set <<plugins-{type}s-{plugin}-jdbc_validation_timeout>> to a shorter interval than the <<plugins-{type}s-{plugin}-schedule>>.
189
+
190
+ [source,ruby]
191
+ ---------------------------------------------------------------------------------------------------
192
+ input {
193
+ jdbc {
194
+ schedule => "* * * * *" # run every minute
195
+ jdbc_validate_connection => true
196
+ jdbc_validation_timeout => 50 # 50 seconds
197
+ }
198
+ }
199
+ ---------------------------------------------------------------------------------------------------
200
+
201
+
179
202
 
180
203
  [id="plugins-{type}s-{plugin}-options"]
181
204
  ==== Jdbc Input Configuration Options
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  require "fileutils"
3
- require "sequel"
3
+ require "logstash/plugin_mixins/jdbc/sequel_bootstrap"
4
4
  require "sequel/adapters/jdbc"
5
5
  require "java"
6
6
  require "logstash/util/loggable"
@@ -12,7 +12,7 @@ module LogStash module Filters module Jdbc
12
12
  if connected?
13
13
  result = @db[statement].count
14
14
  else
15
- debug_log_messages.concat("and there is no connection to the remote db at this time")
15
+ debug_log_messages << "and there is no connection to the remote db at this time"
16
16
  end
17
17
  rescue ::Sequel::Error => err
18
18
  # a fatal issue
@@ -32,7 +32,7 @@ module LogStash module Filters module Jdbc
32
32
  if connected?
33
33
  result = @db[statement].all
34
34
  else
35
- debug_log_messages.concat("and there is no connection to the remote db at this time")
35
+ debug_log_messages << "and there is no connection to the remote db at this time"
36
36
  end
37
37
  rescue ::Sequel::Error => err
38
38
  # a fatal issue
@@ -24,7 +24,8 @@ module LogStash module PluginMixins module Jdbc
24
24
  return @driver_impl if @driver_impl ||= nil
25
25
 
26
26
  require "java"
27
- require "sequel"
27
+
28
+ require_relative "sequel_bootstrap"
28
29
  require "sequel/adapters/jdbc"
29
30
 
30
31
  # execute all the driver loading related duties in a serial fashion to avoid
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+
3
+ require "sequel"
4
+
5
+ # prevent Sequel's datetime_class from being modified,
6
+ # and ensure behaviour is restored to the library's default
7
+ # if something else in the Ruby VM has already changed it.
8
+ Sequel.synchronize do
9
+ def Sequel.datetime_class=(klass)
10
+ # noop
11
+ end
12
+ def Sequel.datetime_class
13
+ ::Time
14
+ end
15
+ end
16
+
17
+ # load the named_timezones extension, which will attempt to
18
+ # override the global Sequel::datetime_class; for safety,
19
+ # we reset it once more.
20
+ Sequel.extension(:named_timezones)
21
+ Sequel.datetime_class = ::Time
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-integration-jdbc'
3
- s.version = '5.4.9'
3
+ s.version = '5.4.11'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "Integration with JDBC - input and filter plugins"
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"
@@ -601,6 +601,33 @@ describe LogStash::Inputs::Jdbc do
601
601
  # With no timezone set, no change should occur
602
602
  expect(event.get("custom_time").time).to eq(Time.iso8601("2015-01-01T12:00:00Z"))
603
603
  end
604
+
605
+ %w(
606
+ Etc/UTC
607
+ America/Los_Angeles
608
+ Europe/Berlin
609
+ Asia/Tokyo
610
+ ).each do |local_timezone|
611
+ context "when host machine has timezone `#{local_timezone}`" do
612
+ around(:each) do |example|
613
+ begin
614
+ previous_tz = ENV['TZ']
615
+ ENV['TZ'] = local_timezone
616
+ example.call
617
+ ensure
618
+ ENV['TZ'] = previous_tz
619
+ end
620
+ end
621
+
622
+ let(:tz) { TZInfo::Timezone.get(local_timezone) }
623
+
624
+ it "converts the time using the machine's local timezone" do
625
+ plugin.run(queue)
626
+ event = queue.pop
627
+ expect(event.get("custom_time").time).to eq(Time.new(2015,1,1,12,0,0,tz))
628
+ end
629
+ end
630
+ end
604
631
  end
605
632
 
606
633
  context "when iteratively running plugin#run" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-integration-jdbc
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.4.9
4
+ version: 5.4.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-21 00:00:00.000000000 Z
11
+ date: 2024-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -17,8 +17,8 @@ dependencies:
17
17
  - !ruby/object:Gem::Version
18
18
  version: '0.3'
19
19
  name: jar-dependencies
20
- prerelease: false
21
20
  type: :development
21
+ prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
@@ -34,8 +34,8 @@ dependencies:
34
34
  - !ruby/object:Gem::Version
35
35
  version: '2.99'
36
36
  name: logstash-core-plugin-api
37
- prerelease: false
38
37
  type: :runtime
38
+ prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - ">="
@@ -51,8 +51,8 @@ dependencies:
51
51
  - !ruby/object:Gem::Version
52
52
  version: 6.5.0
53
53
  name: logstash-core
54
- prerelease: false
55
54
  type: :runtime
55
+ prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - ">="
@@ -65,8 +65,8 @@ dependencies:
65
65
  - !ruby/object:Gem::Version
66
66
  version: '0'
67
67
  name: logstash-codec-plain
68
- prerelease: false
69
68
  type: :runtime
69
+ prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - ">="
@@ -79,8 +79,8 @@ dependencies:
79
79
  - !ruby/object:Gem::Version
80
80
  version: 5.74.0
81
81
  name: sequel
82
- prerelease: false
83
82
  type: :runtime
83
+ prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - ">="
@@ -93,8 +93,8 @@ dependencies:
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
95
  name: lru_redux
96
- prerelease: false
97
96
  type: :runtime
97
+ prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - ">="
@@ -107,8 +107,8 @@ dependencies:
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
109
  name: tzinfo
110
- prerelease: false
111
110
  type: :runtime
111
+ prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - ">="
@@ -121,8 +121,8 @@ dependencies:
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  name: tzinfo-data
124
- prerelease: false
125
124
  type: :runtime
125
+ prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - ">="
@@ -135,8 +135,8 @@ dependencies:
135
135
  - !ruby/object:Gem::Version
136
136
  version: '1.3'
137
137
  name: logstash-mixin-ecs_compatibility_support
138
- prerelease: false
139
138
  type: :runtime
139
+ prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
@@ -149,8 +149,8 @@ dependencies:
149
149
  - !ruby/object:Gem::Version
150
150
  version: '1.0'
151
151
  name: logstash-mixin-validator_support
152
- prerelease: false
153
152
  type: :runtime
153
+ prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - "~>"
@@ -163,8 +163,8 @@ dependencies:
163
163
  - !ruby/object:Gem::Version
164
164
  version: '1.0'
165
165
  name: logstash-mixin-event_support
166
- prerelease: false
167
166
  type: :runtime
167
+ prerelease: false
168
168
  version_requirements: !ruby/object:Gem::Requirement
169
169
  requirements:
170
170
  - - "~>"
@@ -177,8 +177,8 @@ dependencies:
177
177
  - !ruby/object:Gem::Version
178
178
  version: '1.0'
179
179
  name: logstash-mixin-scheduler
180
- prerelease: false
181
180
  type: :runtime
181
+ prerelease: false
182
182
  version_requirements: !ruby/object:Gem::Requirement
183
183
  requirements:
184
184
  - - "~>"
@@ -191,8 +191,8 @@ dependencies:
191
191
  - !ruby/object:Gem::Version
192
192
  version: '0'
193
193
  name: childprocess
194
- prerelease: false
195
194
  type: :development
195
+ prerelease: false
196
196
  version_requirements: !ruby/object:Gem::Requirement
197
197
  requirements:
198
198
  - - ">="
@@ -205,8 +205,8 @@ dependencies:
205
205
  - !ruby/object:Gem::Version
206
206
  version: '2.3'
207
207
  name: logstash-devutils
208
- prerelease: false
209
208
  type: :development
209
+ prerelease: false
210
210
  version_requirements: !ruby/object:Gem::Requirement
211
211
  requirements:
212
212
  - - ">="
@@ -219,8 +219,8 @@ dependencies:
219
219
  - !ruby/object:Gem::Version
220
220
  version: '0'
221
221
  name: timecop
222
- prerelease: false
223
222
  type: :development
223
+ prerelease: false
224
224
  version_requirements: !ruby/object:Gem::Requirement
225
225
  requirements:
226
226
  - - ">="
@@ -263,6 +263,7 @@ files:
263
263
  - lib/logstash/inputs/tzinfo_jruby_patch.rb
264
264
  - lib/logstash/plugin_mixins/jdbc/common.rb
265
265
  - lib/logstash/plugin_mixins/jdbc/jdbc.rb
266
+ - lib/logstash/plugin_mixins/jdbc/sequel_bootstrap.rb
266
267
  - lib/logstash/plugin_mixins/jdbc/statement_handler.rb
267
268
  - lib/logstash/plugin_mixins/jdbc/timezone_proxy.rb
268
269
  - lib/logstash/plugin_mixins/jdbc/value_tracking.rb
@@ -322,7 +323,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
322
323
  - !ruby/object:Gem::Version
323
324
  version: '0'
324
325
  requirements: []
325
- rubygems_version: 3.2.33
326
+ rubygems_version: 3.3.26
326
327
  signing_key:
327
328
  specification_version: 4
328
329
  summary: Integration with JDBC - input and filter plugins