[
https://jira.jboss.org/browse/JBREM-1230?page=com.atlassian.jira.plugin.s...
]
Ron Sigal commented on JBREM-1230:
----------------------------------
The problem is that SocketServerInvoker calls LRUPool.evict() to try to get a reusable
ServerThread, but LRUPool.evict() just tries the least recently used thread. It's
possible that the least recently used thread is in the middle of a long running invocation
and that IdleTimerTask could shut down some other thread in the meantime.
The solution is for IdleTimerTask to call clientpool.notify() after it shuts down a
thread. The solution has been committed.
Unit test: org.jboss.test.remoting.transport.socket.IdleTimerTaskNotifyTestCase.
Waiting from results in hudson.
Client hangs when hitting MaxPoolSize with idleTimeout
------------------------------------------------------
Key: JBREM-1230
URL:
https://jira.jboss.org/browse/JBREM-1230
Project: JBoss Remoting
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 2.2.2.SP9, 2.2.3.SP1
Reporter: Takayoshi Kimura
Assignee: Ron Sigal
Fix For: 2.2.3.SP3
1. In SocketServerInvoker.processInvocation(), clientpool.wait() is called when hitting
MaxPoolSize
2. SocketServerInvoker$IdleTimerTask calls ServerThread.shutdown() and remove it from
clientpool when it's timed out in idle state
3. ServerThread.shutdown() doesn't call clientpool.notify(), so #1 doesn't resume
although there is free slot available
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira