Aleksey Plekhanov created IGNITE-12530:
------------------------------------------

             Summary: Pages list caching can cause IgniteOOME when checkpoint 
is triggered by "too many dirty pages" reason
                 Key: IGNITE-12530
                 URL: https://issues.apache.org/jira/browse/IGNITE-12530
             Project: Ignite
          Issue Type: Bug
    Affects Versions: 2.8
            Reporter: Aleksey Plekhanov
            Assignee: Aleksey Plekhanov


When a checkpoint is triggered, we need some amount of page memory to store 
pages list on-heap cache.

If data region is too small, a checkpoint is triggered by "too many dirty 
pages" reason and pages list cache is rather big, we can get 
IgniteOutOfMemoryException.

Reproducer:
{code:java}
@Override protected IgniteConfiguration getConfiguration(String name) throws 
Exception {
    IgniteConfiguration cfg = super.getConfiguration(name);

    cfg.setDataStorageConfiguration(new DataStorageConfiguration()
        .setDefaultDataRegionConfiguration(new DataRegionConfiguration()
            .setPersistenceEnabled(true)
            .setMaxSize(50 * 1024 * 1024)
        ));

    return cfg;
}

@Test
public void testUpdatesNotFittingIntoMemoryRegion() throws Exception {
    IgniteEx ignite = startGrid(0);

    ignite.cluster().active(true);

    ignite.getOrCreateCache(DEFAULT_CACHE_NAME);

    try (IgniteDataStreamer<Object, Object> streamer = 
ignite.dataStreamer(DEFAULT_CACHE_NAME)) {
        for (int i = 0; i < 100_000; i++)
            streamer.addData(i, new byte[i % 2048]);
    }
}
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to