I am still seeing a hang in EntityInstanceInterceptor =( I think I am
starting to understand the problem more, which is good. Unfortunately I
still don't have a good idea for which chunk of code is at fault.
In reference to the complicated scenario that I explained before, I might
be able to provide some insight. I think that there are a few different
problems here.
I re-ran a large test but removed the last vm and mdb that actually
processed the requests. This works with no hangs. I then started up the
end MDB to process all of the messages from the router, it looks like it
processed about 16 requests then hung.
The MDB thread will hang calling a method from some internal code, which
will wait() for a notification. Another internal thread is invoking a call
back which will collect the results of the work and send the response. This
is hanging in socket io in the JBossMQ RMI IL:
<snip>
at java.net.SocketInputStream.socketRead(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:86)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:186)
at java.io.BufferedInputStream.read(BufferedInputStream.java:204)
at java.io.DataInputStream.readByte(DataInputStream.java:222)
at
sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:186)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:122)
at
org.jbossmq.distributed.server.DistributedJMSServerRMIImpl_Stub.addMessage(Unknown
Source)
at org.jbossmq.SpyConnection.sendToServer(SpyConnection.java:373)
at org.jbossmq.SpySession.sendMessage(SpySession.java:362)
at org.jbossmq.SpyQueueSender.send(SpyQueueSender.java:103)
at org.jbossmq.SpyQueueSender.send(SpyQueueSender.java:62)
at
<truncated/>
</snip>
This will essentially lock the vm (it is not spinning or wedged, but will
not do anything else). Since the internal code is waiting for this call
back to finish before it call notify, the MDB thread TX will timeout.
The first odd thing is that when it times out a message is logged, but the
thread still hangs. Should it be interrupted or something?
Now I am still not sure why, then all of these complenets are running
together that when the end MDB hangs that request creation beans also hang
(in the EntityInstanceInterceptor). I think that this might be releated to
the JBossMQ changes, since I think that both vms might be hung waiting on
some io from JBossMQ.
I might try running this all inside of one vm to see if the same problem
happens, which I would guess it would. I might also try turning up the
client poll rate again, with the end MDB turned off to see if there is still
a hang due to contention (as I was seeing before).
So I think we are making progress, but it looks like there is still
something wrong.
What should happen when a transaction times out?
--jason
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development