You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Darrel Schneider (Jira)" <ji...@apache.org> on 2021/04/13 22:58:00 UTC

[jira] [Updated] (GEODE-9149) partition region distributed expiration actions are not distributed if the region has evict destroy

     [ https://issues.apache.org/jira/browse/GEODE-9149?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Darrel Schneider updated GEODE-9149:
------------------------------------
    Labels: GeodeOperationAPI  (was: )

> partition region distributed expiration actions are not distributed if the region has evict destroy
> ---------------------------------------------------------------------------------------------------
>
>                 Key: GEODE-9149
>                 URL: https://issues.apache.org/jira/browse/GEODE-9149
>             Project: Geode
>          Issue Type: Bug
>          Components: eviction, expiration
>            Reporter: Darrel Schneider
>            Priority: Major
>              Labels: GeodeOperationAPI
>
> If a partitioned region is configured with evict destroy and with distributed expiration, then the expiration action is no longer distributed but is a local operation performed independently on the primary and each secondary. This can lead to partitioned regions that give inconsistent read results. For example a get op can be sent to primary or any secondary so it may exist on one but not another.
> Changing these distributed expiration actions to be local was a choice made about 11 years ago to deal with the fact that evict destroy does local destroys that can also cause the cache to be inconsistent. If the evict destroy was done on the primary then it caused the secondary entries to never expire (since normally all expiration on a pr is driven from the primary).
> But even though we needed to make sure expiration still happened, even if the entry was local destroyed on the primary, we could have done it and still had expiration be distributed. We could have sent a message to the primary telling it to do the expire action (invalidate or destroy) even if the entry does not exist on the primary. We should also consider having a fixed delay of the expiration on the secondary so that if primary expiration is working it will happen before the secondary expiration. If the primary expiration happens first then it will send a message to the secondary cancelling it and expiring the entry there.
> Another option is to redefine eviction so that it accommodates to expiration instead of expiration accommodating to eviction. Eviction doing a local destroy on a region that provides consistent storage (both partitioned and replicate regions) is not a good thing. It would be much better for eviction to do a distributed destroy on these regions. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)