diff --git a/lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb b/lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb index b0adc4b61..6bf7dd423 100644 --- a/lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb +++ b/lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb @@ -209,13 +209,9 @@ def autocommit=(value) def ping exec_no_retry("select 1 from dual") @active = true - rescue NativeException => e + rescue Java::JavaSql::SQLException => e @active = false - if e.message =~ /^java\.sql\.SQL(Recoverable)?Exception/ - raise OracleEnhanced::ConnectionException, e.message - else - raise - end + raise OracleEnhanced::ConnectionException, e.message end # Resets connection, by logging off and creating a new connection. @@ -224,13 +220,9 @@ def reset! begin new_connection(@config) @active = true - rescue NativeException => e + rescue Java::JavaSql::SQLException => e @active = false - if e.message =~ /^java\.sql\.SQL(Recoverable)?Exception/ - raise OracleEnhanced::ConnectionException, e.message - else - raise - end + raise OracleEnhanced::ConnectionException, e.message end end @@ -239,8 +231,8 @@ def with_retry(&block) should_retry = auto_retry? && autocommit? begin yield if block_given? - rescue NativeException => e - raise unless e.message =~ /^java\.sql\.SQL(Recoverable)?Exception: (Closed Connection|Io exception:|No more data to read from socket|IO Error:)/ + rescue Java::JavaSql::SQLException => e + raise unless e.message =~ /^(Closed Connection|Io exception:|No more data to read from socket|IO Error:)/ @active = false raise unless should_retry should_retry = false @@ -455,11 +447,9 @@ def describe(name) super end - # Return NativeException / java.sql.SQLException error code + # Return java.sql.SQLException error code def error_code(exception) case exception - when NativeException - exception.cause.getErrorCode when Java::JavaSql::SQLException exception.getErrorCode else diff --git a/spec/active_record/connection_adapters/oracle_enhanced/connection_spec.rb b/spec/active_record/connection_adapters/oracle_enhanced/connection_spec.rb index 683748678..d801f308b 100644 --- a/spec/active_record/connection_adapters/oracle_enhanced/connection_spec.rb +++ b/spec/active_record/connection_adapters/oracle_enhanced/connection_spec.rb @@ -381,7 +381,7 @@ def kill_current_session ActiveRecord::Base.connection.auto_retry = false kill_current_session if defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby" - expect { @conn.exec("SELECT * FROM dual") }.to raise_error(NativeException) + expect { @conn.exec("SELECT * FROM dual") }.to raise_error(Java::JavaSql::SQLRecoverableException) else expect { @conn.exec("SELECT * FROM dual") }.to raise_error(OCIError) end @@ -399,7 +399,7 @@ def kill_current_session ActiveRecord::Base.connection.auto_retry = false kill_current_session if defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby" - expect { @conn.select("SELECT * FROM dual") }.to raise_error(NativeException) + expect { @conn.select("SELECT * FROM dual") }.to raise_error(Java::JavaSql::SQLRecoverableException) else expect { @conn.select("SELECT * FROM dual") }.to raise_error(OCIError) end