[
https://issues.apache.org/jira/browse/GEODE-1944?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jason Huynh reassigned GEODE-1944:
----------------------------------
Assignee: Jason Huynh
> 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
>
> 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)