The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
EVALUATION
Subject: Re: Esc 1-17598401, Bug 6435198
From: Harsha Godugu <###@###.###>
Date: Thu, 20 Jul 2006 17:13:44 -0700
To: Nishant Patel <###@###.###>
Hi Nishant,
We know this problem. It's a bug in the code of 1.4.2 and tiger too.
What's happening is, the connection cache is not locked properly.
What we need to do is, how to identify busy connection. Cu/you are
right. The isBusy() method is the culprit.
Take a look at:
Connection.java
ConnectionTable.java
IIOPConnection.java
The logic is, to introduce a counter for every use of a connection.
getConnection() calls for use of a connection from cache. Introduce
another method called releaseConnection()
Have the counter incremented in get/create/put connection() and then
decrement the counter at releaseConnection().
In classes/com/sun/corba/se/internal/corba, there is client delegate
file where the request,reply release cycle ends. Take a look at
releasereply() method and call your new releaseConnection() for the
connection in use.
Modify the IIOPConnection.java: isBusy() code to check for the counter (newly introduced) against zero. If the counter is zero, then connection is eligible for
cleaning. Else not. You may have to introduce a new method for accessing
your counter. (a getter method)
I hope that helps. If you get into some hurdle, let me know.
I will come back to this next week.
Harsha