geode-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <>
Subject [jira] [Commented] (GEODE-1944) Index with method invocation in regionPath can throw exception when tombstones clean up during gii
Date Wed, 28 Sep 2016 22:30:20 GMT


ASF subversion and git services commented on GEODE-1944:

Commit b5b7203a10c4d81f4ff8e9603b4c912413c0b91e in incubator-geode's branch refs/heads/develop
from [~huynhja]
[;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:
>             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

View raw message