[Record Serialization] serialVersionUID bug?

Harold Seigel harold.seigel at oracle.com
Fri Nov 15 16:02:08 UTC 2019


This same problem is also causing JTReg test 
java/io/Serializable/class/NonSerializableTest.java to fail.

Harold

On 11/15/2019 3:24 AM, Chris Yin wrote:
> Hi, experts
>
> I’m looking into Amber Record feature, and found some strange behavior regarding to serialization serialVersionUID.
>
> Per latest spec “The requirement for matching serialVersionUID values is waived for record classes.”, but during testing, it’s not, record class will encounter InvalidClassException during deserialization when serialVersionUID is different between stream classdesc and local class, instead, the traditional normal class could deserialize succeed even serialVersionUID mismatch, that looks like a bug and a regression to normal class serialization/deserialization.
>
> I created one rough test below to reproduce the issue
>
> http://cr.openjdk.java.net/~xyin/VersionUIDNotMatch/webrev.00/ <http://cr.openjdk.java.net/~xyin/VersionUIDNotMatch/webrev.00/>
>
> Also after checking the stack and repo changes, it may caused by below change to ObjectStreamClass.java
>
> http://hg.openjdk.java.net/amber/amber/rev/d883cdec18e3 <http://hg.openjdk.java.net/amber/amber/rev/d883cdec18e3>
>
> Maybe possible fix?
>
> diff -r 4e41f62dfddb src/java.base/share/classes/java/io/ObjectStreamClass.java
> --- a/src/java.base/share/classes/java/io/ObjectStreamClass.java	Wed Nov 13 15:42:59 2019 -0800
> +++ b/src/java.base/share/classes/java/io/ObjectStreamClass.java	Fri Nov 15 15:49:41 2019 +0800
> @@ -706,7 +706,7 @@
>               }
>   
>               if (model.serializable == osc.serializable &&
> -                    !cl.isArray() && isRecord(cl) &&
> +                    !cl.isArray() && !isRecord(cl) &&
>                       suid != osc.getSerialVersionUID()) {
>                   throw new InvalidClassException(osc.name,
>                           "local class incompatible: “ +
>
>
> Thanks,
> Chris
>


More information about the amber-dev mailing list