0 Replies Latest reply on May 13, 2014 5:17 AM by s.horn

    Serialization Problems killing JBoss Remoting Threads

    s.horn

      Hello,

       

      we are running JBoss 7.3.0 and we running into a problem with JBoss crossplatform serialization.

       

      We have the following enviroment:

      JBoss is running on an Linux Server.

       

      The clients connection via EJB Remote to the server may use either Windows or Linux.

       

      With the windows clients we have the issue, that serialization in some cases (not everytime, it seems to be random) stuck.

      The server method is never invoked and the client never stops invoking server method.

       

      The main problem with this is, that the Remoting Thread used for this communication is blocked until next restart of the application Server.

       

      The Remoting Threads are in state Waiting on object monitor, as you can see in the following threaddump,

       

      "Remoting "procar-app2" task-8" prio=10 tid=0x00007fe8b8481000 nid=0x14c4 in Object.wait() [0x00007fe8ac3a6000]

         java.lang.Thread.State: WAITING (on object monitor)

          at java.lang.Object.wait(Native Method)

          - waiting on <0x00000006a01376d0> (a org.xnio.streams.BufferPipeInputStream)

          at java.lang.Object.wait(Object.java:503)

          at org.xnio.streams.BufferPipeInputStream.read(BufferPipeInputStream.java:174)

          - locked <0x00000006a01376d0> (a org.xnio.streams.BufferPipeInputStream)

          at org.jboss.remoting3.remote.InboundMessage$3.read(InboundMessage.java:133)

          - locked <0x00000006a01376d0> (a org.xnio.streams.BufferPipeInputStream)

          at java.io.DataInputStream.read(DataInputStream.java:149)

          at org.jboss.as.ejb3.remote.protocol.AbstractMessageHandler$2.read(AbstractMessageHandler.java:269)

          at java.io.FilterInputStream.read(FilterInputStream.java:133)

          at org.jboss.marshalling.SimpleDataInput.readFully(SimpleDataInput.java:179)

          at org.jboss.marshalling.river.RiverUnmarshaller.doReadByteArray(RiverUnmarshaller.java:1490)

          at org.jboss.marshalling.river.RiverUnmarshaller.doReadArray(RiverUnmarshaller.java:1558)

          at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:349)

          at org.jboss.marshalling.river.BlockUnmarshaller.readObject(BlockUnmarshaller.java:153)

          at org.jboss.marshalling.river.BlockUnmarshaller.readObject(BlockUnmarshaller.java:139)

          at de.procar.ecaros2.container.DocumentData.readContainer(DocumentData.java:313)

          at de.procar.sql.container.ExternalizableContainer.readExternal(ExternalizableContainer.java:53)

          at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1296)

          at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:276)

          at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:213)

          at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:45)

          at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.processMessage(MethodInvocationMessageHandler.java:163)

          at org.jboss.as.ejb3.remote.protocol.versionone.VersionOneProtocolChannelReceiver.handleMessage(VersionOneProtocolChannelReceiver.java:160)

          at org.jboss.remoting3.remote.RemoteConnectionChannel$5.run(RemoteConnectionChannel.java:435)

          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

          at java.lang.Thread.run(Thread.java:744)

       

      Our Objects use the externalizable interface for serialization and only the windows clients causes the problem.

      Linux to linux serialization works like a charm.

       

      Any ideas what may cause this blocking serialization?