Igor Sapego created IGNITE-12853:
------------------------------------

             Summary: ThinClient: Introduce Features for thin clients
                 Key: IGNITE-12853
                 URL: https://issues.apache.org/jira/browse/IGNITE-12853
             Project: Ignite
          Issue Type: Bug
          Components: thin client
            Reporter: Igor Sapego
            Assignee: Igor Sapego
             Fix For: 2.8.1


As we have a lot of different thin clients now, maintained by different people, 
the issues with our backward compatibility mechanism becomes more and more 
prominent.

Currently, we use protocol versioning as the only approach to provide backward 
compatibility. The main issue of this approach is that we can not skip some 
change in protocol and implement i.e. protocol of version 1.5 without 
implementation of 1.4. There are many cases when one may want to do so: e.g. 
when feature provided in 1.4 is not relevant for a specific client, or when 
protocol version 1.5 contains urgent fix or feature which is easy to implement, 
but its blocked by not-so-urgent and hard-to-implement feature introduced in 
1.4.

So to fix this issue I propose to introduce another backward compatibility 
mechanism. The idea is to send "supported features" mask by a client to a 
server, which should be answered with the same mask by the server. The 
resulting set of enabled features is acquired with a simple logical "AND" 
operation on these two masks.

This change has many other positive effects: 
1. It improves readability and also potentially simplifies debugging.
2. It gives users the ability to enable or disable features of thin clients on 
both server and client as they desire.




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to