[Record Serialization] serialVersionUID bug?

Chris Hegarty chris.hegarty at oracle.com
Fri Nov 15 09:29:22 UTC 2019


Hi Chris,

Thanks for reporting this issue. Hmm... I thought that there
were tests to assert the waiver behavior. I'll take a look.

-Chris.

On 15/11/2019 08:24, 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