From 37631a62b759f9ffe53a5715ee407d0698bed09c Mon Sep 17 00:00:00 2001 From: Karl Southern Date: Sun, 28 Aug 2016 21:48:06 +0100 Subject: [PATCH] Forward port connection_test configuration option from v2.x --- CHANGELOG.md | 24 +++++++++++++++++------- README.md | 1 + Vagrantfile | 2 +- lib/logstash/outputs/jdbc.rb | 7 ++++++- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 83e358b..f4e3e53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,23 @@ # Change Log All notable changes to this project will be documented in this file, from 0.2.0. -## [1.0.0-pre] - UNRELEASED - - Test coverage extended to multiple SQL engines - - Change: Timestamps are sent to SQL without timezone (See https://github.com/theangryangel/logstash-output-jdbc/issues/33 for justification) - - Change: Removes jar files from repository, in favour of vendoring using jar-dependencies - - Change: Updates to logstash-api v2.0 - - Change: Switches from slf4j-nop to log4j for HikariCP logging - - Change: Now selectively retries only a subset of SQL Exceptions +## [0.3.1] = 2016-08-28 + - Adds connection_test configuration option, to prevent the connection test from occuring, allowing the error to be suppressed. + Useful for cockroachdb deployments. https://github.com/theangryangel/logstash-output-jdbc/issues/53 + +## [0.3.0] - 2016-07-24 + - Brings tests from v5 branch, providing greater coverage + - Removes bulk update support, due to inconsistent behaviour + - Plugin now marked as threadsafe, meaning only 1 instance per-Logstash + - Raises default max_pool_size to match the default number of workers (1 connection per worker) + +## [0.2.10] - 2016-07-07 + - Support non-string entries in statement array + - Adds backtrace to exception logging + +## [0.2.9] - 2016-06-29 + - Fix NameError exception. + - Moved log_jdbc_exception calls ## [0.2.7] - 2016-05-29 - Backport retry exception logic from v5 branch diff --git a/README.md b/README.md index 5631dca..dadda93 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ For development: | driver_auto_commit | Boolean | If the driver does not support auto commit, you should set this to false | No | True | | driver_jar_path | String | File path to jar file containing your JDBC driver. This is optional, and all JDBC jars may be placed in $LOGSTASH_HOME/vendor/jar/jdbc instead. | No | | | connection_string | String | JDBC connection URL | Yes | | +| connection_test | Boolean | Run a JDBC connection test. Some drivers do not function correctly, and you may need to disable the connection test to supress an error. Cockroach with the postgres JDBC driver is such an example. | No | Yes | | username | String | JDBC username - this is optional as it may be included in the connection string, for many drivers | No | | | password | String | JDBC password - this is optional as it may be included in the connection string, for many drivers | No | | | statement | Array | An array of strings representing the SQL statement to run. Index 0 is the SQL statement that is prepared, all other array entries are passed in as parameters (in order). A parameter may either be a property of the event (i.e. "@timestamp", or "host") or a formatted string (i.e. "%{host} - %{message}" or "%{message}"). If a key is passed then it will be automatically converted as required for insertion into SQL. If it's a formatted string then it will be passed in verbatim. | Yes | | diff --git a/Vagrantfile b/Vagrantfile index 885f4e3..2f7c815 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -10,7 +10,7 @@ Vagrant.configure(2) do |config| sed -i 's/main/main contrib non-free/g' /etc/apt/sources.list apt-get update apt-get remove openjdk-7-jre-headless -y -q - apt-get install git openjdk-8-jre -y -q + apt-get install git openjdk-8-jre curl -y -q gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 curl -sSL https://get.rvm.io | bash -s stable --ruby=jruby-1.7 usermod -a -G rvm vagrant diff --git a/lib/logstash/outputs/jdbc.rb b/lib/logstash/outputs/jdbc.rb index d352b69..649fd79 100644 --- a/lib/logstash/outputs/jdbc.rb +++ b/lib/logstash/outputs/jdbc.rb @@ -83,6 +83,9 @@ class LogStash::Outputs::Jdbc < LogStash::Outputs::Base # Suitable for configuring retryable custom JDBC SQL state codes. config :retry_sql_states, validate: :array, default: [] + # Run a connection test on start. + config :connection_test, validate: :boolean, default: true + # Maximum number of sequential failed attempts, before we stop retrying. # If set to < 1, then it will infinitely retry. # At the default values this is a little over 10 minutes @@ -144,10 +147,12 @@ class LogStash::Outputs::Jdbc < LogStash::Outputs::Base validate_connection_timeout = (@connection_timeout / 1000) / 2 + return unless @connection_test + # Test connection test_connection = @pool.getConnection unless test_connection.isValid(validate_connection_timeout) - @logger.error('JDBC - Connection is not valid. Please check connection string or that your JDBC endpoint is available.') + @logger.error('JDBC - Connection is not reporting as validate. Either connection is invalid, or driver is not getting the appropriate response.') end test_connection.close end