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