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

Kirill Tkalenko updated IGNITE-26693:
-------------------------------------
    Description: 
We need to fix the 
*org.apache.ignite.internal.storage.pagememory.StoragePartitionMeta* 
consistency at the checkpoint. If we run the attached reproducer, for example 
3к times, the partition may not start after restart.

Add this test to 
*org.apache.ignite.internal.storage.pagememory.PersistentPageMemoryMvTableStorageTest*.
{code:java}
    @Test
    void test() throws Exception {
        MvPartitionStorage mvPartition = getOrCreateMvPartition(PARTITION_ID);

        addWriteCommitted(mvPartition);

        CheckpointProgress checkpointProgress = 
engine.checkpointManager().forceCheckpoint("test");

        CompletableFuture<Void> fut0 = checkpointProgress
                .futureFor(CheckpointState.PAGES_SNAPSHOT_TAKEN)
                .thenAccept(unused -> mvPartition.updateLease(new 
LeaseInfo(100, UUID.randomUUID(), "node")));

        assertThat(CompletableFuture.allOf(fut0, 
checkpointProgress.futureFor(FINISHED)), willCompleteSuccessfully());

        tearDown();
        setUp();

        // Failed with: IGN-CMN-65535 Unknown page IO type: 0
        getOrCreateMvPartition(PARTITION_ID);
    }
{code}


  was:
We need to fix the 
*org.apache.ignite.internal.storage.pagememory.StoragePartitionMeta* 
consistency at the checkpoint. If we run the attached reproducer, for example, 
the partition may not start after an emergency restart.

Add this test to 
*org.apache.ignite.internal.storage.pagememory.PersistentPageMemoryMvTableStorageTest*.
{code:java}
    @Test
    void test() throws Exception {
        MvPartitionStorage mvPartition = getOrCreateMvPartition(PARTITION_ID);

        addWriteCommitted(mvPartition);

        CheckpointProgress checkpointProgress = 
engine.checkpointManager().forceCheckpoint("test");

        CompletableFuture<Void> fut0 = checkpointProgress
                .futureFor(CheckpointState.PAGES_SNAPSHOT_TAKEN)
                .thenAccept(unused -> mvPartition.updateLease(new 
LeaseInfo(100, UUID.randomUUID(), "node")));

        assertThat(CompletableFuture.allOf(fut0, 
checkpointProgress.futureFor(FINISHED)), willCompleteSuccessfully());

        tearDown();
        setUp();

        // Failed with: IGN-CMN-65535 Unknown page IO type: 0
        getOrCreateMvPartition(PARTITION_ID);
    }
{code}



> Fix a rare race when updating StoragePartitionMeta and writing it to disk
> -------------------------------------------------------------------------
>
>                 Key: IGNITE-26693
>                 URL: https://issues.apache.org/jira/browse/IGNITE-26693
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Kirill Tkalenko
>            Assignee: Kirill Tkalenko
>            Priority: Critical
>              Labels: MakeTeamcityGreenAgain, ignite-3
>
> We need to fix the 
> *org.apache.ignite.internal.storage.pagememory.StoragePartitionMeta* 
> consistency at the checkpoint. If we run the attached reproducer, for example 
> 3к times, the partition may not start after restart.
> Add this test to 
> *org.apache.ignite.internal.storage.pagememory.PersistentPageMemoryMvTableStorageTest*.
> {code:java}
>     @Test
>     void test() throws Exception {
>         MvPartitionStorage mvPartition = getOrCreateMvPartition(PARTITION_ID);
>         addWriteCommitted(mvPartition);
>         CheckpointProgress checkpointProgress = 
> engine.checkpointManager().forceCheckpoint("test");
>         CompletableFuture<Void> fut0 = checkpointProgress
>                 .futureFor(CheckpointState.PAGES_SNAPSHOT_TAKEN)
>                 .thenAccept(unused -> mvPartition.updateLease(new 
> LeaseInfo(100, UUID.randomUUID(), "node")));
>         assertThat(CompletableFuture.allOf(fut0, 
> checkpointProgress.futureFor(FINISHED)), willCompleteSuccessfully());
>         tearDown();
>         setUp();
>         // Failed with: IGN-CMN-65535 Unknown page IO type: 0
>         getOrCreateMvPartition(PARTITION_ID);
>     }
> {code}



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

Reply via email to