[jboss-user] [Remoting] - Re: EJB3/Socket invoker - connection timeouts

javajedi do-not-reply at jboss.com
Wed Jun 27 19:29:04 EDT 2007


Apologies to Ron for double-posting both here and on the support ticket, but I want to give the other kind souls who have been helping me out an update.

Just tried with store-bought 1.4.6.  Exact same problem.  Lots of these:


  | 2007-06-27 16:19:37,799 71584 ERROR [org.jboss.remoting.transport.socket.SocketServerInvoker] (SocketServerInvoker#0-3873:) Failed to accept socket connection
  | java.lang.reflect.InvocationTargetException
  |         at sun.reflect.GeneratedConstructorAccessor53.newInstance(Unknown Source)
  |         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
  |         at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
  |         at org.jboss.remoting.transport.socket.ServerThread.createServerSocket(ServerThread.java:175)
  |         at org.jboss.remoting.transport.socket.ServerThread.wakeup(ServerThread.java:216)
  |         at org.jboss.remoting.transport.socket.SocketServerInvoker.processInvocation(SocketServerInvoker.java:488)
  |         at org.jboss.remoting.transport.socket.SocketServerInvoker.run(SocketServerInvoker.java:412)
  |         at java.lang.Thread.run(Thread.java:619)
  | Caused by: java.io.IOException: Mismatch version of JBossSerialization signature
  |         at org.jboss.serial.io.JBossObjectInputStream.checkSignature(JBossObjectInputStream.java:113)
  |         at ...
  | 

Followed by one of these:


  | 2007-06-27 16:19:37,800 71585 DEBUG [org.jboss.remoting.transport.socket.ServerThread] (SocketServerInvokerThread-68.142.219.95-2:) Exiting run on exception
  | java.lang.InterruptedException
  |         at java.lang.Object.wait(Native Method)
  |         at java.lang.Object.wait(Object.java:485)
  |         at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:282)
  | 

(the missed notify)

and then deadlock.  The deadlocked threads:

One of these:


  | Thread: SocketServerInvoker#0-3873 : priority:5, demon:false, threadId:23, threadState:WAITING, threadLockName:org.jboss.remoting.transport.socket.LRUPool at 4f2076
  | 
  |     java.lang.Object.wait(Native Method)
  |     java.lang.Object.wait(Object.java:485)
  |     org.jboss.remoting.transport.socket.SocketServerInvoker.processInvocation(SocketServerInvoker.java:460)
  |     org.jboss.remoting.transport.socket.SocketServerInvoker.run(SocketServerInvoker.java:412)
  |     java.lang.Thread.run(Thread.java:619)
  | 

and several of these:


  | Thread: SocketServerInvokerThread-68.142.219.226-0 : priority:5, demon:false, threadId:79, threadState:WAITING, threadLockName:org.jboss.remoting.transport.socket.ServerThread at 134ab9b
  | 
  |     java.lang.Object.wait(Native Method)
  |     java.lang.Object.wait(Object.java:485)
  |     org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:282)
  | 

The call to ServerThread.wakeup is throwing an exception, caused by that "mismatch version of JBossSerialization signature" error.  Assuming that we can track down the root cause of that error, it's still going to be possible for a socket timeout to occur here, so we have to be prepared for this failure.  When wakeup throws the exception, it never makes it to the end of the method to invoke notify() to wake up the waiting ServerThread thread.  So the ServerThreads just continue to disappear from the threadpool every time wakeup() throws an exception before it gets to notify(), until eventually, the threadpool is empty, and the SocketServerInvoker just sits and waits forever (deadlock). 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4058483#4058483

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4058483



More information about the jboss-user mailing list