Well these are just several wild guesses, but I am curious.

If you generate the SalesRank arraylist without reference to the db, like
from random numbers, do you _ever_ get the hang?

I assume getSalesRankData closes whatever resultsets and statements it
uses? How about the connection?

I don't know much about postgres but have heard rumors it has snapshot
isolation/versioning similar to firebird/interbase.  If so, have you
committed after your (presumably read only) query in getSalesRankData?


Thanks
david jencks

On 2001.07.23 17:37:50 -0400 David Esposito wrote:
> Hello all,
> 
> Let's start with the summary of my problem: My client application hangs
> after a while when working with CMP Entity beans
> 
> Environment:
> 
> JBOSS is running on AppServer.mycompany.com (2.4.0.6 Beta) on Sun JDK
> 1.3.0_03
> 
> PostGreSQL 7.1.2 is running on DBServer.mycompany.com
> 
> My client application is ALSO running on DBServer.mycompany.com on Sun
> JDK
> 1.3.0_03
> 
> so it makes a nifty little out-and-back loop ... my client opens up a
> connection to JBOSS over the network, then JBOSS contacts the DB via JDBC
> over the network ...
> 
> Here's the pseudocode of what happens:
> 
> void run()
> {
>       //Perform some aggregate operation on the rows in my table
>       //This is a straight SQL query executed over a direct JDBC
> connection
>       ArrayList salesRank = getSalesRankData();
> 
>       //Get all of the records from my table (~1500 records)
>       Enumeration beans = myHome.findAll();
> 
>       while(beans.hasMoreElements())
>       {
>               //Get the new value for this row
>               Float curSalesRank = (Float)salesRank.get(i++);
> 
>               //Get the remote interface
>               MyBean curBean = beans.nextElement();
> 
>               //Set the sales rank
>               curBean.setSalesRank(curSalesRank);
> 
>       }
> 
> }
> 
> The problem is that, without warning, the while() loop gets stuck at the
> setSalesRank() call ... I installed OptimizeIt which was able to reveal
> the
> following stack trace:
> 
> 100.0% - 653169 ms - java.net.SocketInputStream.socketRead()
>   100.0% - 653169 ms - java.net.SocketInputStream.read()
>      100.0% - 653169 ms - java.io.BufferedInputStream.fill()
>         100.0% - 653169 ms - java.io.BufferedInputStream.read()
>            100.0% - 653169 ms - java.io.DataInputStream.readByte()
>               100.0% - 653169 ms -
> sun.rmi.transport.StreamRemoteCall.executeCall()
>                  100.0% - 653169 ms - sun.rmi.server.UnicastRef.invoke()
>                     100.0% - 653169 ms -
> org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker_Stub.invoke()
>                        100.0% - 653169 ms -
> org.jboss.ejb.plugins.jrmp.interfaces.GenericProxy.invokeContainer()
>                           100.0% - 653169 ms -
> org.jboss.ejb.plugins.jrmp.interfaces.EntityProxy.invoke()
>                              100.0% - 653169 ms - $Proxy5.setSalesRank()
>                                 100.0% - 653169 ms -
> com.mycompany.CatalogItemSalesRankHandler.handleEvent()
>                                    100.0% - 653169 ms -
> com.mycompany.EventServer.doJob()
>                                       100.0% - 653169 ms -
> com.mycompany.EventServer.run()
>                                          100.0% - 653169 ms -
> java.lang.Thread.run()
> 
> 
> 
> Back on the JBOSS box, after at least a minute or so, the following
> exception shows up:
> 
> [Catalog_Item] XAException: tx=XidImpl [FormatId=257,
> GlobalId=timqa1.amsnet.com//193493, BranchQual=] errorCode=XA_UNKNOWN(0)
> [Catalog_Item] javax.transaction.xa.XAException: Rollback failed: An I/O
> error has occured while flushing the output - Exception:
> java.io.IOException: Broken pipe
> [Catalog_Item] Stack Trace:
> [Catalog_Item]
> [Catalog_Item] java.io.IOException: Broken pipe
> [Catalog_Item]  at java.net.SocketOutputStream.socketWrite(Native Method)
> [Catalog_Item]  at
> java.net.SocketOutputStream.write(SocketOutputStream.java:83)
> [Catalog_Item]  at
> java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:72)
> [Catalog_Item]  at
> java.io.BufferedOutputStream.flush(BufferedOutputStream.java:130)
> [Catalog_Item]  at org.postgresql.PG_Stream.flush(PG_Stream.java:414)
> [Catalog_Item]  at org.postgresql.Connection.ExecSQL(Connection.java:464)
> [Catalog_Item]  at org.postgresql.Connection.ExecSQL(Connection.java:400)
> [Catalog_Item]  at
> org.postgresql.jdbc2.Connection.rollback(Connection.java:242)
> [Catalog_Item]  at
> org.jboss.pool.jdbc.xa.wrapper.XAResourceImpl.rollback(XAResourceImpl.java:2
> 17)
> [Catalog_Item]  at
> org.jboss.tm.TxCapsule.rollbackResources(TxCapsule.java:1539)
> [Catalog_Item]  at org.jboss.tm.TxCapsule.rollback(TxCapsule.java:394)
> [Catalog_Item]  at
> org.jboss.tm.TransactionImpl.rollback(TransactionImpl.java:88)
> [Catalog_Item]  at
> org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.
> java:343)
> [Catalog_Item]  at
> org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
> [Catalog_Item]  at
> org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:12
> 7)
> [Catalog_Item]  at
> org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)
> [Catalog_Item]  at
> org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:349)
> [Catalog_Item]  at
> org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerI
> nvoker.java:390)
> [Catalog_Item]  at java.lang.reflect.Method.invoke(Native Method)
> [Catalog_Item]  at
> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:241)
> [Catalog_Item]  at sun.rmi.transport.Transport$1.run(Transport.java:142)
> [Catalog_Item]  at java.security.AccessController.doPrivileged(Native
> Method)
> [Catalog_Item]  at
> sun.rmi.transport.Transport.serviceCall(Transport.java:139)
> [Catalog_Item]  at
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:443)
> [Catalog_Item]  at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:6
> 43)
> [Catalog_Item]  at java.lang.Thread.run(Thread.java:484)
> [Catalog_Item] End of Stack Trace
> 
> (I have more stack traces ... in fact, it generated about 8 of them ...
> all
> seem to be related to some connectivity issue between Postgres and JBOSS)
> ... i'll forward them along if you'd like more ...
> 
> I've played with the standardjboss.xml to adjust the bean cache sizes and
> this has had no effect on the hanging ...
> 
> So there are a couple of questions:
> 
> 1) What is causing JBOSS to hang with, in my opinion, pretty lightweight
> stuff ... If it's related to the DB driver, why doesn't an exception get
> propagated back to my client app?
> 
> 2) What could be causing a broken pipe between PG and JBOSS ... My guess
> is
> that it has to do with #1 and the fact that there has been too much
> inactivity between PG and JBOSS and PG has decided to drop the connection
> ... I'm going under the assumption that #2 is a result of #1 ...
> 
> Luckily, I can replicate this problem fairly quickly ... (usually it
> won't
> go for more than an hour or two without getting stuck) ... so if there is
> anything that you can think of that I should be trying, please let me
> know
> and I'll try to run some more tests ASAP ..
> 
> -Dave
> 
> 
> 
> _______________________________________________
> Jboss-development mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/jboss-development
> 
> 

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to