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

Roman Puchkovskiy updated IGNITE-18011:
---------------------------------------
    Description: 
When freezing an outgoing snapshot scope (see 
{{{}OutgoingSnapshot#freezeScope(){}}}), we need to get snapshot metadata 
corresponding to the contents of our storages (MV+TX) at that precise moment. 
The snapshot metadata includes last applied index (which we have), also term 
and lists of followers and learners which we need to obtain. In JRaft, we can 
take them from LogManager.

The problem is that JRaft does not provide a way to get the corresponding 
{{LogManager}} from this code. The 'right' way to fix this would be to change 
JRaft internals so that LogManager instance is made available to snapshot 
readers. But we should not touch JRaft core when we can avoid this (because, in 
the future, we might need to merge new version of JRaft into our codebase). So 
current implementation adds a way to obtain the current JRaft Node and then 
take LogManager instance from it.

A facility to get peers (followers/learners) is planned in the future, it could 
be used instead of a LogManager. But it's not clear how a term could be 
obtained without it.

  was:TBD


> Avoid hacky way to get LogManager for streaming RAFT snapshot reading
> ---------------------------------------------------------------------
>
>                 Key: IGNITE-18011
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18011
>             Project: Ignite
>          Issue Type: Improvement
>          Components: persistence
>            Reporter: Roman Puchkovskiy
>            Assignee: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-beta2
>
>
> When freezing an outgoing snapshot scope (see 
> {{{}OutgoingSnapshot#freezeScope(){}}}), we need to get snapshot metadata 
> corresponding to the contents of our storages (MV+TX) at that precise moment. 
> The snapshot metadata includes last applied index (which we have), also term 
> and lists of followers and learners which we need to obtain. In JRaft, we can 
> take them from LogManager.
> The problem is that JRaft does not provide a way to get the corresponding 
> {{LogManager}} from this code. The 'right' way to fix this would be to change 
> JRaft internals so that LogManager instance is made available to snapshot 
> readers. But we should not touch JRaft core when we can avoid this (because, 
> in the future, we might need to merge new version of JRaft into our 
> codebase). So current implementation adds a way to obtain the current JRaft 
> Node and then take LogManager instance from it.
> A facility to get peers (followers/learners) is planned in the future, it 
> could be used instead of a LogManager. But it's not clear how a term could be 
> obtained without it.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to