You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Jason Huynh (JIRA)" <ji...@apache.org> on 2016/10/05 20:34:21 UTC

[jira] [Resolved] (GEODE-1944) Index with method invocation in regionPath can throw exception when tombstones clean up during gii

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

Jason Huynh resolved GEODE-1944.
--------------------------------
       Resolution: Fixed
    Fix Version/s: 1.0.0-incubating

> Index with method invocation in regionPath can throw exception when tombstones clean up during gii
> --------------------------------------------------------------------------------------------------
>
>                 Key: GEODE-1944
>                 URL: https://issues.apache.org/jira/browse/GEODE-1944
>             Project: Geode
>          Issue Type: Bug
>          Components: querying
>            Reporter: Jason Huynh
>            Assignee: Jason Huynh
>             Fix For: 1.0.0-incubating
>
>
> When a system is recovering from disk and indexes are created from cache.xml with certain region paths (say /region.entrySet()) and while recovering with gii, tombstones are cleaned up, it is possible that an exception is thrown from the index that prevents the system from recovering.  This occurs when gii forces old tombstones to be removed and invokes index maintenance.  Index maintenance, when trying to invoke the method on the region, will force the code down a path that requires a .get(key) on the region.  The value was never present in the region and this causes an EntryDestroyedException to be thrown.
> A work around is to drop the indexes and recreate them after recovery.
> The idea to try to prevent index maintenance if old value is not present does not work because overflowed regions can have old value not present in memory.
> The solution will be to put a try catch around the evaluate method in the IMQEvaluator of the Compact and Hash indexes.  Then force them to remove the region entry by crawling the entire index.  It will not be present in the index for this specific case, but to be on the safe side, if the entry does not exist in the region during maintenance, it probably should not exist in the index any longer...



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)