[ 
https://issues.apache.org/jira/browse/RATIS-1083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17214682#comment-17214682
 ] 

Tsz-wo Sze commented on RATIS-1083:
-----------------------------------

BTW, the primary server should not ack the close back to the client.  It should 
wait for an ack from the leader who should also ack back with a 
RaftClientReply.  "Send close" becomes the following:

- Send close
-# 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

When the client have received the RaftClientReply, the transaction is committed 
to the majority of the servers.  This is the same as the BlockingApi and the 
AsyncApi.

Note that I have changed the term "commit" to "start-transaction" in order to 
avoid confusion.


> Create a transaction once the stream data is replicated to all servers
> ----------------------------------------------------------------------
>
>                 Key: RATIS-1083
>                 URL: https://issues.apache.org/jira/browse/RATIS-1083
>             Project: Ratis
>          Issue Type: Sub-task
>          Components: Streaming
>            Reporter: Tsz-wo Sze
>            Assignee: runzhiwang
>            Priority: Major
>
> Once the stream data has been replicated to all server, the leader should 
> create a Raft transaction.  When the leader send the transaction to the other 
> server by appendEntries, it only has to send the stream data ID instead of 
> sending the stream data.



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

Reply via email to