[jboss-remoting-issues] [JBoss JIRA] (JBREM-1305) Maximum number of client sockets in MicroSocketClientInvoker increases after timeout waiting for a free socket
Ron Sigal (JIRA)
jira-events at lists.jboss.org
Tue May 8 16:38:17 EDT 2012
[ https://issues.jboss.org/browse/JBREM-1305?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ron Sigal updated JBREM-1305:
-----------------------------
Fix Version/s: 2.2.4.SP1
2.5.4.SP4
Assignee: Ron Sigal
Affects Version/s: (was: 2.4.0.SP1 (Pinto))
(was: 2.5.0.SP2 (Flounder) )
(was: 2.5.2.SP3 (Flounder))
> Maximum number of client sockets in MicroSocketClientInvoker increases after timeout waiting for a free socket
> --------------------------------------------------------------------------------------------------------------
>
> Key: JBREM-1305
> URL: https://issues.jboss.org/browse/JBREM-1305
> Project: JBoss Remoting
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: transport
> Affects Versions: 2.2.4, 2.5.4.SP3
> Environment: all
> Reporter: Torsten Neise
> Assignee: Ron Sigal
> Fix For: 2.2.4.SP1, 2.5.4.SP4
>
>
> Maximum number of client sockets in MicroSocketClientInvoker increases after timeout waiting for a free socket. This happens because of an illegal call of semaphore.release() in MicroSocketClientInvoker.transport(...) after semaphore.attempt(timeToWait) returned with false (no lock aquired) in MicroSocketClientInvoker.getConnection(...).
> public class MicroSocketClientInvoker extends RemoteClientInvoker
> {
> ...
> protected Object transport(String sessionID, Object invocation, Map metadata,
> Marshaller marshaller, UnMarshaller unmarshaller)
> throws IOException, ConnectionFailedException, ClassNotFoundException
> {
> ...
> try
> {
> socketWrapper = getConnection(marshaller, unmarshaller, timeLeft);
> }
> ...
> catch (Exception e)
> {
> // if (bailOut)
> // return null;
> semaphore.release();
> ...
> }
> ...
> }
> protected SocketWrapper getConnection(Marshaller marshaller,
> UnMarshaller unmarshaller,
> int timeAllowed)
> throws Exception
> {
> long start = System.currentTimeMillis();
> long timeToWait = (timeAllowed > 0) ? timeAllowed : 30000;
> boolean timedout = !semaphore.attempt(timeToWait);
> if (trace) log.trace(this + " obtained semaphore: " + semaphore.permits());
>
> if (timedout)
> {
> throw new IllegalStateException("Timeout waiting for a free socket");
> }
> ...
> }
> ...
> }
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-remoting-issues
mailing list