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

Pavel Pereslegin updated IGNITE-22637:
--------------------------------------
    Description: 
To select a compaction time, each node should provide its MinimalRequiredTime 
to compaction coordinator.

h4. Prerequisites:

In {{PartitionListener}} using partitionDataStorage.flush(false) store 
{{minActiveTxBeginTime}} into another transient field (for example 
{{snapshottedMinActiveTxBeginTime}}).

Need to investigate how to obtain this {{snapshottedMinActiveTxBeginTime}} from 
{{CatalogCompactionRunner}} in production code (may be introduce necessary 
methods). Example of this in test code can be found in 
{{ItCatalogCompactionTest.ensureTimestampStoredInAllReplicas}}

h4. Compute minimum required time

1. Get current value of low watermark.
2. Get min of "snapshotted" minActiveTxTime across all partitions (see 
{{PartitionListener.minActiveTxBeginTime}}.

 Take min of 1., 2

h4. 



  was:
To select a compaction time, each node should provide its MinimalRequiredTime 
to compaction coordinator. To compute that time:

1. Get current value of low watermark.
2. Get min of check pointed time across all partitions.
3. Get min of begin_time across all started transaction.
4. Take min of 1., 2., 3.

begin_time transaction time (3) is stored in transient state of the 
PartitionListener.
During checkpoint we write that time into the raft log.

When the compaction coordinator chooses min catalog version/catalog time, it 
sends a catalog compaction command with this information to each node. Each 
node should execute such command to perform compaction.





> Catalog compaction. Implement remote node part of compaction flow
> -----------------------------------------------------------------
>
>                 Key: IGNITE-22637
>                 URL: https://issues.apache.org/jira/browse/IGNITE-22637
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Maksim Zhuravkov
>            Priority: Major
>              Labels: ignite-3
>
> To select a compaction time, each node should provide its MinimalRequiredTime 
> to compaction coordinator.
> h4. Prerequisites:
> In {{PartitionListener}} using partitionDataStorage.flush(false) store 
> {{minActiveTxBeginTime}} into another transient field (for example 
> {{snapshottedMinActiveTxBeginTime}}).
> Need to investigate how to obtain this {{snapshottedMinActiveTxBeginTime}} 
> from {{CatalogCompactionRunner}} in production code (may be introduce 
> necessary methods). Example of this in test code can be found in 
> {{ItCatalogCompactionTest.ensureTimestampStoredInAllReplicas}}
> h4. Compute minimum required time
> 1. Get current value of low watermark.
> 2. Get min of "snapshotted" minActiveTxTime across all partitions (see 
> {{PartitionListener.minActiveTxBeginTime}}.
>  Take min of 1., 2
> h4. 



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

Reply via email to