[
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)