Darrel Schneider created GEODE-9149:
---------------------------------------
Summary: 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
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)