[jboss-jira] [JBoss JIRA] (AS7-4274) Remoting deadlock after deserialization exception of a large object graph returned from EJB.
Daniel Bevenius (JIRA)
jira-events at lists.jboss.org
Tue Apr 3 05:02:48 EDT 2012
[ https://issues.jboss.org/browse/AS7-4274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12681180#comment-12681180 ]
Daniel Bevenius commented on AS7-4274:
--------------------------------------
??Can you attach a Maven project which reproduces this???
Absolutely, sorry about that.
??My attempts at reproducing this with the Gradle project have run into problem due to my lack of experience in Gradle and the time it took to setup Gradle on my system??
I should have made this more clear and that you don't need to have Gradle installed on your system, the gradlew (Gradle wrapper) can be executed by simple running, './gradlew exec'. So the steps would be:
# Copy target/libs/ejb-deadlock.jar to server/standalone/deployments
# ./gradlew exec
But let me create a maven project for this and I'll stick to maven in the future.
Thanks for looking into this issue!
> Remoting deadlock after deserialization exception of a large object graph returned from EJB.
> --------------------------------------------------------------------------------------------
>
> Key: AS7-4274
> URL: https://issues.jboss.org/browse/AS7-4274
> Project: Application Server 7
> Issue Type: Bug
> Components: EJB, Remoting
> Affects Versions: 7.1.1.Final
> Environment: JBoss AS 7.1.1.Final
> Reporter: Daniel Bevenius
> Assignee: jaikiran pai
> Attachments: ejb-deadlock.jar, thread-dump.txt
>
>
> The use case is a remote EJB client that calls an EJB which returns a large object graph. Due to a configuration error on our part a class that is part of this object graph is not available in the clients classpath. This causes a ClassNotFoundException to be thrown when deserializing, and after this exception is thrown the client "freezes" but can be interrupted by CTRL+C, but the server will deadlock and will not respond and has to be shutdown by killing the server process.
> Below is part of the thread dump (the complete thread dump will be attached to this jira)
> {noformat}
> "Remoting "beve-7719" read-1" prio=5 tid=00000000028cc800 nid=0xb56ab000 waiting for monitor entry [00000000b56aa000]
> java.lang.Thread.State: BLOCKED (on object monitor)
> at org.xnio.streams.BufferPipeOutputStream.close(BufferPipeOutputStream.java:156)
> - waiting to lock <0000000005697300> (a org.xnio.streams.BufferPipeOutputStream)
> at org.xnio.IoUtils.safeClose(IoUtils.java:137)
> at org.jboss.remoting3.remote.OutboundMessage.closeAsync(OutboundMessage.java:158)
> at org.jboss.remoting3.remote.RemoteConnectionChannel.handleAsyncClose(RemoteConnectionChannel.java:502)
> at org.jboss.remoting3.remote.RemoteReadListener.handleEvent(RemoteReadListener.java:259)
> at org.jboss.remoting3.remote.RemoteReadListener.handleEvent(RemoteReadListener.java:45)
> at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
> at org.xnio.channels.TranslatingSuspendableChannel.handleReadable(TranslatingSuspendableChannel.java:189)
> at org.xnio.channels.TranslatingSuspendableChannel$1.handleEvent(TranslatingSuspendableChannel.java:103)
> at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
> at org.xnio.nio.NioHandle.run(NioHandle.java:90)
> at org.xnio.nio.WorkerThread.run(WorkerThread.java:184)
> Locked ownable synchronizers:
> - None
> "EJB default - 4" prio=5 tid=0000000002a10c00 nid=0xb3971000 in Object.wait() [00000000b3970000]
> java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <00000000056972d0> (a org.jboss.remoting3.remote.OutboundMessage)
> at java.lang.Object.wait(Object.java:485)
> at org.jboss.remoting3.remote.OutboundMessage$1.accept(OutboundMessage.java:91)
> - locked <00000000056972d0> (a org.jboss.remoting3.remote.OutboundMessage)
> at org.xnio.streams.BufferPipeOutputStream.send(BufferPipeOutputStream.java:125)
> at org.xnio.streams.BufferPipeOutputStream.send(BufferPipeOutputStream.java:113)
> at org.xnio.streams.BufferPipeOutputStream.getBuffer(BufferPipeOutputStream.java:77)
> at org.xnio.streams.BufferPipeOutputStream.write(BufferPipeOutputStream.java:86)
> - locked <0000000005697300> (a org.xnio.streams.BufferPipeOutputStream)
> at org.jboss.remoting3.remote.OutboundMessage.write(OutboundMessage.java:168)
> at java.io.DataOutputStream.write(DataOutputStream.java:71)
> - locked <00000000056972b8> (a java.io.DataOutputStream)
> at org.jboss.as.ejb3.remote.protocol.versionone.AbstractMessageHandler$1.write(AbstractMessageHandler.java:188)
> at java.io.OutputStream.write(OutputStream.java:99)
> at org.jboss.marshalling.OutputStreamByteOutput.write(OutputStreamByteOutput.java:56)
> at org.jboss.marshalling.SimpleDataOutput.flush(SimpleDataOutput.java:311)
> at org.jboss.marshalling.SimpleDataOutput.write(SimpleDataOutput.java:82)
> at org.jboss.marshalling.river.BlockMarshaller.flush(BlockMarshaller.java:306)
> at org.jboss.marshalling.river.RiverMarshaller.writeEndBlock(RiverMarshaller.java:961)
> at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1008)
> at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:885)
> at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:825)
> at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1063)
> at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
> at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:885)
> at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:62)
> at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:119)
> at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.writeMethodInvocationResponse(MethodInvocationMessageHandler.java:338)
> at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.access$500(MethodInvocationMessageHandler.java:64)
> at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler$1.run(MethodInvocationMessageHandler.java:226)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:680)
> at org.jboss.threads.JBossThread.run(JBossThread.java:122)
> Locked ownable synchronizers:
> - <0000000008350f48> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
> {noformat}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list