[ 
https://issues.apache.org/jira/browse/GEODE-10412?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17615324#comment-17615324
 ] 

ASF subversion and git services commented on GEODE-10412:
---------------------------------------------------------

Commit bc47b30c0bb57a9c9437234a8fc8530f1daf14bc in geode's branch 
refs/heads/master from Jakov Varenina
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=bc47b30c0b ]

GEODE-10412: Clear expired tombstones during region destroy (#7838)

* GEODE-10412: Clear expired tombstones during region destroy

The issue:
During region destroy operation, the expired tombstones aren't cleared
when non-expired ones are available. Later, these expired
tombstones prevent all other regions' tombstones from being cleared
from memory, causing many issues (memory and disk exhaustion).

The solution:
When a region is destroyed, it must clear all the related expired and
non-expired tombstones from memory.

* Add distributed test that reproduce the issue

* Update after review

> Destroy region command doesn't clear the region related expired tombstones
> --------------------------------------------------------------------------
>
>                 Key: GEODE-10412
>                 URL: https://issues.apache.org/jira/browse/GEODE-10412
>             Project: Geode
>          Issue Type: Bug
>          Components: expiration
>            Reporter: Jakov Varenina
>            Assignee: Jakov Varenina
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.15.1, 1.16.0
>
>
> Tombstones in geode are kept on two maps: expiredTombstones and tombstones 
> (non-expired ones). When a region is destroyed, it must clear all the related 
> expired and non-expired tombstones from memory. Due to the below code bug, 
> expired tombstones aren't cleared when non-expired tombstones are available 
> during the region destruction:
> {code:java}
> private boolean removeIf(Predicate<Tombstone> predicate) {      
>   return removeUnexpiredIf(predicate) || removeExpiredIf(predicate);    
> }
> {code}
> Because of the above, non-expired tombstones are never removed from memory, 
> preventing other tombstones from being cleared. Since other tombstones never 
> expire, the compaction is not done, and therefore the disk is filled, causing 
> the issues.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to