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

javajedi do-not-reply at jboss.com
Wed Jun 27 17:14:32 EDT 2007


I tried JBoss Remoting 2.2.0 and I was unable to get it to work with JBoss 4.0.4.  I'm also not too enthusiastic about that approach because looking at the code, I don't think that this bug has been fixed in the latest version.  I am now able to reproduce this problem easily by setting maxPoolSize to 10 (instead of 300) on the invoker; it fails almost right away.  I turned on debug and was able to get some more information.

I start off getting a handful of these errors:

  | 2007-06-27 11:32:13,108 82807 ERROR [org.jboss.remoting.transport.socket.SocketServerInvoker] (SocketServerInvoker#0-3873:) Failed to accept socket connection
  | java.lang.reflect.InvocationTargetException
  |         at sun.reflect.GeneratedConstructorAccessor54.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:185)
  |         at org.jboss.remoting.transport.socket.ServerThread.wakeup(ServerThread.java:226)
  |         at org.jboss.remoting.transport.socket.SocketServerInvoker.processInvocation(SocketServerInvoker.java:467)
  |         at org.jboss.remoting.transport.socket.SocketServerInvoker.run(SocketServerInvoker.java:391)
  |         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 org.jboss.serial.io.JBossObjectInputStream.<init>(JBossObjectInputStream.java:94)
  |         at org.jboss.serial.io.JBossObjectInputStream.<init>(JBossObjectInputStream.java:83)         at org.jboss.remoting.serialization.impl.jboss.JBossSerializationManager.createInput(JBossSerializationManager.java:57)
  |         at org.jboss.remoting.transport.socket.ServerSocketWrapper.createInputStream(ServerSocketWrapper.java:56)
  |         at org.jboss.remoting.transport.socket.ClientSocketWrapper.createStreams(ClientSocketWrapper.java:76)
  |         at org.jboss.remoting.transport.socket.ClientSocketWrapper.<init>(ClientSocketWrapper.java:54)
  |         at org.jboss.remoting.transport.socket.ServerSocketWrapper.<init>(ServerSocketWrapper.java:50)
  |         ... 8 more 
  | 

Don't know what that means.  Then, at the end, just before the deadlock occurs, I get this debug message:

  | 007-06-27 11:32:13,487 83186 DEBUG [org.jboss.remoting.transport.socket.ServerThread] (SocketServerInvokerThread-68.142.219.226-13:) 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:280)
  | 

This appears to be where the lost notification happens.  This interrupt seems to be coming from the evict() method in ServerThread.  I love this comment in ServerThread.evict():


  |       // This is a race and there is a chance
  |       // that a invocation is going on at the time
  |       // of the interrupt.  But I see no way right
  |       // now to protect for this.
  |       // There may not be a problem because interrupt only effects
  |       // threads blocking on IO.
  | 

So at least whoever wrote this has admitted the race condition that seems to be crashing us. :)  I'm trying to come up with a good solution to this, but so far, no luck.  I'm hoping that someone more familiar with the code can give me an answer besides "try 2.2".

Thanks.

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

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



More information about the jboss-user mailing list