Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-8963

separate client/server compatibility from server/server version compatibility

    XMLWordPrintableJSON

Details

    Description

      A client's version is used for deserializing data received from the client and for serializing data sent to the client. It is also used to locate the map of Commands used to process client requests. Every time we cut a new release we bump this version in KnownVersions and create a new map of Commands, even though client/server communications protocols rarely change.
      We should have each KnownVersion hold a client/server compatibility number that is used to identify clients rather than the KnownVersion's ordinal.

      For instance,

        public static final KnownVersion GEODE_1_15_0 =
            new KnownVersion("GEODE", "1.15.0", (byte) 1, (byte) 15, (byte) 0, (byte) 0,
                /*server/server version*/GEODE_1_15_0_ORDINAL, 
                /*client/server version*/GEODE_1_15_0_ORDINAL);
        
      public static final KnownVersion GEODE_1_16_0 =
            new KnownVersion("GEODE", "1.16.0", (byte) 1, (byte) 16, (byte) 0, (byte) 0,
                /*server/server version*/GEODE_1_16_0_ORDINAL, 
                /*client/server version*/GEODE_1_15_0_ORDINAL);
      
      public static final KnownVersion GEODE_1_17_0 =
            new KnownVersion("GEODE", "1.17.0", (byte) 1, (byte) 17, (byte) 0, (byte) 0,
                /*server/server version*/GEODE_1_17_0_ORDINAL, 
                /*client/server version*/GEODE_1_15_0_ORDINAL);
      

      In the above KnownVersions the client/server serialization is known to have not changed since v1.15.0 and so there is no need to use a newer KnownVersion for clients.

      Client handshake code will need to be changed to use the client/server ordinal when identifying clients and servers.

      Attachments

        Activity

          People

            bschuchardt Bruce J Schuchardt
            bschuchardt Bruce J Schuchardt
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: