2 Replies Latest reply on May 6, 2014 8:03 AM by imckinle

    Issue with huge messages when passing from an action to the following one in the same service

    pawer13

      Hello,

       

      I'm having problems to handle big amounts of data in a message, and I don't know how to handle them. Let me explain what I've done so far:

       

      I have a service launched by a Cron scheduler, and my first action adds a lot of data (about 10-15 MB) and then a second action of the same service stores all the data in another place. This service is deployed in the folder ../deploy-hasingleton because we want only one instance running in our cluster.

      When I start it, I'm getting the following error:

      2013-11-21 21:54:34,847 WARN  [WorkerThread#2[89.17.86.212:36368]] org.jboss.messaging.core.impl.JDBCSupport - SQLException caught, SQLState 22001 code:-302- assuming deadlock detected, try:1

      com.ibm.db2.jcc.am.SqlDataException: DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=4.14.113

              at com.ibm.db2.jcc.am.ed.a(ed.java:669)

              at com.ibm.db2.jcc.am.ed.a(ed.java:60)

              at com.ibm.db2.jcc.am.ed.a(ed.java:127)

              at com.ibm.db2.jcc.am.oo.b(oo.java:2366)

              at com.ibm.db2.jcc.am.oo.c(oo.java:2349)

              at com.ibm.db2.jcc.t4.ab.l(ab.java:370)

              at com.ibm.db2.jcc.t4.ab.a(ab.java:62)

              at com.ibm.db2.jcc.t4.p.a(p.java:50)

              at com.ibm.db2.jcc.t4.rb.b(rb.java:220)

              at com.ibm.db2.jcc.am.po.qc(po.java:3497)

              at com.ibm.db2.jcc.am.po.b(po.java:4458)

              at com.ibm.db2.jcc.am.po.ic(po.java:799)

              at com.ibm.db2.jcc.am.po.executeUpdate(po.java:777)

              at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:365)

              at org.jboss.messaging.core.impl.JDBCPersistenceManager$1AddReferenceRunner.doTransaction(JDBCPersistenceManager.java:1619)

              at org.jboss.messaging.core.impl.JDBCSupport$JDBCTxRunner2.execute(JDBCSupport.java:658)

              at org.jboss.messaging.core.impl.JDBCSupport$JDBCTxRunner2.executeWithRetry(JDBCSupport.java:698)

              at org.jboss.messaging.core.impl.JDBCPersistenceManager.addReference(JDBCPersistenceManager.java:1686)

              at org.jboss.messaging.core.impl.ChannelSupport.handle(ChannelSupport.java:239)

              at org.jboss.messaging.core.impl.postoffice.MessagingPostOffice.routeInternal(MessagingPostOffice.java:3175)

              at org.jboss.messaging.core.impl.postoffice.MessagingPostOffice.route(MessagingPostOffice.java:983)

              at org.jboss.jms.server.endpoint.ServerConnectionEndpoint.sendMessage(ServerConnectionEndpoint.java:787)

              at org.jboss.jms.server.endpoint.ServerSessionEndpoint.send(ServerSessionEndpoint.java:438)

              at org.jboss.jms.server.endpoint.advised.SessionAdvised.org$jboss$jms$server$endpoint$advised$SessionAdvised$send$aop(SessionAdvised.java:87)

              at org.jboss.jms.server.endpoint.advised.SessionAdvised$send_7280680627620114891.invokeTarget(SessionAdvised$send_7280680627620114891.java)

              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)

              at org.jboss.jms.server.container.SecurityAspect.handleSend(SecurityAspect.java:162)

              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)

              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

              at java.lang.reflect.Method.invoke(Method.java:600)

              at org.jboss.aop.advice.PerInstanceAdvice.invoke(PerInstanceAdvice.java:122)

              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)

              at org.jboss.jms.server.endpoint.advised.SessionAdvised.send(SessionAdvised.java)

              at org.jboss.jms.wireformat.SessionSendRequest.serverInvoke(SessionSendRequest.java:95)

              at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:165)

              at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:967)

              at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:791)

              at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:744)

              at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:586)

              at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:234)

       

      This error rises when the first action finishes and the second action is about to start, and then Jboss re-tries about 25 times before giving up. It seems it's trying to store something (the message, I guess) in its database. If the size of the message is smaller this error does not rise. Any hint about what's happening and how to handle it? Currently I'm testing changing the message type from default (XML) to serialized, but I don't know if this is helpful.