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)