On 31/01/2020 16:46, Daniel Fuchs wrote:
Hi,

Please find below a fix for:

8238231: Custom DatagramSocketImpl's create method not called when
         with protected constructor
https://bugs.openjdk.java.net/browse/JDK-8238231

This is a behavioral regression introduced by JDK-8236925 [1].
Thanks Alan for providing a suggested fix. I have chosen
a slightly different alternative to preserve the previous
behavior where create() was always called by the public
constructors (and only lazily after the protected one) [2].
This seems to have a few problems. Consider two threads calling getImpl() at around the same time. This can only work if "created "is volatile and you set it to true after impl.create() has been called. In addition, setting "created" to true in the constructor will confuse future maintainers as to whether it means the impl object has been created vs. the socket. Otherwise I agree with the eager creation to preserve long standing behavior.

-Alan

Reply via email to