Hi All, Here is an update on the progress. Based on the comments and feedback we received, we modified following items in the upcoming version of the patch (will be version #6). We are in the process of testing. I will be on vacation from Dec. 9th and will be back to office on Dec. 17th. We will hopefully be able to send out version #6 of the patch on Dec. 18th.
1. setReusePort and getReusePort methods are removed from Socket/ServerSocket/DatagramSocket. 2. Minor wording changes to StandardSocketOptions regarding to SO_REUSEPORT. This include adding "usually" to the sentences and also including @since 9 at the end. 3. inside sun.nio.ch.Net, 3.1 Change Net.reuseportSupported to Net.isReusePortAvailable and make it as private. 3.2 The native implantation isReusePortAvailable0 is done inside Net.c which points to a newly added native function named reuseport_available(). reuseport_available() is added in ./jdk/src/java.base/share/native/libnet/net_util.c. 4. inside java.net, 4.1 Add a function called isReusePortAvailable in ./jdk/src/java.base/share/classes/java/net/SocketImpl.java. Create SocketImpl.c file for both UNIX and Windows to add the native implementation named as isReusePortAvailable0. 4.2 The native implementation points to the same reuseport_available() described in 3.2 5. Similarly, inside jdk.net, add isReusePortAvailable and its native implementation. 6. Inside ./jdk/src/java.base/unix/native/libnet/net_util_md.c, add a new function called reuseport_supported(). This is the function that calls setsockopt and check for SO_REUSEPORT. reuseport_available() points to reuseport_supported(). 7. reuseport_supported() is called during JNI_OnLoad function and the result is also the return value of reuseport_available(). This makes SO_REUSEPORT check is done once at the beginning and the results will be cached for later use. 8. #3-#7 follows the example of the IPv6 check. Please let me know if there is anything I missed. 9. Removed setting SO_REUSEPORT for debugger agent 10. For all the tests, instead of calling Net.reuseportSupport method, use supportedOptions to check for SO_REUSEPORT. 11. Remove test/java/net/Socket/setReusePort/Basic.java since the setReusePort and getReusePort methods are removed. 12. Setting SO_REUSEPORT value to platform dependent instead of using 15 for everyone. 13. Make SO_REUSEPORT to be disabled by default for both ServerSocketChannelImpl and SocketChannelImpl. Leave the feature enablement to the users. 14. Updated the copyright date. Thanks, Lucy -----Original Message----- From: net-dev [mailto:net-dev-boun...@openjdk.java.net] On Behalf Of Lu, Yingqi Sent: Tuesday, December 08, 2015 9:11 AM To: Alan Bateman <alan.bate...@oracle.com>; Michael McMahon <michael.x.mcma...@oracle.com>; Volker Simonis <volker.simo...@gmail.com> Cc: Viswanathan, Sandhya <sandhya.viswanat...@intel.com>; net-dev@openjdk.java.net; Kharbas, Kishor <kishor.khar...@intel.com>; Aundhe, Shirish <shirish.aun...@intel.com>; Kaczmarek, Eric <eric.kaczma...@intel.com> Subject: RE: Patch for adding SO_REUSEPORT socket option Thank you very much for your help, Alan! Thanks, Lucy -----Original Message----- From: Alan Bateman [mailto:alan.bate...@oracle.com] Sent: Tuesday, December 08, 2015 8:46 AM To: Lu, Yingqi <yingqi...@intel.com>; Michael McMahon <michael.x.mcma...@oracle.com>; Volker Simonis <volker.simo...@gmail.com> Cc: Kaczmarek, Eric <eric.kaczma...@intel.com>; net-dev@openjdk.java.net; Kharbas, Kishor <kishor.khar...@intel.com>; Viswanathan, Sandhya <sandhya.viswanat...@intel.com>; Aundhe, Shirish <shirish.aun...@intel.com> Subject: Re: Patch for adding SO_REUSEPORT socket option On 08/12/2015 00:53, Lu, Yingqi wrote: > Hi Alan, > > I heard that the feature freeze for OpenJDK9 is approaching. Given the > significant performance impact (up to 1.93x with Hadoop Distributed File > System) this feature provides and the status of the existing work, we would > be really interested in see this feature to be approved for OpenJDK9. We will > surely continue working with the community to address opens/issues until it > is completely ready to be merged into the source code tree. There is a proposal to move out JDK 9 by 6 months [1]. In any case, I think we are close to agreement on this socket option and I will reply to your others mail the implementation. -Alan. [1] http://mail.openjdk.java.net/pipermail/jdk9-dev/2015-December/003149.html