You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ratis.apache.org by GitBox <gi...@apache.org> on 2020/10/29 07:38:58 UTC

[GitHub] [incubator-ratis] runzhiwang commented on pull request #237: RATIS-1083. Create a transaction once the stream data is replicated to all servers

runzhiwang commented on pull request #237:
URL: https://github.com/apache/incubator-ratis/pull/237#issuecomment-718429329


   @szetszwo 
   Could you help review this ?  It's only a draft, I'm not sure whether my thought is right, so I have not add unit test, and the code is also rough.
   
   I change the origin design, please correct me if I am wrong. 
   1. Primary server no need to send close-stream to other servers to check whether other servers have received all the data, because primary server can check the STREAM_DATA reply from other servers to check whether other servers have received all the data. 
   2. Do not use start-transaction, when primary server receive close stream and make sure other servers have received all the data, primary server will submit RaftClientRequest to itself directly, if NotLeaderException happens, primary server will send close-stream to the suggested leader, the suggested leader will submit RaftClientRequest to itself.
   3. Get RaftClientRequest from DataStream.
   4. Encode the RaftClientReply into DataStreamReply#buffer
   
   Origin design:
   client —(close-stream)—> primary server —(close-stream)—> other servers
   primary server <—(ack-close-stream)— other servers
   primary server —(start-transaction)—> other servers
   client <—(RaftClientReply)— primary server <—(RaftClientReply)— leader


----------------------------------------------------------------
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.

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