[ https://issues.apache.org/jira/browse/IGNITE-12042?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16900927#comment-16900927 ]
Pavel Pereslegin edited comment on IGNITE-12042 at 8/6/19 12:02 PM: -------------------------------------------------------------------- [~slava.koptilin], > _Let's assume the size of an entry is greater than the page size and only one > page was written, for example, and after that OutOfMemoryException was thrown > by allocateDataPage()._ > _So, we have partially-written entry, and I am not sure it is a recoverable > case._ I don't see significant difference here, even with the proposed patch we can prepare really large data rows and will go in one of the following situations: 1. Check {{ensureFreeSpaceForInsert}} will catch a problem - throwing OOME from DatabaseSharedManager#ensureFreeSpaceForInsert. 2. Check will not catch a problem (if data row is big enough) - throwing OOME from {{PageMemoryNoStoreImpl#allocatePage}} (entry is partially written). 3. Check will not catch a problem (if data row is big enough) - no OOME in {{PageMemoryNoStoreImpl#allocatePage}}, but we got OOME when clear() is called. If the user configures custom failure handler case 1 and 2 are recoverable, but with 2 a memory leak is possible. If the user uses default failure handler all these cases are unrecoverable. was (Author: xtern): [~slava.koptilin], > _Let's assume the size of an entry is greater than the page size and only > one page was written, for example, and after that OutOfMemoryException was > thrown by allocateDataPage()._ > _So, we have partially-written entry, and I am not sure it is a recoverable > case._ I don't see the difference here, even with the proposed patch we can prepare really large data rows and will go in one of the following situations: 1. Check {{ensureFreeSpaceForInsert}} will catch a problem - throwing OOME from DatabaseSharedManager#ensureFreeSpaceForInsert. 2. Check will not catch a problem (if data row is big enough) - throwing OOME from {{PageMemoryNoStoreImpl#allocatePage}} (entry is partially written). 3. Check will not catch a problem (if data row is big enough) - no OOME in {{PageMemoryNoStoreImpl#allocatePage}}, but we got OOME when clear() is called. If the user configures custom failure handler case 1 and 2 are recoverable, but with 2 a memory leak is possible. If the user uses default failure handler all these cases are unrecoverable. > Atempt to remove entries from fully populated data region may result in > IgineOutOfMemoryException > ------------------------------------------------------------------------------------------------- > > Key: IGNITE-12042 > URL: https://issues.apache.org/jira/browse/IGNITE-12042 > Project: Ignite > Issue Type: Bug > Affects Versions: 2.7 > Reporter: Vyacheslav Koptilin > Assignee: Vyacheslav Koptilin > Priority: Major > Fix For: 2.8 > > Time Spent: 10m > Remaining Estimate: 0h > > Removing entries from non-persistent data region may require allocating a new > data page in order to move a tracked page from one bucket of the free-list to > another one. -- This message was sent by Atlassian JIRA (v7.6.14#76016)