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/04 08:32:00 UTC

[jira] [Created] (IGNITE-16922) Getting an entry with expiry policy causes IgniteOutOfMemoryException

Alexey Kukushkin created IGNITE-16922:
-----------------------------------------

             Summary: Getting an entry with expiry policy causes IgniteOutOfMemoryException
                 Key: IGNITE-16922
                 URL: https://issues.apache.org/jira/browse/IGNITE-16922
             Project: Ignite
          Issue Type: Bug
    Affects Versions: 2.13
            Reporter: Alexey Kukushkin


{{IgniteCache#get(key)}} operation causes {{IgniteOutOfMemoryException}} if {{AccessedExpiryPolicy}} or {{TouchedExpiryPolicy}} is enabled for the {{key}} and Ignite has not enough storage for another entry of the same or bigger size.

This happens because:
# Ignite needs to update TTL
# TTL is part of the entry and Ignite overwrites full entry to update the TTL
# The problem is Ignite runs common code that checks if Ignite has enough storage to write the entry with updated TTL back. The check fails causing the {{IgniteCache#get(key)}} operation to throw {{IgniteOutOfMemoryException}}.
# This behavior is very confusing for Ignite users: why would a "read" operation throw Ignite OOM?

Can we update the TTL atomically and skip the storage size check?
Please enhance Ignite not to throw Ignite OOM on {{get}}. 



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