[9] RFR of JDK-8085192: java/rmi/activation/Activatable tests fail intermittently due to "Port already in use"
Roger Riggs
Roger.Riggs at Oracle.com
Wed Oct 12 15:50:12 UTC 2016
Hi Chris,
On 10/10/2016 9:43 AM, Chris Hegarty wrote:
> Roger,
>
> I addressed all, or most, of your comments in the following
> webrev.
>
> 1) Refactored out the use of sun.nio.ch in the test library,
> so that a reduced number of tests need their @modules tag
> updated. ( @modules support with test library usage it a
> pain )
It would be ok to put the modules java.base/sun.nio.ch dependency in the
test/java/rmi/TEST.properties.
Or perhaps in a new test/java/rmi/activation/TEST.properties
(I would probably move many of the @modules in individual tests there.
Though it is cleaner to have only the ones that are really needed by
each test.)
Can the @build dependencies also go in TEST.properties using lib.build =
>
> 2) Use Boolean.getBoolean to retrieve the new property
tnx
>
> 3) fix typos and remove stray debugging statements
>
> http://cr.openjdk.java.net/~chegar/8085192_webrev.03/
test/java/rmi/testlibrary/RMID.java:
line 60: ephemeralPort could be removed; (unused)
line 106: the string
"java.nio.channels.spi.SelectorProvider=RMIDSelectorProvider" should be
a static and used the JavaVM. (similar to RMID.EPHEMERAL_MSG)
>
>> ...
>> I'm vaguely not very comfortable with scraping the port number off
>> stdout
>> and the inherited channel pieces seem like a lot of moving parts.
>
> Right, I was a little uneasy with this too, to being with, but
> it has grown on me ( since it appears stable and reliable in
> all my builds and tests ). Also the surface area of the code
> change is very small, and the inherit channel mechanism is well
> specified and stable.
ok, lets give it a try.
Thanks, Roger
>
>> Roger
>>
>> p.s. Anyother idea
>> I assume not all platforms can allow separate processes to open server
>> sockets to the same port.
>> If so, we would just have the client allocate a port (0), mark it
>> non-exclusive and keep it open
>> while passing the port number to RMID. Only after RMID is started close
>> the allocating socket.
>
> I believe Stuart did look at this in some detail a while back [1], and
> it was somewhat dismissed because of the lack of cross platform support
> for SO_REUSEPORT. Maybe things have move on, but I don't think so?
>
> The use of inherit channel is somewhat akin to loading an agent into
> the target, but more straightforward.
>
> What do others think, that will have to maintain these tests? I don't
> want to make them every harder to maintain. Hamlin's approach is still
> on the table too.
>
> -Chris.
>
> [1]
> http://mail.openjdk.java.net/pipermail/serviceability-dev/2014-December/016251.html
More information about the core-libs-dev
mailing list