I was worrying about DSFID changes, too, but I think we'll know if we need the 
updated data in the client.  What might be surprising to people is if they make 
a change and don't see it getting to the client because it's using an old 
version.  If I add a field to a DSFID and update toData to include it I would 
also add a toData_pre_xyz method and that's what would be used to serialize the 
value to the client.

On 2/23/21, 1:56 PM, "Dan Smith" <dasm...@vmware.com> wrote:

    Ha, I was thinking of suggesting this when I saw Alberto's earlier 
proposal. This does seem like a good idea to only bump the client version when 
the protocol actually changes.

    One concern is that it might not be obvious that changing a 
DataSerializableFixedId will change the client protocol. Some objects get sent 
or received from the client and some don't, but we don't have a clear 
indication which is which. Is there some way that we could know when changing a 
DataSerializableFixedId if it is involved in the client protocol or not?

    I also wonder if this will affect the WAN - do we want to keep sending the 
current product version with the WAN, or use the client protocol version?

    -Dan
    ________________________________
    From: Bruce Schuchardt <bru...@vmware.com>
    Sent: Tuesday, February 23, 2021 9:38 AM
    To: dev@geode.apache.org <dev@geode.apache.org>
    Subject: [DISCUSS] client/server communications and versioning

    I’m considering a change in client/server communications that I would like 
feedback on.

    We haven’t changed on-wire client/server communications since v1.8 yet we 
tie these communications to the current version.  The support/1.14 branch 
identifies clients as needing v1.14 for serialization/deserialization, for 
instance, even though nothing has changed in years.

    If we put out a patch release, say v1.12.1, clients running that patch 
version cannot communicate with servers running v1.12.0.  They also can’t 
communicate with a server running v1.13.0 because that server doesn’t know 
anything about v1.12.1 and will reject the client.  To solve that problem we 
currently have to issue a new 1.13 release that knows about v1.12.1 and users 
have to roll their servers to the new v1.13.1.

    I propose to change this so that the client’s on-wire version is decoupled 
from the “current version”.  A client can be running v1.14.0 but could use 
v1.8.0 as its protocol version for communications.

    This would have an impact on contributors to the project.  If you need to 
change the client/server protocol version you will need to modify 
KnownVersion.java to specify the change, and should let everyone know about the 
change.

    See 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FGEODE-8963&amp;data=04%7C01%7Cbruces%40vmware.com%7Cc94da0c3d72940da384108d8d845ecea%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C1%7C0%7C637497142136344324%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=l9Vvk86DrwMYls6XViSu8bKgdhJpPCc3mSosFBCngX0%3D&amp;reserved=0

Reply via email to