History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: LBCORE-120
Type: Bug Bug
Status: Open Open
Priority: Minor Minor
Assignee: Ceki Gulcu
Reporter: Manuel Kueblboeck
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
logback-core

ArrayIndexOutOfBoundsException when using Oracle driver ojdbc6 with DBAppender

Created: 15/Sep/09 09:51 PM   Updated: 09/Feb/11 01:42 PM
Component/s: Appender
Affects Version/s: 0.9.17
Fix Version/s: None

Environment: Windows XP, Oracle Database 11g Release 11.1.0.0.0, jdk1.6.0_16


 Description  « Hide
When using the Oracle driver ojdbc6 (11.1.0.7.0) an ArrayIndexOutOfBoundsException occurs when trying to write a log message to the database (see stacktrace below). I am using ch.qos.logback.core.db.DriverManagerConnectionSource in my logback.xml. When using ojdbc14 (10.2.0.4), this works fine.

07:31:43,997 |-ERROR in ch.qos.logback.classic.db.DBAppender[LogDB] - problem appending event java.lang.ArrayIndexOutOfBoundsException: 10
at java.lang.ArrayIndexOutOfBoundsException: 10
at at oracle.jdbc.driver.OracleSql.computeBasicInfo(OracleSql.java:950)
at at oracle.jdbc.driver.OracleSql.getSqlKind(OracleSql.java:623)
at at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:1212)
at at oracle.jdbc.driver.T4CPreparedStatement.<init>(T4CPreparedStatement.java:28)
at at oracle.jdbc.driver.T4CDriverExtension.allocatePreparedStatement(T4CDriverExtension.java:68)
at at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3140)
at at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3042)
at at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:6022)
at at ch.qos.logback.core.db.DBAppenderBase.append(DBAppenderBase.java:90)
at at ch.qos.logback.core.AppenderBase.doAppend(AppenderBase.java:87)
at at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:60)
at at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:271)
at at ch.qos.logback.classic.Logger.callAppenders(Logger.java:258)
at at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:440)
at at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:394)
at at ch.qos.logback.classic.Logger.debug(Logger.java:521)
at at nz.co.integrationworks.reporting.AbstractReporter.log(AbstractReporter.java:37)
at at nz.co.integrationworks.reporting.AbstractReporter.log(AbstractReporter.java:29)
at at nz.co.integrationworks.reporting.BusinessLoggerManualTest.main(BusinessLoggerManualTest.java:28)

 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Manuel Kueblboeck - 08/Oct/09 01:05 AM
I hacked DBAppenderBase and changed the start method to always leave the variable cnxSupportsGetGeneratedKeys = false. (A more elegant way would of course be to extend DBAppender with a OracleDBAppender) After doing this it also works with ojdbc6 driver. So that sounds more like an Oracle issue than a logback issue.

I suggest this can be closed.

Manuel Kueblboeck - 08/Oct/09 09:24 PM
The nicer solution to what is described above is:

package nz.co.integrationworks.reporting.logback;

import ch.qos.logback.classic.db.DBAppender;

public class OracleDBAppender extends DBAppender {

@Override
public void start() {
super.start();

cnxSupportsGetGeneratedKeys = false;
System.out.println("The Oracle ojdbc6 driver does not support the getGeneratedKeys method.");
System.out.println("supportsGetGeneratedKeys=false");
}
}

Andreas Zielke - 09/Feb/11 01:42 PM
This is in fact an Oracle Issue, see http://forums.oracle.com/forums/thread.jspa?messageID=4594768

The Oracle driver which ships with the 10.3.3 version of Weblogic still has the problem.
The JDBC driver version 11.2.0.2.0 seems to fix this issue, but I didn't have time to verify this.