[ 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 11:48 AM: -------------------------------------------------------------------- [~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 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 datarow is big enough) - throwing OOME from {PageMemoryNoStoreImpl#allocatePage} (entry is partially written). 3. Check will not catch a problem (if datarow is big enough) - no OOME in \{PageMemoryNoStoreImpl#allocatePage} but we got OOME when clear() is called. If a user configures custom failure handler case 1 and 2 are recoverable, but 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 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 datarow is big enough) - throwing OOME from {PageMemoryNoStoreImpl#allocatePage} (entry is partially written). 3. Check will not catch a problem (if datarow is big enough) - no OOME in {PageMemoryNoStoreImpl#allocatePage} but we got OOME when clear() is called. If a user configures custom failure handler case 1 and 2 are recoverable, but 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)