[
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:51 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 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 a 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 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)