[ 
https://issues.apache.org/jira/browse/IGNITE-12530?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17016158#comment-17016158
 ] 

Ivan Rakov commented on IGNITE-12530:
-------------------------------------

[~alex_pl] Thanks for your patch, I totally agree with the solution.
I'd propose to add a test where we check that after intensive multithreaded 
load and after checkpoint cache limit counter's value is equal to its maximum 
level (totalPages * threshold). Thus we'll check that for every increment 
there's a decrement.

> 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
>          Components: persistence
>    Affects Versions: 2.8
>            Reporter: Aleksey Plekhanov
>            Assignee: Aleksey Plekhanov
>            Priority: Major
>          Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> 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