My patch has been working fine in production for 11 days now; 4 of them at full
capacity. The pool sizes look to be correct and under control. I think that
my patch has resolved the issue.
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=4062147#4062147
Reply
Bug filed at http://jira.jboss.com/jira/browse/JBREM-762
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=4058943#4058943
Reply to the post :
http://www.jboss.com/index.html?module=bbop=postingmode=replyp=4058943
___
anonymous wrote :
| It appears that this thread, which ought to be quickly finding a
ServerThread to handle the incoming request, calling ServerThread.start(), and
getting back to the call to serverSocket.accept() as quickly as possible, is
instead doing some socket I/O.
javajedi wrote : Thanks Ron. Yeah, I came across JBREM-409 a few days ago,
and had already applied that patch from 1.4.6 (which seems to have been tagged
in CVS but never released) to our code. So this problem definitely seems to
still exist in 1.4.6.
|
The 1.4.6.GA jar is at
The only relevant change that I saw to SocketServerInvoker (that I already
patched) was the call to
serverSocket.setReuseAddress(true);
Was there more that I'm missing?
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=4057961#4057961
Reply to the post :
BTW, we are using JBoss 4.0.4 and ejb 3.0-rc9.
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=4057962#4057962
Reply to the post :
http://www.jboss.com/index.html?module=bbop=postingmode=replyp=4057962
___
jboss-user
A few months ago, I think I tried using JBoss Remoting 2.x with EJB 3.0-rc9,
and it didn't work. Should it?
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=4057965#4057965
Reply to the post :
javajedi wrote : The only relevant change that I saw to SocketServerInvoker
(that I already patched) was the call to
| serverSocket.setReuseAddress(true);
|
| Was there more that I'm missing?
I guess you're right. I can't see anything else.
View the original post :
Thanks. Posted at
http://www.jboss.com/index.html?module=bbop=viewtopicp=4057982
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=4057983#4057983
Reply to the post :
http://www.jboss.com/index.html?module=bbop=postingmode=replyp=4057983
javajedi wrote : A few months ago, I think I tried using JBoss Remoting 2.x
with EJB 3.0-rc9, and it didn't work. Should it?
I can tell you that the Application Server 4.2.0.GA comes with Remoting
2.2.0.SP4, so the version of EJB3 in that release must work with that version
of Remoting. I'm
Hey Ron, How would you recommend javajedi work around this issue until he can
upgrade to 4.2.0? Could he replace, say, the socket invoker with the rmi
invoker?
View the original post :
http://www.jboss.com/index.html?module=bbop=viewtopicp=4058306#4058306
Reply to the post :
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
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
Ok, I wrapped the code in wakeup() inside of a try/catch, with a catch block
that looks like this:
| } catch (Exception e) {
| synchronized (clientpool) {
| synchronized (threadpool) {
|clientpool.remove(this);
|
Two suggestions
(1) Stop writing code that relies on interrupting threads.
(2) To avoid lost wake up problems, replace foo.notify() with something that
stays signalled if there are no threads calling foo.wait(). Consider using a
Semaphore or a BlockingQueue from util.concurrent /
severSocketConstructor.newInstance() reads from the socket, then the
socket.setTimeout() is called
Even if a socket timeout is set, if something just connects to the port and
never writes anything, this code will hang indefinitely
ServerThread.java:183-191
Not sure how we got into this state, but its clearly a deadlock...
(1) SocketServerInvoker is stuck on clientpool.wait()
(2) maxPoolSize ServerThreads are all stuck on this.wait()
(3) At least one ServerThread must call clientpool.notify() to wake up the
SocketServerInvoker
(4)
I do believe there is another possible notification issue. I've seen this
pattern in the jdk code. I believe a thread which is waiting can get
interrupted at about the same time that it is notified. if the
InterruptedException is just thrown, that notification will be lost. If you
look in
anonymous wrote :
| This is how the ServerThreads could miss the notifies from the
ServerSocketInvoker (seems much more likely):
|
| (1) A ServerThread finishes processing, calls clientpool.notify() and is
then suspended by the scheduler
| (2) ServerSocketInvoker wakes up and calls
Thanks Ron. Yeah, I came across JBREM-409 a few days ago, and had already
applied that patch from 1.4.6 (which seems to have been tagged in CVS but never
released) to our code. So this problem definitely seems to still exist in
1.4.6.
Upgrading the EJB implementation and going to Remoting
20 matches
Mail list logo