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
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user