You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Alexey Kukushkin (Jira)" <ji...@apache.org> on 2022/05/12 07:22:00 UTC

[jira] [Updated] (IGNITE-16272) IgniteOutOfMemoryException is not a critical failure

     [ https://issues.apache.org/jira/browse/IGNITE-16272?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexey Kukushkin updated IGNITE-16272:
--------------------------------------
    Remaining Estimate: 168h
     Original Estimate: 168h

> IgniteOutOfMemoryException is not a critical failure
> ----------------------------------------------------
>
>                 Key: IGNITE-16272
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16272
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Alexey Kukushkin
>            Priority: Major
>              Labels: cggg
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> h3. The Problem
> Ignite raises the [IgniteOutOfMemoryException|https://github.com/apache/ignite/blob/2.11.1/modules/core/src/main/java/org/apache/ignite/internal/mem/IgniteOutOfMemoryException.java] if a data region size is exceeded when trying to add more data to a cache. Ignite considers the {{IgniteOutOfMemoryException}} as a critical failure. This causes shutting down the Ignite server with the default failure handler.
> However, reaching the data region capacity does not seem to be such a critical problem requiring the server shutdown or restart. For example, in our application we just want to report this problem back to the users and notify the DevOps without applying the critical failure handler. To achieve that, we had to define a custom {{FailureHandler}} that detects and ignores the {{IgniteOutOfMemoryException}} and all the exception caused by the {{{}IgniteOutOfMemoryException{}}}, allowing the final exception to reach the application. This solution is clumsy and unreliable since it uses the internal {{IgniteOutOfMemoryException}} definition and relies on a complex secondary exception structure trying to find the {{IgniteOutOfMemoryException}} among the suppressed exception and causes.
> Ignite out-of-the-box failure handlers have the {{ignoredFailure}} property that allows filtering out some kinds of failures. However, the {{IgniteOutOfMemoryException}} is not among the [FailureType|https://github.com/apache/ignite/blob/2.11.1/modules/core/src/main/java/org/apache/ignite/failure/FailureType.java] that can be ignored.
> h3. The Proposal
>  # Does anyone really want to treat the "data region capacity exceeded" problem as a critical failure and stop or restart the server?
>  ** Consider never treating this condition as a critical failure. This change is not backward compatible.
>  ** Or add another item to the {{FailureType}} enumeration to optionally allow the users not to have that treated as a critical failure. This is backward-compatible.
>  # Make the {{IgniteOutOfMemoryException}} a public API (now it is in the {{internal}} package)
>  # Consider renaming {{IgniteOutOfMemoryException}} (for example, to something like {{{}NotEnoughStorageException{}}}) since the current name is similar to a really critical and usually unrecoverable Java's {{OutOfMemoryError}} although the {{IgniteOutOfMemoryException}} is not that critical.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)