[
https://issues.apache.org/jira/browse/IGNITE-10959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17114194#comment-17114194
]
Zane Hu commented on IGNITE-10959:
----------------------------------
As I commented before, there are two confirmed cases of memory blowup in
Ignite, which are caused by too many cache update events in pending buffers
since an older update event than the buffered pending events has not arrived
yet.
# One is per-partition TreeMap
CacheContinuousQueryPartitionRecovery.pendingEvts in
CacheContinuousQueryHandler.rcvs. It has a upper-bound prevention of
MAX_BUFF_SIZE.
# Another is per-partition ConcurrentSkipListMap
CacheContinuousQueryEventBuffer.pending. It has no upper-bound prevention on
CacheContinuousQueryEventBuffer.pending.
Attached below is a pseudo code of the main logic flow of how they are
processed in Ignite. Hope it can help people to fix the problem. They all
started in
CacheContinuousQueryHandler.CacheContinuousQueryListener.onEntryUpdated() when
a cache entry is updated.
[^Memory_blowup_in_Ignite_CacheContinuousQueryHandler.txt]
> Memory leaks in continuous query handlers
> -----------------------------------------
>
> Key: IGNITE-10959
> URL: https://issues.apache.org/jira/browse/IGNITE-10959
> Project: Ignite
> Issue Type: Bug
> Affects Versions: 2.7
> Reporter: Denis Mekhanikov
> Assignee: Maxim Muzafarov
> Priority: Critical
> Attachments: CacheContinuousQueryMemoryUsageTest.java,
> CacheContinuousQueryMemoryUsageTest.result,
> CacheContinuousQueryMemoryUsageTest2.java,
> Memory_blowup_in_Ignite_CacheContinuousQueryHandler.txt,
> Memory_blowup_in_Ignite_CacheContinuousQueryHandler.txt,
> Memory_blowup_in_Ignite_CacheContinuousQueryHandler.txt,
> continuousquery_leak_profile.png
>
>
> Continuous query handlers don't clear internal data structures after cache
> events are processed.
> A test, that reproduces the problem, is attached.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)