You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pegasus.apache.org by GitBox <gi...@apache.org> on 2021/12/21 02:59:22 UTC

[GitHub] [incubator-pegasus] hycdong commented on issue #840: add 'feature flags' rcp interface for version compatability between server and client

hycdong commented on issue #840:
URL: https://github.com/apache/incubator-pegasus/issues/840#issuecomment-998428752


   That's a good idea to use `feature_map` rather than a version to do client negotiation~
   
   In current implmenetaion, client will firstly create connection with meta server, and get partition address map, then send read/write requests to replica server directly. I notice that the `negotiate_feature_flag` is added in rrdb.thrift according to https://github.com/cauchy1988/incubator-pegasus/pull/1/files, which means client should firstly connect to meta server, then send negotiate request to replica server, if the negotitate failed, client should do lots of thems such as downgrade batchget3 into batchget2 and other consistent-related error handling. 
   
   It seems that the negotiation is designed especially for the batchget3 interface or user request. It can't handle any server request negotiation. In my view, a general negotitation plan should handle user request and server ddl request. For example, client sends negotiation request to meta server, if the operation is not supported, it will reject the connection of this client. Then client could choose to downgrade or do operation. I wonder if you have any plan about to implement a more general negotitation plan?
   
   Besides, I have the following compatible questions:
   1. old client -> new server, will have any compatible problem?
   2. new client -> old server, how old server handle `BATCH_GET` code? will have any compatible problem?
   3. old server upgrade to new server, will it have any compatible problem?
   
   At the end, I DO think your issue is a good idea to solve user request version problems, and expecting your anwser and discussion~


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@pegasus.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@pegasus.apache.org
For additional commands, e-mail: dev-help@pegasus.apache.org