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

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

The client should close the DataStreamOutput when it finishes, i.e.
 # Send data in a loop
 -- client —(data)—> primary server —(data)—> other servers
 -- client <—(ack)— primary server <—(ack)— other servers
 # Send close
 -- client —(close)—> primary server —(close)—> other servers
 -- client <—(ack)— primary server <—(ack)— other servers

Ideally, once all the servers have received the close, the leader create a 
transaction. The primary server may send a "commit" once it has received an ack 
for the close from all the servers. 
 - primary server —(commit)—> other servers

Once the leader has received the commit, it will create a transaction.

> 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