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

Tsz Wo Nicholas Sze commented on RATIS-571:
-------------------------------------------

Thanks [~ljain], just a minor comment:

In OrderedAsync 190, pass null instead of creating a new request. 
{code}
      if (getSlidingWindow((RaftPeerId) null).isFirst(pending.getSeqNum())) {
{code}

Patch looks good other than that.

> Client may send first request in sliding window with firstFlag as false
> -----------------------------------------------------------------------
>
>                 Key: RATIS-571
>                 URL: https://issues.apache.org/jira/browse/RATIS-571
>             Project: Ratis
>          Issue Type: Bug
>          Components: client
>            Reporter: Lokesh Jain
>            Assignee: Lokesh Jain
>            Priority: Major
>         Attachments: RATIS-571.001.patch, RATIS-571.002.patch, 
> RATIS-571.003.patch, RATIS-571.004.patch
>
>
> It is possible for the client to send first request in sliding window with 
> firstFlag as false.
> In the below example, request with sequence number 73 is accepted in the 
> sliding window when the first request is 70. Therefore its first flag is 
> false. After that the request with sequence 72 gets a reply from the stream 
> observer dc40cfe3. When request 73 is sent to stream observer 87103303 the 
> first flag as false and is therefore never processed in the new stream 
> observer. It leads to all requests in the server sliding window to be blocked.
>  
> {code:java}
> 2019-05-26 11:07:50,532 INFO util.SlidingWindow 
> (SlidingWindow.java:sendOrDelayRequest(243)) - 
> uid=4272f0d0-95e7-461a-9201-82ddfb218847 request seqNum=73 requestsFirst=70 
> firstSeqNum=-1 request=RaftClien
> tRequest:client-DBC1276EA2C1->s0@group-6920A8550E5D, cid=952, seq=73, RW, 3-72
> 2019-05-26 11:07:50,622 INFO util.SlidingWindow 
> (SlidingWindow.java:sendRepliesFromHead(439)) - 
> dc40cfe3-a06a-43db-893e-e86b0cd41a8b server send reply seq=72 
> request=RaftClientRequest:client-DBC1276EA2C1
> ->s1@group-6920A8550E5D, cid=938, seq=72*, RW, 
> Message:332d3731:RaftClientReply:client-DBC1276EA2C1->s1@group-6920A8550E5D, 
> cid=938, SUCCESS, logIndex=842, commits[s1:c914, s0:c914, s2:c717]
> 2019-05-26 11:07:50,628 DEBUG client.RaftClient 
> (RaftClientImpl.java:sendRequestAsync(364)) - client-DBC1276EA2C1: send* 
> RaftClientRequest:client-DBC1276EA2C1->s2@group-6920A8550E5D, cid=952, 
> seq=73, RW, 3-72
> 2019-05-26 11:07:50,633 INFO  util.SlidingWindow 
> (SlidingWindow.java:receivedRequest(398)) - 
> uid=87103303-ba73-45bf-b2ee-e6c8debf7a25 server received 
> request=RaftClientRequest:client-DBC1276EA2C1->s2@group-6920A8550E5D, 
> cid=952, seq=73, RW, Message:332d3732:null 13-OrderedRequestStreamObserver13: 
> got seq=73 in 13-OrderedRequestStreamObserver13: requests[], nextToProcess=-1
> {code}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to