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

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

Commit b5b7203a10c4d81f4ff8e9603b4c912413c0b91e in incubator-geode's branch 
refs/heads/develop from [~huynhja]
[ https://git-wip-us.apache.org/repos/asf?p=incubator-geode.git;h=b5b7203 ]

GEODE-1944: Reevaluation of index regionPath catches EntryDestroyedException

  * Force removal of region entry from index if entry destroyed exception is 
caught
  * Renamed and recategorized tests


> 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)

Reply via email to