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)