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

Alexey Kukushkin updated IGNITE-16272:
--------------------------------------
    Labels: cggg  (was: )

> 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
>
> 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.1#820001)

Reply via email to