Hi Stuart,

On 7/9/19 1:57 AM, Stuart Marks wrote:
Hi Peter,

Thanks for picking this up, for filing the bug (JDK-8227368), and developing the fix.

For the current release, I think we should go ahead and put in the "right" fix, that is, to define serialVersionUID the conventional way -- as a compile-time constant -- and then simply to remove the suppression of the serial warning. This will change the specification (because the change will appear in serialized-form.html), but that's OK, we have the ability to change the specification. Note that this will require a CSR. (Changing the svuid value without changing the specification would probably require a CSR anyway, since it's a behavioral change that affects compatibility.) Might as well fix the specification now and be done with it, at least for current and future releases.

Right, I agree.


The JDK 11 backport is where we should apply the static initializer. That's where changing the specification is more difficult. I think we should discuss that separately, though.

Thanks for writing the new test and updating the BogusEnumSet test.

Given that this is a fix for an incompatible change, I think this should be fixed as soon as possible. I've raised the priority to P3, and I've targeted this bug to JDK 13. We're after RDP1, but important fixes can still go in during RDP1 [1] until the next phase, RDP2, which begins on July 18. [2] Once this goes into JDK 13, it should automatically be propagated to JDK 14, with no manual steps necessary.

With the fairly short time frame left in JDK 13 before RDP2, it would be best to move as quickly as possible. If you have time to work in this immediately, great, but if not, that's ok; please let me know and I'll pick up any or all work that you don't have time to do. Regardless, I'll help out any way I can, such as reviewing the code and the CSR, doing testing, etc.

Next steps:

1. New changeset with constant version of EnumSet.serialVersionUID.

This is already in the webrev.01 changeset. webrev.02 is an attempt to sneak the change without being visible in the serialized-form.html.


2. Create draft CSR.

I'll try that right away.

Regards, Peter


Thanks,

s'marks


[1] http://openjdk.java.net/jeps/3

[2] http://openjdk.java.net/projects/jdk/13/




On 7/7/19 8:11 AM, Peter Levart wrote:
On 7/7/19 4:31 PM, Peter Levart wrote:
On 6/29/19 2:00 AM, Stuart Marks wrote:
Daniel Fuchs pointed me to a weird thing they had to do with the serialVersionUID in one of the JMX classes:

https://hg.openjdk.java.net/jdk/jdk/file/c59f36ed7b52/src/java.management/share/classes/javax/management/MBeanAttributeInfo.java#l46

Essentially the svuid for this class initialized in a static block, and its value is conditional based on the value of some system property. I don't think using a property is necessary for the EnumSet case. However, it does point out something interesting, which is that if the svuid is not initialized with a compile-time constant, and instead via a static block, the value doesn't appear in serialized-form.html.

Hi Stuart,

I just realized that I was reading your last statement wrong. I though it was written as:

...if the svuid is not initialized with a compile-time constant, and instead via a static block, the value doesn't appear in serialized form.

And not as:

...if the svuid is not initialized with a compile-time constant, and instead via a static block, the value doesn't appear in serialized-form.html


You were only concerned about the generated javadoc and not about the actual "serialized form". Ok, I get it now. I have prepared webrev.02 to fix this.


Regards, Peter


Reply via email to