Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

“Unable to find driver class” when use jdbc_driver_library => “/home/ubuntu/ojdbc6.jar” after upgrade to Logstash 6.8.4 #357

Closed
JerseyGood opened this issue Oct 29, 2019 · 5 comments

Comments

@JerseyGood
Copy link

The latest release of Logstash 6.8.4 with jdbc-input-plugin 4.3.16 give us following error in syslog

Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172   job:
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172     Rufus::Scheduler::CronJob "*/1 * * * *" {}
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172   error:
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172     2172
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172     LogStash::PluginLoadingError
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172     Unable to find driver class via URLClassLoader in given driver jars: Java::oracle.jdbc.driver.OracleDriver and Java::oracle.jdbc.driver.OracleDriver
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172       /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-jdbc-4.3.16/lib/logstash/plugin_mixins/jdbc/jdbc.rb:181:in `open_jdbc_connection'
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172       /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-jdbc-4.3.16/lib/logstash/plugin_mixins/jdbc/jdbc.rb:253:in `execute_statement'
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172       /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-jdbc-4.3.16/lib/logstash/inputs/jdbc.rb:309:in `execute_query'
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172       /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-jdbc-4.3.16/lib/logstash/inputs/jdbc.rb:276:in `block in run'
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172       /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/jobs.rb:234:in `do_call'
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172       /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/jobs.rb:258:in `do_trigger'
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172       /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/jobs.rb:300:in `block in start_work_thread'
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172       /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/jobs.rb:299:in `block in start_work_thread'
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172       org/jruby/RubyKernel.java:1425:in `loop'
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172       /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/jobs.rb:289:in `block in start_work_thread'
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172   tz:
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172     ENV['TZ']:
Oct 24 21:02:00 ip-10-40-0-99 logstash[15520]:   2172     Time.now: 2019-10-24 21:02:00 +0900

our pipeline config looks like

        jdbc_driver_library => "/home/ubuntu/ojdbc6.jar"
        jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"

OS Info

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04.5 LTS
Release:	16.04
Codename:	xenial

JDK info

$ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

It was fine when running Logstash 6.8.2 and 6.8.3 with jdbc-input-plugin 4.3.13.
So I guess something wrong with the Driver loading modification for jdbc-input-plugin 4.3.14. and 4.3.15 release

A workaround for us is to not using jdbc_driver_library but place the ojdbc6.jar in logstash-core lib path

install -C -m 644 -o logstash -g logstash /home/ubuntu/ojdbc6.jar /usr/share/logstash/logstash-core/lib/jars
@andsel
Copy link

andsel commented Oct 29, 2019

Hi @JerseyGood loading of drivers has changed recently, please could you try with 4.3.18 version and report here if the problem persists?

@JerseyGood
Copy link
Author

@andsel Thanks for the reply, will give it a try with 4.3.18 of jdbc-input-plugin and share the result.

But we are installing Logstash through apt and the latest stable version logstash is 1:6.8.4-1 which I believe by default uses jdbc-input-plugin 4.3.16

https://www.elastic.co/guide/en/logstash/6.8/logstash-6-8-4.html

Do you know when will logstash bump up the version to use jdbc-input-plugin 4.3.18

@jottorice
Copy link

I've run into a very similar-looking problem with Logstash 7.4, installed on Ubuntu 18.0.4 with the "apt-get" instructions listed here: https://www.elastic.co/guide/en/logstash/current/installing-logstash.html

$ echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
$ sudo apt-get update && sudo apt-get install logstash
$ /usr/share/logstash/bin/logstash --version
logstash 7.4.2

Trying to connect to a MySQL database with the JDBC connector mysql-connector-java-8.0.18.jar, Logstash just kept failing with plugin loading errors. But this error went away when I updated the logstash-input-jdbc plugin:

$ sudo /usr/share/logstash/bin/logstash-plugin update logstash-input-jdbc
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.headius.backport9.modules.Modules to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of com.headius.backport9.modules.Modules
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Updating logstash-input-jdbc
Updated logstash-input-jdbc 4.3.16 to 4.3.18

This is a very tricky problem to diagnose! 4.3.18 should be made the default plugin version ASAP, to avoid this bug, AFAICS.

@lpkirby
Copy link

lpkirby commented Nov 22, 2019

I can confirm this is fixed with logstash 6.8.5

@robbavey
Copy link
Contributor

This was fixed by #355 and is fixed by the latest release of the jdbc input.

Running bin/logstash-plugin update logstash-input-jdbc should get you to 4.3.19 (this fix landed in 4.3.18):

/tmp/logstash-7.5.0
❯ bin/logstash-plugin update logstash-input-jdbc
Updating logstash-input-jdbc
Updated logstash-input-jdbc 4.3.16 to 4.3.19

Version >=4.3.19 will be shipped in 7.5.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants