[ 
https://issues.apache.org/jira/browse/IGNITE-15222?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mirza Aliev updated IGNITE-15222:
---------------------------------
    Summary: Add test for Metastorage's cursor commands next and hasNext 
correctly working after Raft leader was changing.  (was: Metastorage's cursor 
commands next and hasNext must work correctly after Raft leader was changing.)

> Add test for Metastorage's cursor commands next and hasNext correctly working 
> after Raft leader was changing.
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-15222
>                 URL: https://issues.apache.org/jira/browse/IGNITE-15222
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Mirza Aliev
>            Assignee: Mirza Aliev
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-alpha3
>
>
> Metastorage's cursor commands next and hasNext are implemented using 
> {{CursorNextCommand}} and {{CursorHasNextCommand}} Raft commands, which are 
> Raft's Read Commands. Read commands are handled on Raft leader and don't 
> replicate to followers. Within the context of cursors, it means that cursor 
> position, which is moved by the next command, is stored on leader only and 
> might be lost on leader change. It will lead to unexpected side effects on 
> the raft client because from the client's point of view, the leader migration 
> is seamless and should be invisible. In other words, calling next on leader A 
> will only move cursor position on this particular raft node, so that after 
> leader migration, the client's next {{next()}} command will be processed on a 
> new leader B and will move cursor position again to the same step. 
> A possible solution is to change {{CursorNextCommand}} and 
> {{CursorHasNextCommand}} to raft's write commands, so they will be replicated 
> on the followers and new followers will handle the commands correctly.
> UPD: 
>  {{CursorNextCommand}} and {{CursorHasNextCommand}} are already raft's write 
> commands, so this task contains only test 



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

Reply via email to