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

Roman Puchkovskiy updated IGNITE-18011:
---------------------------------------
    Summary: Avoid obtaining LogManager to stream RAFT snapshots  (was: Avoid 
obtaining LogManager for streaming RAFT snapshot reading)

> Avoid obtaining LogManager to stream RAFT snapshots
> ---------------------------------------------------
>
>                 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