geode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bruce Schuchardt <bschucha...@pivotal.io>
Subject Re: [DISCUSS] Version 1.11 serialization ordinal is wrong
Date Fri, 23 Aug 2019 16:54:40 GMT
Yeah, that code is confusing.  I think the ordinal constants should all 
be changed to shorts and the constructor for Version should take a short 
as well.  I can see why someone creating a new ordinal would be hesitant 
to do that - it will need to be tested.

The on-wire representation of a Version isn't limited to a byte. We use 
writeOrdinal() to serialize version ordinals.

I'll open a JIRA to address this.


On 8/23/19 9:16 AM, Kirk Lund wrote:
> I think they did that because the datatypes in the Version class are too
> small. I'm not sure why bytes and shorts were chosen.
>
> The version constants are defined as bytes:
>
> private static final *byte* GEODE_1_11_0_ORDINAL = 107;
>
> While the ordinal is defined as a short:
>
> private final *short* ordinal;
>
> I'm assuming this was done because Version ends up on the wire. Does it go
> into every message or just handshake/join messages? I suppose we can't
> change these datatypes to integers until Geode 2.0 because they would end
> up being a breaking change.
>
> Maybe we should scan through all serialized datatypes for bytes/shorts that
> are going to run out...
>
> On Fri, Aug 23, 2019 at 9:02 AM Bruce Schuchardt <bschuchardt@pivotal.io>
> wrote:
>
>> We've been incrementing the serialization version by 5 for each x.x.0
>> release but I see that we went from 105 in 1.10.0 to 107 in develop for
>> 1.11.0.  That gives us only one opportunity to make a serialization
>> change if we need to release patches for 1.10.  I don't think that's
>> safe & we need to bump the ordinal for 1.11.0 to 110.
>>
>>

Mime
View raw message