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

Dan Smith resolved GEODE-1830.
------------------------------
    Resolution: Fixed

> Client CacheListener receives a TOMBSTONE when user calls region.get
> --------------------------------------------------------------------
>
>                 Key: GEODE-1830
>                 URL: https://issues.apache.org/jira/browse/GEODE-1830
>             Project: Geode
>          Issue Type: Bug
>          Components: client/server
>            Reporter: Dan Smith
>            Assignee: Dan Smith
>
> A user's CacheListener on the client can see a TOMBSTONE as the newValue in 
> this specific configuration:
>  * The region is created using  ClientRegionShortcut.PROXY (not CACHING_PROXY)
>  * The value on the server is a TOMBSTONE (the entry has been created and 
> then destroyed)
>  * The user does a key for the destroyed key.
> Looking at the code, the problem seems to be in LocalRegion.basicPutPart2. 
> The code checks to see if entry.isTomstone is true:
> {code}
>   protected long basicPutPart2(EntryEventImpl event, RegionEntry entry,
>       boolean isInitialized, long lastModified,
>       boolean clearConflict)
>   {
>     final boolean isNewKey = event.getOperation().isCreate();
>     final boolean invokeCallbacks = !entry.isTombstone(); // put() is 
> creating a tombstone
> {code}
> Unfortunately, if the client is using ClientRegionShortcut.PROXY, the code 
> calling this is ProxyRegionMap.basicPut, which passes a *static* markerEntry 
> object, which will always return false for isTombstone. So the listener is 
> invoked, despite the check for entry.isTombstone.



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

Reply via email to