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

Pavel Pereslegin updated IGNITE-22849:
--------------------------------------
    Description: 
To safely perform catalog compaction, it is necessary to implement an API to 
listen for start/end events when flushing data to disk. Similar to what already 
exists for `aipersist`, but on {{MVPartitionStorage}}/{{PartitionDataStorage}} 
level.

For example:
{code:java}
MvPartitionStorageFlushListener {
    void onFlushBegin()
    void afterFlushEnd()
}
{code}

The {{onFlushBegin}} call must be guaranteed to occur before the data is 
written to disk and that the data set to be written will not change. That is, 
the semantics are similar to the current behavior of 
{{CheckpointListener#onCheckpointBegin}}, but must be implemented at the 
{{MvPartitionStorage}} level.

The {{afterFlushEnd}} call should be guaranteed to be made only after the 
checkpoint has completed successfully. That is, if the node is subsequently 
restarted, the logical recovery records made before the checkpoint will not be 
used to restore the node state (most likely, it is enough to subscribe to the 
future from the {{flush()}} method).

  was:
To safely perform catalog compaction, it is necessary to implement an API to 
listen for start/end events when flushing data to disk. Similar to what already 
exists for `aipersist`, but on {{MVPartitionStorage}}/{{PartitionDataStorage}} 
level.

For example:
{code:java}
MvPartitionStorageFlushListener {
    void onFlushBegin()
    void afterFlushEnd()
}
{code}

The {{onFlushBegin}} call must be guaranteed to occur before the data is 
written to disk and that the data set to be written will not change. That is, 
the semantics are similar to the current behavior of 
{{CheckpointListener#onCheckpointBegin}}, but must be implemented at the 
{{MvPartitionStorage}} level.

The {{onCheckpointEnd}} call should be guaranteed to be made only after the 
checkpoint has completed successfully. That is, if the node is subsequently 
restarted, the logical recovery records made before the checkpoint will not be 
used to restore the node state (most likely, it is enough to subscribe to the 
future from the {{flush()}} method).


> Provide listener API on PartitionDataStorage/MvPartitionStorage with semantic 
> onCheckpointBegin/afterCheckpointEnd.
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-22849
>                 URL: https://issues.apache.org/jira/browse/IGNITE-22849
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Pavel Pereslegin
>            Priority: Major
>              Labels: ignite-3
>
> To safely perform catalog compaction, it is necessary to implement an API to 
> listen for start/end events when flushing data to disk. Similar to what 
> already exists for `aipersist`, but on 
> {{MVPartitionStorage}}/{{PartitionDataStorage}} level.
> For example:
> {code:java}
> MvPartitionStorageFlushListener {
>     void onFlushBegin()
>     void afterFlushEnd()
> }
> {code}
> The {{onFlushBegin}} call must be guaranteed to occur before the data is 
> written to disk and that the data set to be written will not change. That is, 
> the semantics are similar to the current behavior of 
> {{CheckpointListener#onCheckpointBegin}}, but must be implemented at the 
> {{MvPartitionStorage}} level.
> The {{afterFlushEnd}} call should be guaranteed to be made only after the 
> checkpoint has completed successfully. That is, if the node is subsequently 
> restarted, the logical recovery records made before the checkpoint will not 
> be used to restore the node state (most likely, it is enough to subscribe to 
> the future from the {{flush()}} method).



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

Reply via email to