[jboss-user] [JCA] - Threading issues with WrapperDataSourceService in 4.0.5GA?

jbaxter do-not-reply at jboss.com
Thu Sep 10 07:03:08 EDT 2009


Hi there,

I have exposed my DataSource over JNDI (to an external JVM) from JBoss by setting use-java-context to false. The external process is multi-threaded and doing a lot of database queries. I am getting the following exception periodically...


  | 2009-09-10 11:12:40 ERROR PDMThread_3  [com.aps_uk.pdm.agent.PDMThread] Unknown error halting execution
  | java.lang.reflect.UndeclaredThrowableException
  | 	at $Proxy8.close(Unknown Source)
  | 	at com.aps_uk.pdm.common.util.DatabaseUtils.closeSilently(DatabaseUtils.java:28)
  | 	at com.aps_uk.pdm.agent.v4.V4Document.doProcessRecord(V4Document.java:110)
  | 	at com.aps_uk.pdm.agent.v4.BaseConverter.processRecord(BaseConverter.java:50)
  | 	at com.aps_uk.pdm.agent.PDMThread.run(PDMThread.java:128)
  | Caused by: java.lang.IllegalAccessException: Failed to find ResultSet: 17347336
  | 	at org.jboss.resource.adapter.jdbc.remote.WrapperDataSourceService.invoke(WrapperDataSourceService.java:231)
  | 	at sun.reflect.GeneratedMethodAccessor263.invoke(Unknown Source)
  | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 	at java.lang.reflect.Method.invoke(Method.java:585)
  | 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
  | 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
  | 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
  | 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
  | 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
  | 	at org.jboss.invocation.jrmp.server.JRMPInvoker$MBeanServerAction.invoke(JRMPInvoker.java:819)
  | 	at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:420)
  | 	at sun.reflect.GeneratedMethodAccessor262.invoke(Unknown Source)
  | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 	at java.lang.reflect.Method.invoke(Method.java:585)
  | 	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
  | 	at sun.rmi.transport.Transport$1.run(Transport.java:153)
  | 	at java.security.AccessController.doPrivileged(Native Method)
  | 	at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
  | 	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
  | 	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
  | 	at java.lang.Thread.run(Thread.java:595)
  | 	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
  | 	at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
  | 	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
  | 	at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Source)
  | 	at org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProxy.java:119)
  | 	at org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:227)
  | 	at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:167)
  | 	at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:59)
  | 	at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:86)
  | 	... 5 more
  | 

As you can see if appears ResultSet '17347336' has disappeared midprocess.

Looking the JBoss server logs I can see...


  | 2009-09-10 11:12:40 DEBUG [org.jboss.resource.adapter.jdbc.remote.WrapperDataSourceService] Created ResultSet proxy for invoker=jboss:service=invoker,type=jrmp, targetName=jboss.jca:service=DataSourceBinding,name=V4DATASOURCE, cacheID=17347336
  | 
  | 2009-09-10 11:12:40 DEBUG [org.jboss.resource.adapter.jdbc.remote.WrapperDataSourceService] Created ResultSet proxy for invoker=jboss:service=invoker,type=jrmp, targetName=jboss.jca:service=DataSourceBinding,name=V4DATASOURCE, cacheID=17347336
  | 
  | 2009-09-10 11:12:40 DEBUG [org.jboss.resource.adapter.jdbc.remote.WrapperDataSourceService] Closed ResultSet=17347336
  | 

It seems the WrapperDataSourceService is giving the same cacheID to two ResultSets, and when one of my threads closes the ResultSet, the other throws an exception when it attempts to use it...

I have just spotted the following post from Weston Price which points out remote usage is experimental... http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3982218

Unfortunatly upgrading JBoss is not possible, does anyone know if it is possible to recompile JBoss with an updated (fixed) WrapperDataSourceService? Does it still exist even...

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4254392#4254392

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4254392



More information about the jboss-user mailing list