Firebird JDBC driver and JCA get NPE under load.
jeffbannister Mar 16, 2004 9:08 AMHi,
I have an application that consists of 5 MDBs processing a message queue. Each MDB updates an entity bean and creates a new record in the database. When the application is running for a large number of messages say 10,000 a small number say 5 in 1000 messages fail to be process successfully due to a NullPointerException thrown from inside the JDBC driver.
I am using Firebird database v1.0.1 & JayBird JDBC driver, virutally unmodifed firebird-ds.xml apart for logins, path etc, and firebirdsql.rar.
My MDB has transaction attribute 'NotSupported'
I have initially raised this NPE on the firebird-java forum and one of the driver developers has checked the driver code and claims the issue maybe being caused by the JBoss JCA layer that wraps the JDBC driver.
This post can be found at http://groups.yahoo.com/group/Firebird-Java/message/5307
Also when this NPE occurs it looks like I leak a database connection, so that at the end of the job I have approx 1 extra connection for each error.
So if the max pool size is 50 and the job has 30 of these exceptions the number of connections opened to the database server is approx 80.
Has anyone successfully used Firebird v1.0.1, the Jaybird JDBC driver, and JBoss JCA wrapper on an application under load and has any success?
I'm unsure of where to go next with this issue, what can I try next?
regards,
Jeff.
14:09:29,031,MailProcessorBean] Unable to store email sent record : null
STACK TRACE BEGIN[###################
java.lang.NullPointerException
at org.firebirdsql.jgds.GDS_Impl.isc_start_transaction(GDS_Impl.java:486)
at org.firebirdsql.jca.FBManagedConnectionFactory.getCurrentIscTrHandle(FBManagedConnectionFactory.java:491)
at org.firebirdsql.jca.FBManagedConnection.findIscTrHandle(FBManagedConnection.java:1064)
at org.firebirdsql.jca.FBManagedConnection.internalStart(FBManagedConnection.java:676)
at org.firebirdsql.jca.FBLocalTransaction.internalBegin(FBLocalTransaction.java:118)
at org.firebirdsql.jca.FBLocalTransaction.begin(FBLocalTransaction.java:103)
at org.firebirdsql.jdbc.FBConnection.ensureInTransaction(FBConnection.java:998)
at org.firebirdsql.jdbc.FBPreparedStatement.(FBPreparedStatement.java:77)
at org.firebirdsql.jdbc.FBConnection.prepareStatement(FBConnection.java:243)
at com.beetleweed.bulkmail.ejbs.MailDAO.store(MailDAO.java:29)
at com.beetleweed.bulkmail.ejbs.MailProcessorBean.onMessage(MailProcessorBean.java:293)
at sun.reflect.GeneratedMethodAccessor179.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:460)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
at org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:62)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:240)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:128)
at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:90)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:374)
at org.jboss.ejb.Container.invoke(Container.java:700)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker.invoke(JMSContainerInvoker.java:824)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker$MessageListenerImpl.onMessage(JMSContainerInvoker.java:1114)
at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:256)
at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:633)
at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:433)
at org.jboss.mq.SpySession.run(SpySession.java:298)
at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:180)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:732)
at java.lang.Thread.run(Thread.java:536)
STACK TRACE END#####################]